这是我的代码,其中iIam使用OCCURS声明变量。
IDENTIFICATION DIVISION.
PROGRAM-ID. ARRAYEX.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT StudentFile ASSIGN TO "STUDENTS.DAT"
ORGANIZATION IS LINE SEQUENTIAL.
DATA DIVISION.
WORKING-STORAGE SECTION.
77 WS-FIRSTARR OCCURS 10 TIMES PIC 9(5).
PROCEDURE DIVISION.
DISPLAY "HELLO WORLD".
STOP RUN.
错误:
arrayex.cbl:12:错误:等级77项'WS-FIRSTARR'不能有OCCURS子句
编译失败的原因是什么?
答案 0 :(得分:5)
A 77不能有OCCURS。 01不能有OCCURS。级别02-49可以有OCCURS。
忘记等级66(用于RENAMES子句),因为你不应该使用它,也不太可能看到它。
88级,条件名称,不能发生,但如果定义的字段是OCCURS的一部分或从属于OCCURS,则88将需要下标,如任何02-49级别它也是OCCURS的一部分或从属于其。
01 a-simple-array-structure.
05 the-data occurs 5 times pic 9(5).
或者你可以变得更复杂。
01 b-structure.
95 the-key pic x(8).
05 some-data pic x(10).
05 some-more-data pic 9(7).
05 a-simple-array.
10 a-simple-array-item occurs 5 times
pic 9(5).
05 a-more-complex-array.
10 complex-entry occurs 10 times.
15 some-complex-data pic xx.
15 another-bit-of-complex-data
pic 9(5).
OCCURS也可用于定义多维表。
05 first-occurs occurs 5 times.
10 second-occurs occurs 5 times.
15 an-item pic xx.
这还远不是OCCURS的全部范围,所以开始简单,练习,让它工作,变得更复杂。
还有OCCURS DEPENDING ON,一个可变长度的表。一心一意。得到一个简单的OCCURS工作,不仅仅是定义,还有使用,下标的字段,下标的索引和下标的文字。
然后变得更复杂。
答案 1 :(得分:3)
COBOL有几个“神奇”级别的数字......
请参阅programmer's guide的第5-4和5-5页。