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
语句。
我是 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
语句。