【COBOL学習|初心者向け】COBOLの「SET文」を使いこなそう!指標名と整数項目の連携術

1. 導入:なぜSET文を使うのか?

COBOLのプログラムで、配列(テーブル)の特定の要素をピンポイントで処理したい場面はよくあります。通常、添字には数値項目を使いますが、大規模なシステムや複雑なロジックでは「指標名(INDEX)」を使う方が効率的です。しかし、計算結果などの整数項目をどうやって指標名に渡せばよいのか、悩んだことはありませんか?ここで登場するのが「SET文」です。これをマスターすれば、データ制御の幅がぐっと広がります。

2. 基礎知識:指標名と整数項目の違い

COBOLにおける「指標名(INDEX)」は、単なる数値ではなく、メモリ上の「物理的なオフセット(位置情報)」を保持しています。一方、私たちが普段使う「整数項目(PIC 9など)」は、単なる数値を格納する場所です。
SET文を使うと、システム側が自動的に「論理的な添字番号」を「物理的なオフセット」に変換してくれます。この「橋渡し」こそが、SET文が重要とされる理由です。

3. 実装・解決策:SET文によるデータ制御

指標名へ値を代入する際、単純なMOVE文は使えません。必ず「SET 指標名 TO 整数項目」という構文を用います。これにより、コンパイラが裏側で複雑な位置計算を安全に処理してくれます。

4. サンプルプログラム

以下のコードは、入力された数値に基づいてテーブルの特定要素へアクセスする例です。

IDENTIFICATION DIVISION.
PROGRAM-ID. SET-EXAMPLE.
DATA DIVISION.
WORKING-STORAGE SECTION.

  • 参照するテーブルの定義

01 TABLE-AREA.
05 ITEM-LIST PIC X(10) OCCURS 5 TIMES INDEXED BY WS-IDX.

  • 制御用の変数

01 WS-SUB-NUM PIC 9(01) VALUE 3.

PROCEDURE DIVISION.

  • 1. 初期化など(ダミーデータ)

MOVE “DATA-A” TO ITEM-LIST(1)
MOVE “DATA-B” TO ITEM-LIST(2)
MOVE “DATA-C” TO ITEM-LIST(3)

  • 2. 整数項目(WS-SUB-NUM)を指標名(WS-IDX)にセットする
  • ここで計算済みの数値が物理的な位置情報に変換されます

SET WS-IDX TO WS-SUB-NUM.

  • 3. 指標名を使ってデータを出力

DISPLAY “指定された位置の値は: ” ITEM-LIST(WS-IDX).

STOP RUN.

5. 応用・注意点:現場で役立つポイント

注意点として、指標名は必ずOCCURS句の中で定義されたものを使用してください。また、指標名に対して直接「ADD 1 TO WS-IDX」のように計算することも可能ですが、プログラムの可読性を保つためにも、計算処理は整数項目で行い、最後にSET文で指標名に反映させるのが、バグを減らすベテランの流儀です。

また、SET文は「範囲外へのアクセス」を直接防ぐわけではありません。必ず指標がテーブルのサイズを超えていないか、事前にIF文などでチェックする癖をつけましょう。堅実なコードこそが、保守性の高いシステムの鍵となります。

コメント

タイトルとURLをコピーしました