Cobol:存在End Perform时语句未由End Perform结束

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

在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-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时遇到了很多问题。