错误:语法错误,意外的“ FILE”,预期为“文件结尾”

时间:2019-01-29 11:57:06

标签: cobol

我是Cobol的新手,我不太确定语法。 当我尝试编译代码时弹出此错误,但我不知道我的代码有什么问题。

   IDENTIFICATION DIVISION.
   PROGRAM-ID. atd.

   ENVIRONMENT DIVISION.
       INPUT-OUTPUT SECTION.
           FILE-CONTROL.
           SELECT m-attendance ASSIGN TO 'monthy-attendance.txt'
           ORGANIZATION IS LINE SEQUENTIAL. 
           FILE STATUS IS mFS.

           SELECT d-attendance ASSIGN TO 'attendance.txt'
           ORGANIZATION IS LINE SEQUENTIAL. 
           FILE STATUS IS dFS.

           SELECT employees ASSIGN TO 'employees.txt'
           ORGANIZATION IS LINE SEQUENTIAL. 
           FILE STATUS IS eFS.

           SELECT summary ASSIGN TO 'summary.txt'
           ORGANIZATION IS LINE SEQUENTIAL. 
           FILE STATUS IS sFS.

   DATA DIVISION.
       FILE SECTION.
           FD d-attendance.
  *         01 d-attendance-FILE.
  *            05 Date1 PIC X(10).
               05 ATD-RECORD.
                   10 PID PIC 9(4).
                   10 Sta PIC A(6).
                   10 Tim PIC X(16).

           FD m-attendance.
  *         01 m-attendance-FILE.
  *            05 Date1 PIC X(7).
               05 PID-ATD-RECORD.
                   10 PID PIC 9(4).
                   10 ABS PIC 9(3).
                   10 C15 PIC 9(3).
                   10 COT PIC 9(3).

           FD employees.
  *         01 employees-FILE.
               05 PID-RECORD.
                   10 PID PIC 9(4).
                   10 SUR PIC A(10).
                   10 NAM PIC A(20).
                   10 SEX PIC A.
                   10 BIR PIC X(10).
                   10 EMD PIC X(10).
                   10 DEP PIC A(3).
                   10 SAL PIC 9(6).

           FD summary.
  *         01 summary-FILE.
  *            05 DATE1 PIC X(18).
               05 PID-SUM-RECORD.
                   10 PID PIC 9(4).
                   10 SUR PIC A(10).
                   10 NAM PIC A(20).
                   10 DEP PIC A(3).
                   10 STA PIC A(6).

       WORKING-STORAGE SECTION.
           01 FS PIC 99.
           01 PCOUNT PIC 9(4).
           01 ACOUNT PIC 9(4).
           01 LCOUNT PIC 9(4).
           01 SCOUNT PIC 9(4).   
   PROCEDURE DIVISION.
           001-MAIN.
               OPEN INPUT d-attendance.
               perform 002-READ.
               CLOSE d-attendance.
               DISPLAY 'Hello, world'.
           STOP RUN.

           002-READ.
               READ d-attendance
               IF dfs = 00
                  GOTO  002-READ
               END-IF.
               IF dfs != 00
                  STOP RUN.
               END-IF.
           STOP RUN.

抱歉,时间很长,但是我以前只学过c,所以我也不敢肯定缩进是否正确,因此我将所有代码放在这里。 这是打开和读取文件的正确方法吗?

1 个答案:

答案 0 :(得分:4)

删除LINE SEQUENTIAL之后的分隔符。

删除第7列中的注释指示符(*)。

WORKING-STORAGE中,删除带有FS的行。添加以下行。

01 mFS PIC XX.
01 dFS PIC XX.
01 eFS PIC XX.
01 sFS PIC XX.

IF dfs = 00更改为IF dfs = "00"

IF dfs != 00更改为IF dfs not = "00"。 并且,在紧接STOP RUN之后,删除分隔符句段。

删除最后一个STOP RUN

这些更改应消除所有语法错误并删除不必要的代码。但是不会改变逻辑流程来完成您想要的操作。

想做,你似乎想要。删除此代码:

       IF dfs != 00
          STOP RUN.   *> recommended changes not shown
       END-IF.

这将使002-READ返回001-MAIN继续使用CLOSE语句进行处理。