问题描述
您好,我编写了一个 COBOL 程序,我在其中使用了一个文件,但是在定义文件定义时出现错误,请告诉我该怎么做。
FILE-CONTROL.
SELECT CONTROL0-FILE
ASSIGN TO CONTR.
SELECT APCO-FILE
ASSIGN TO APCOOUT.
FD APCO-FILE.
I A "RECORDING MODE" OF "V" WAS ASSUMED FOR FILE "APCO-FILE". //ERR MSG
RECORDING MODE IS V
S "RECORDING" WAS INVALID. SCANNING WAS RESUMED AT THE NEXT AREA "A" //ERR MSG
ITEM,LEVEL-NUMBER,OR THE START OF THE //ERR MSG
RECORD CONTAINS 30 TO 300
BLOCK CONTAINS 6152 CHaraCTERS
LABEL RECORDS STANDARD.
01 APCOIN-REC-1 PIC X(30).
01 APCOIN-REC PIC X(300).
解决方法
问题在于APCO-FILE之后的.
,它结束了文件定义
FD APCO-FILE.
RECORDING MODE IS V
RECORD CONTAINS 30 TO 300
BLOCK CONTAINS 6152 CHARACTERS
LABEL RECORDS STANDARD.
改为
FD APCO-FILE
RECORDING MODE IS V
RECORD CONTAINS 30 TO 300
BLOCK CONTAINS 6152 CHARACTERS
LABEL RECORDS STANDARD.
,
我想你已经得到了解决方案。我想发表一些评论,可以帮助您在未来自己发现错误。
编译器读取它认为是语句的内容,然后验证语法,如果发现错误,则写入错误消息。然后继续下一个语句。
因此,首先,FD APCO-FILE.
之后出现错误消息这一事实表明编译器认为此时该语句是完整的。其次,在 RECORDING MODE IS V
之后还有另一个错误消息的事实告诉你编译器认为这是另一个语句,它不理解它,因此 "RECORDING" was invalid ..
。
因此编译器认为以 RECORDING
开头的部分是一个新语句,而您的意思是它是 FD
语句的延续。想想什么会导致编译器和你产生分歧,你可能很快就会看到“。”在 APCO-FILE
之后不应该在那里。