我是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,所以我也不敢肯定缩进是否正确,因此我将所有代码放在这里。 这是打开和读取文件的正确方法吗?
答案 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
语句进行处理。