2014-12-11 4 views
1

계속 오류가 발생합니다.고유하게 정의 된 이름이 아닙니까?

"LOWMID-COMMISSION-CTR"은 고유하게 정의 된 이름이 아닙니다. 컨텍스트에서 정의 을 확인할 수 없습니다.

내 모든 카운터에서 비슷합니다. 내가 어디에서 잘못 가고 있는지 잘 모르겠다. 그것이 작업 저장 영역에 분명하게있을 때 어떻게 고유하게 정의 된 이름이 아닌가? 고유하게 정의 된 이름이되도록 다른 곳에 두어도됩니까? 아래에서는 필자가 내 카운터를 정의한 위치와 카운터를 사용하는 위치를 보여주었습니다.

IDENTIFICATION DIVISION. 
    PROGRAM-ID. LAB3. 
    AUTHOR. 

    ****************************************************************** 
    ENVIRONMENT DIVISION. 
    * defines the external files - an input file and output file 
    INPUT-OUTPUT SECTION. 
    FILE-CONTROL. 


     SELECT SALES-FILE ASSIGN TO DATAIN 
      FILE STATUS IS EF-STATUS. 

     SELECT REPORT-FILE ASSIGN TO DATAOUT 
      FILE STATUS IS PF-STATUS. 
    DATA DIVISION. 
    * has two sections - the file section that describes the files 
    * and the working storage section - where output lines and 
    * processing variables are defined 

    FILE SECTION. 

    FD SALES-FILE. 
    01 SALES-RECORD. 
     05 EMPLOYEE-NAME-IN PIC X(24). 
     05 SALES-IN   PIC 99999. 
     05 FILLER    PIC X(51). 
    FD REPORT-FILE. 
    01 REPORT-RECORD    PIC X(80). 

    WORKING-STORAGE SECTION. 

    01 FLAGS-AND-ACCUMLATORS. 
     05 LOW-COMMISSION-CTR PIC 99999 VALUE ZERO. 
     05 LOWMID-COMMISSION-CTR PIC 99999 VALUE ZERO. 
     05 HIGHMID-COMMISSION-CTR PIC 99999 VALUE ZERO. 
     05 HIGH-COMMISSION-CTR PIC 99999 VALUE ZERO. 
     05 TOTAL-SALES PIC $$$,$$9.99 VALUE ZERO. 
     05 TOTAL-COMMISSION PIC $$$,$$9.99 VALUE ZERO. 
     05 END-OF-FILE   PIC XXX VALUE "NO". 
     05 EF-STATUS    PIC 99 VALUE 0. 
     05 PF-STATUS    PIC 99 VALUE 0. 
     05 COMMISSION    PIC 99999V99. 

    01 REPORT-BLANK-LINE. 
     05       PIC X(80). 

    01 HEADING-LINE-1. 
     05       PIC X(30) VALUE SPACES. 
     05       PIC X(19) VALUE 
      "COMPANY OF AARON". 



    01 HEADING-LINE-2. 
     05       PIC X(30) VALUE SPACES. 
     05       PIC X(19) VALUE 
       "KEARNEY, MISSOURI". 
    01 HEADING-LINE-3. 
     05      PIC X(03) VALUE SPACES. 
     05      PIC X(48) VALUE 
       "Number of employees with up to 10,000 in sales: ". 
     05 LOW-COMMISSION-CTR PIC 99999. 
    01 HEADING-LINE-4. 
     05      PIC X(03) VALUE SPACES. 
     05      PIC X(52) VALUE 
       "Number of employees from 10,001 to 20,000 in sales: ". 
     05 LOWMID-COMMISSION-CTR PIC 99999. 
    01 HEADING-LINE-5. 
     05      PIC X(03) VALUE SPACES. 
     05      PIC X(52) VALUE 
      "Number of employees from 20,001 to 30,000 in sales: ". 
     05 HIGHMID-COMMISSION-CTR PIC 99999. 
    01 HEADING-LINE-6. 
     05      PIC X(03) VALUE SPACES. 
     05      PIC X(42) VALUE 
      "Number of employees over 30,000 in sales: ". 
     05 HIGH-COMMISSION-CTR PIC 99999. 
    01 HEADING-LINE-7. 
     05      PIC X(03) VALUE SPACES. 
     05      PIC X(13) VALUE 
      "Total Sales: ". 
     05 TOTAL-SALES PIC $$$,$$9.99. 
    01 HEADING-LINE-8. 
     05      PIC X(03) VALUE SPACES. 
     05      PIC X(18) VALUE 
      "TOTAL COMMISSION: ". 
     05 TOTAL-COMMISSION PIC $$$,$$9.99. 

    01 COLUMN-HEADING-1. 
     05      PIC X(03) VALUE SPACES. 
     05      PIC X(24) VALUE "SALESPERSON". 
     05      PIC X(15) VALUE "SALES". 
     05      PIC X(10) VALUE "COMMISSION". 
    01 COLUMN-HEADING-2. 
     05      PIC X(14) VALUE "SUMMARY REPORT". 


    01 DETAIL-LINE. 
     05      PIC X(03) VALUE SPACES. 
     05 EMPLOYEE-NAME-OUT PIC X(24). 
     05 SALES-OUT   PIC $$$,$$9. 
     05      PIC X(05) VALUE SPACES. 
     05 COMMISSION-OUT  PIC $$$,$$9.99. 


    PROCEDURE DIVISION. 

    1000-MAIN-CONTROL. 
     PERFORM 2000-INITIALIZE. 
     PERFORM UNTIL END-OF-FILE = "YES" 
     READ SALES-FILE 
      AT END 
      MOVE "YES" TO END-OF-FILE 
      NOT AT END 
      PERFORM 3000-PROCESS 
     END-PERFORM 
     PERFORM 4000-PROCESS. 
     STOP RUN. 

    2000-INITIALIZE. 
      OPEN INPUT SALES-FILE 
       OUTPUT REPORT-FILE. 

     WRITE REPORT-RECORD   FROM HEADING-LINE-1. 
     WRITE REPORT-RECORD   FROM HEADING-LINE-2. 
     WRITE REPORT-RECORD   FROM REPORT-BLANK-LINE. 
     WRITE REPORT-RECORD   FROM COLUMN-HEADING-1. 
     WRITE REPORT-RECORD   FROM REPORT-BLANK-LINE. 

    3000-PROCESS. 

     IF SALES-IN < 10001 
     MULTIPLY SALES-IN BY .04 GIVING COMMISSION 
      ADD 1 TO LOW-COMMISSION-CTR 
      ADD COMMISSION TO TOTAL-COMMISSION 
     END-IF. 


     IF SALES-IN > 10000 AND < 20001 
     MULTIPLY SALES-IN BY .055 GIVING COMMISSION 
      ADD 1 TO LOWMID-COMMISSION-CTR 
      ADD COMMISSION TO TOTAL-COMMISSION 
     END-IF. 

     IF SALES-IN > 20000 AND < 30000 
     MULTIPLY SALES-IN BY .065 GIVING COMMISSION 
      ADD 1 TO HIGHMID-COMMISSION-CTR 
      ADD COMMISSION TO TOTAL-COMMISSION 
      END-IF. 

     IF SALES-IN > 30000 
     MULTIPLY SALES-IN BY .075 GIVING COMMISSION 
      ADD 1 TO HIGH-COMMISSION-CTR 
      ADD COMMISSION TO TOTAL-COMMISSION 
      END-IF. 

     MOVE EMPLOYEE-NAME-IN  TO EMPLOYEE-NAME-OUT. 
     MOVE SALES-IN    TO SALES-OUT. 
     MOVE COMMISSION    TO COMMISSION-OUT. 

     WRITE REPORT-RECORD   FROM DETAIL-LINE. 

    4000-PROCESS. 
     WRITE REPORT-RECORD   FROM REPORT-BLANK-LINE. 
     WRITE REPORT-RECORD   FROM COLUMN-HEADING-2. 
     WRITE REPORT-RECORD   FROM HEADING-LINE-3. 
     WRITE REPORT-RECORD   FROM HEADING-LINE-4. 
     WRITE REPORT-RECORD   FROM HEADING-LINE-5. 
     WRITE REPORT-RECORD   FROM HEADING-LINE-6. 
     WRITE REPORT-RECORD   FROM HEADING-LINE-7. 
     WRITE REPORT-RECORD   FROM HEADING-LINE-8. 
    4000-TERMINATE. 
     CLOSE SALES-FILE, REPORT-FILE. 
+2

다른 플래그-AND-ACCUMLATORS 필드에 적용됩니다. 여기에 코드의 일부만 게시 했으므로 도움을 줄 수 없습니다. 이것은 귀하가 더 게시 할 수있는 요청이 아닙니다! –

+0

하지만 그 의미는 무엇입니까? – Bob

+0

Open COBOL이 아닌 IBM의 Enterprise COBOL을 사용하고 있으므로 태그를 변경했습니다. –

답변

2

Thje 변수 LOWMID 시운전-CTR 두 번 정의된다.

에 한 번
  • FLAGS-AND-ACCUMLATORS
% 제-LINE-4
 
    01 HEADING-LINE-4. 
     05      PIC X(03) VALUE SPACES. 
     05      PIC X(52) VALUE 
       "Number of employees from 10,001 to 20,000 in sales: ". 
     05 LOWMID-COMMISSION-CTR PIC 99999. 
그래서

중 하나

    ,369에 한 번
     
        01 FLAGS-AND-ACCUMLATORS. 
         05 LOW-COMMISSION-CTR PIC 99999 VALUE ZERO. 
         05 LOWMID-COMMISSION-CTR PIC 99999 VALUE ZERO. 
    
    • 완전히 필드 자격을 다른
     
        01 HEADING-LINE-4. 
         05      PIC X(03) VALUE SPACES. 
         05      PIC X(52) VALUE 
           "Number of employees from 10,001 to 20,000 in sales: ". 
         05 HEADER-LOWMID-COMMISSION-CTR PIC 99999. 
    
    • 어떤 일에 LOWMID-위원회-CTR 중 하나의 이름을 바꿉니다. 같은
     
        Add 1 
         to LOWMID-COMMISSION-CTR 
         of FLAGS-AND-ACCUMLATORS 
    

    내가 컴파일러를 신뢰하고 어딘가 다른 정의를 찾을 것

+0

나는 내 전체 코드를 그곳에 두 었는데, 나는 그 이름으로 2 개의 변수를 가지고 있다고 생각하지 않기 때문에 어디서 잘못 될지 확신 할 수 없다. 두 개의 다른 프로그램에서 동일한 문제가 있습니다. – Bob

+0

@ user38254 LOWMID-COMMISSION-CTR은 플래그와 누적 기에서 한 번, 표제 -4에서 한 번 두 번 정의됩니다. –

+0

@ user38254 FLAGS-AND-ACCUMLATORS 아래에 다섯 개의 필드가 있습니다 HEADING-LINE-3에서 HEADING-LINE-7까지 반복됩니다. –