这是我的代码,其中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.
Run Code Online (Sandbox Code Playgroud)
错误:
arrayex.cbl:12:错误:级别77项"WS-FIRSTARR"不能有OCCURS子句
编译失败的原因是什么?
A 77不能有OCCURS.01不能有OCCURS.级别02-49可以有OCCURS.
忘记等级66(用于RENAMES子句),因为你不应该使用它,也不太可能看到它.
一个88级,一个条件名称,不能发生,但如果它所定义的字段是OCCURS的一部分或从属于OCCURS,那么88将需要下标,如同任何02-49级,也是OCCURS的一部分或从属于OCCURS.
01 a-simple-array-structure.
05 the-data occurs 5 times pic 9(5).
Run Code Online (Sandbox Code Playgroud)
或者你可以变得更复杂.
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).
Run Code Online (Sandbox Code Playgroud)
OCCURS也可用于定义多维表.
05 first-occurs occurs 5 times.
10 second-occurs occurs 5 times.
15 an-item pic xx.
Run Code Online (Sandbox Code Playgroud)
这还远远不是OCCURS的全部范围,所以开始简单,练习,让它工作,变得更复杂.
还有OCCURS DEPENDING ON,一个可变长度的表.一心一意.得到一个简单的OCCURS工作,不仅仅是定义,还有使用,下标的字段,下标的索引和下标的文字.
然后变得更复杂.