Cobol 错误:语法错误,意外的“文件”,应为“文件结尾”

Cobol 错误:语法错误,意外的“文件”,应为“文件结尾”,cobol,Cobol,我是Cobol新手,对语法不是很确定。 当我试图编译代码时,这个错误会突然出现,但我不知道我的代码出了什么问题 IDENTIFICATION DIVISION. PROGRAM-ID. atd. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT m-attendance ASSIGN TO 'monthy-attendance.txt'

我是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,我也不确定缩进是否正确,所以我把所有代码都放在这里。
这是打开和读取文件的正确方法吗?

在行顺序之后删除分隔符

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

在工作存储中,用FS拆下线路。添加以下行

01 mFS PIC XX.
01 dFS PIC XX.
01 eFS PIC XX.
01 sFS PIC XX.
将“如果dfs=00”更改为“如果dfs=00”

如果dfs!=如果dfs不=00,则返回00。 并且,在紧接着的停止运行之后,移除分离器周期

移除最后一次停止运行

这些更改应该消除所有语法错误并删除不必要的代码。但不会改变逻辑流程来做您似乎想要做的事情

去做你似乎想要的事。删除此代码:

       IF dfs != 00
          STOP RUN.   *> recommended changes not shown
       END-IF.
这将允许002-READ返回001-MAIN以继续处理CLOSE语句