モジュールのレッスン (2/2)
テーブルと OCCURS 句
COBOL には、同種データのリストを定義するための「配列」または「ベクトル」キーワードはありません。この目的のために、変数または構造体がメモリ内で繰り返される回数を指定する OCCURS 句を使用します。
OCCURS を使用したテーブルの定義
OCCURS 句は、グループ構造 (レベル 01) 内の従属変数 (たとえば、レベル 05 以上) の宣言に追加されます。
01 WS-SALES-DATA.
05 WS-MONTHLY-SALES PIC 9(4) OCCURS 12 TIMES.この例では、WS-MONTHLY-SALES は、それぞれ 4 桁の 12 個の数値要素で構成されるテーブルです。このレコードに割り当てられるメモリは、ちょうど 12 * 4 = 48 文字になります。
要素とインデックスへのアクセス
テーブル内の特定の要素にアクセスするには、フィールド名の直後に括弧内にインデックスを指定します。
[!重要] 0 から始まるインデックスを使用する最新の言語とは異なり、COBOL は 1 から始まるインデックスを使用します。最初の要素はインデックス
1にあり、2 番目の要素はインデックス2にあります。
MOVE 1500 TO WS-MONTHLY-SALES(1).
MOVE 2400 TO WS-MONTHLY-SALES(2).テーブルの走査 (反復)
テーブルの要素をループするには、PERFORM VARYING ステートメントを使用するか、PERFORM UNTIL ループでカウンターを手動で管理します。
PERFORM UNTIL WS-INDEX > 12
DISPLAY "Sales: " WS-MONTHLY-SALES(WS-INDEX)
ADD 1 TO WS-INDEX
END-PERFORM.自分で試してみてください
OCCURS 句を使用して、WS-WEATHER-DATA グループ構造で 5 つの 10 進数の温度 (3 つの整数と 1 つの小数) のテーブルを宣言します。
ヒントを表示
書き込み: 05 WS-TEMPERATURE PIC 9(3)V9 が 5 回発生します。
3 回の試行後に解決策が利用可能になります
MOVE ステートメントを使用して、WS-MONTHLY-SALES テーブルの最初の 3 つの要素をそれぞれ値 1200、1500、および 1800 で初期化します。 COBOL インデックスは 1 から始まることに注意してください。
ヒントを表示
MOVE 1200 TO WS-MONTHLY-Sales(1) を使用します。最初の要素に対して、インデックス (2) と (3) を使用して 2 番目と 3 番目の要素を繰り返します。
3 回の試行後に解決策が利用可能になります