Ошибка: синтаксическая ошибка, неожиданный «ФАЙЛ», ожидание «конца файла» - PullRequest
0 голосов
/ 29 января 2019

Я новичок в 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 голосов
/ 29 января 2019

Удалить разделительные периоды после 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.

...