Cobol:存在 End Perform 时语句未由 End Perform 结束
Cobol: Statement not Ended by End Perform When End Perform is Present
在 Cobol 上学习 class,但在获取程序到 运行 时遇到问题。我正在通过命令提示符使用 opencobol 到 运行。程序是:
IDENTIFICATION DIVISION.
PROGRAM-ID. SAMPLE.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT EMPLOYEE-DATA
ASSIGN TO "C:\COBOL\EMPLOYEE-INFO.DAT"
ORGANIZATION IS LINE SEQUENTIAL.
SELECT PAYROLL-LISTING
ASSIGN TO "C:\COBOL\PAYROLL-OUT.DAT"
ORGANIZATION IS LINE SEQUENTIAL.
DATA DIVISION.
FILE SECTION.
FD EMPLOYEE-DATA.
01 EMPLOYEE-RECORD.
05 EMPLOYEE-NAME-IN PICTURE X(20).
05 HOURS-WORKED-IN PICTURE 9(2).
05 HOURLY-RATE-IN PICTURE 9V99.
FD PAYROLL-LISTING.
01 PRINT-REC.
05 PICTURE X(20).
05 NAME-OUT PICTURE X(20).
05 PICTURE X(10).
05 HOURS-OUT PICTURE 9(2).
05 PICTURE X(8).
05 RATE-OUT PICTURE 9.99.
05 PICTURE X(6).
05 WEEKLY-WAGES-OUT PICTURE 999.99.
WORKING-STORAGE SECTION.
01 ARE-THERE-MORE-RECORDS PICTURE XXX VALUE 'YES'.
PROCEDURE DIVISION.
100-MAIN-MODULE.
OPEN INPUT EMPLOYEE-DATA
OUTPUT PAYROLL-LISTING
PERFORM UNTIL ARE-THERE-MORE-RECORDS = 'NO '
READ EMPLOYEE-DATA
AT END
MOVE 'NO ' TO ARE-THERE-MORE-RECORDS
NOT AT END
PERFORM 200-WAGE-ROUTINE
END READ
END PERFORM
CLOSE EMPLOYEE-DATA
PAYROLL-LISTING
STOP RUN.
200-WAGE-ROUTINE.
MOVE SPACES TO PRINT-REC
MOVE EMPLOYEE-NAME-IN TO NAME-OUT
MOVE HOURS-WORKED-IN TO HOURS-OUT
MOVE HOURLY-RATE-IN TO RATE-OUT
MULTIPLY HOURS-WORKED-IN BY HOURLY-RATE-IN
GIVING WEEKLY-WAGES-OUT
WRITE PRINT-REC.
STOP RUN.
当 运行 运行程序时,出现以下错误:
Sample.cob: In paragraph '100-MAIN-MODULE':
Sample.cob:35: Error: PERFORM statement not terminated by END-PERFORM
Sample.cob:41: Error: syntax error, unexpected END
我看到另一个 post 与此类似,但他们在段落中有关闭声明,但我没有在这里。这个程序也是从教科书上得到的,所以不知道为什么它对我不起作用。
尝试使用 END-PERFORM
和其中的 - 而不是 END PERFORM
也是End-Read
不是end read
在 Cobol 上学习 class,但在获取程序到 运行 时遇到问题。我正在通过命令提示符使用 opencobol 到 运行。程序是:
IDENTIFICATION DIVISION.
PROGRAM-ID. SAMPLE.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT EMPLOYEE-DATA
ASSIGN TO "C:\COBOL\EMPLOYEE-INFO.DAT"
ORGANIZATION IS LINE SEQUENTIAL.
SELECT PAYROLL-LISTING
ASSIGN TO "C:\COBOL\PAYROLL-OUT.DAT"
ORGANIZATION IS LINE SEQUENTIAL.
DATA DIVISION.
FILE SECTION.
FD EMPLOYEE-DATA.
01 EMPLOYEE-RECORD.
05 EMPLOYEE-NAME-IN PICTURE X(20).
05 HOURS-WORKED-IN PICTURE 9(2).
05 HOURLY-RATE-IN PICTURE 9V99.
FD PAYROLL-LISTING.
01 PRINT-REC.
05 PICTURE X(20).
05 NAME-OUT PICTURE X(20).
05 PICTURE X(10).
05 HOURS-OUT PICTURE 9(2).
05 PICTURE X(8).
05 RATE-OUT PICTURE 9.99.
05 PICTURE X(6).
05 WEEKLY-WAGES-OUT PICTURE 999.99.
WORKING-STORAGE SECTION.
01 ARE-THERE-MORE-RECORDS PICTURE XXX VALUE 'YES'.
PROCEDURE DIVISION.
100-MAIN-MODULE.
OPEN INPUT EMPLOYEE-DATA
OUTPUT PAYROLL-LISTING
PERFORM UNTIL ARE-THERE-MORE-RECORDS = 'NO '
READ EMPLOYEE-DATA
AT END
MOVE 'NO ' TO ARE-THERE-MORE-RECORDS
NOT AT END
PERFORM 200-WAGE-ROUTINE
END READ
END PERFORM
CLOSE EMPLOYEE-DATA
PAYROLL-LISTING
STOP RUN.
200-WAGE-ROUTINE.
MOVE SPACES TO PRINT-REC
MOVE EMPLOYEE-NAME-IN TO NAME-OUT
MOVE HOURS-WORKED-IN TO HOURS-OUT
MOVE HOURLY-RATE-IN TO RATE-OUT
MULTIPLY HOURS-WORKED-IN BY HOURLY-RATE-IN
GIVING WEEKLY-WAGES-OUT
WRITE PRINT-REC.
STOP RUN.
当 运行 运行程序时,出现以下错误:
Sample.cob: In paragraph '100-MAIN-MODULE':
Sample.cob:35: Error: PERFORM statement not terminated by END-PERFORM
Sample.cob:41: Error: syntax error, unexpected END
我看到另一个 post 与此类似,但他们在段落中有关闭声明,但我没有在这里。这个程序也是从教科书上得到的,所以不知道为什么它对我不起作用。
尝试使用 END-PERFORM
和其中的 - 而不是 END PERFORM
也是End-Read
不是end read