Error: syntax error, unexpected “FILE”, expecting “end of file”

Error: syntax error, unexpected “FILE”, expecting “end of file”

我是 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.

sorry 很长,不过我之前只学过c,也不太确定缩进对不对,所以我把我所有的代码都放在这里了。 这是打开和读取文件的正确方法吗?

删除 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 到 return 到 001-MAIN 继续处理 CLOSE 语句。