Cobol:存在最终执行情况时,声明未以最终执行结果结尾

问题描述

在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

请参见https://www.ibm.com/support/knowledgecenter/SS6SG3_4.2.0/com.ibm.entcobol.doc_4.2/PGandLR/ref/rlpsperf.htm

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...