Cobol:存在End Perform时语句未由End Perform结束
在Cobol上上课,在运行程序时遇到问题。我正在使用opencobol运行命令提示符。该计划是:Cobol:存在End Perform时语句未由End Perform结束,cobol,Cobol,在Cobol上上课,在运行程序时遇到问题。我正在使用opencobol运行命令提示符。该计划是: IDENTIFICATION DIVISION. PROGRAM-ID. SAMPLE. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT EMPLOYEE-DATA ASSIGN TO "C:\COBOL\E
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-PERFORM
,其中包含-,而不是END-PERFORM
它也是结束读取
而不是结束读取
请参见关键字为
END-READ
和END-PERFORM
,用连字符表示每个单词,而不是用空格分隔单词。(但是STOP-RUN
是两个词,在旧版本中GO-BACK
也是如此。)您确实有CLOSE
语句,但它们与问题完全无关。。。。更新到更新版本的GnuCOBOL也可能是一个好主意。关键字是END-READ
和END-PERFORM
,使用连字符使每个单词成为单个单词,而不是用空格分隔单词。(但是STOP-RUN
是两个词,在旧版本中GO-BACK
也是如此。)您确实有CLOSE
语句,但它们与问题完全无关。。。。更新到更新版本的GnuCOBOL也可能是一个好主意。谢谢你让它运行起来。谢谢你的链接,我发现Cobol有很多问题。谢谢你让它运行起来。谢谢你的链接,我在寻找Cobol时遇到了很多问题。