问题描述
在Cobol上课,并且在运行程序时遇到问题。我正在使用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
我看到了另一个与此类似的帖子,但是他们在其段落中有明确的陈述,但我不在这里。该程序也是从教科书中获得的,所以不确定为什么它对我不起作用。
解决方法
尝试在其中使用-而不是END-PERFORM
END PERFORM
也是End-Read
而不是end read