1

これは、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 句を含めることはできません

コンパイルが失敗する理由はありますか?

4

2 に答える 2

5

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 を定義だけでなく使用も機能させます。

次に、より複雑になります。

于 2013-11-17T22:02:49.380 に答える