Cobol-table-processing
COBOL-テーブル処理
COBOLの配列はテーブルと呼ばれます。 配列は線形データ構造であり、同じタイプの個々のデータ項目のコレクションです。 テーブルのデータ項目は内部的にソートされます。
テーブル宣言
テーブルはデータ部で宣言されています。 Occurs 句は、テーブルを定義するために使用されます。 Occurs句は、データ名定義の繰り返しを示します。 02から49までのレベル番号でのみ使用できます。 Redefinesでは発生句を使用しないでください。 一次元と二次元の表の説明は次のとおりです-
一次元テーブル
1次元テーブルでは、 occurs 句は宣言で1回だけ使用されます。 WSTABLEは、テーブルを含むグループアイテムです。 WS-Bは、10回出現するテーブル要素に名前を付けます。
構文
以下は、一次元のテーブルを定義するための構文です-
例
上記のプログラムをコンパイルして実行すると、次の結果が生成されます-
二次元テーブル
両方のデータ要素が可変長である2次元テーブルが作成されます。 参考のため、構文を確認してから、テーブルの分析を試みてください。 最初の配列(WS-A)は1〜10回発生し、内部配列(WS-C)は1〜5回発生します。 WS-Aの各エントリには、WS-Cの対応する5つのエントリがあります。
構文
以下は、2次元テーブルを定義するための構文です-
例
上記のプログラムをコンパイルして実行すると、次の結果が生成されます-
添字
テーブルの個々の要素には、添え字を使用してアクセスできます。 添え字の値の範囲は、1からテーブルの出現回数までです。 添字には任意の正数を指定できます。 データ分割での宣言は必要ありません。 occurs句で自動的に作成されます。
例
上記のプログラムをコンパイルして実行すると、次の結果が生成されます-
索引
インデックスを使用してテーブル要素にアクセスすることもできます。 インデックスは、テーブルの先頭からの要素の変位です。 インデックスは、INDEXED BY句を使用してOccurs句で宣言されます。 インデックスの値は、SETステートメントとPERFORM Varyingオプションを使用して変更できます。
構文
以下は、テーブルでインデックスを定義するための構文です-
例
上記のプログラムをコンパイルして実行すると、次の結果が生成されます-
セットステートメント
Setステートメントは、インデックス値を変更するために使用されます。 Set動詞は、インデックス値を初期化、インクリメント、またはデクリメントするために使用されます。 [検索]および[すべて検索]で使用して、テーブル内の要素を見つけます。
構文
以下は、Setステートメントを使用するための構文です-
例
上記のCOBOLプログラムを実行する JCL 。
上記のプログラムをコンパイルして実行すると、次の結果が生成されます-
サーチ
検索は、テーブル内の要素を見つけるために使用される線形検索方法です。 ソート済みのテーブルとソートされていないテーブルの両方で実行できます。 Index句で宣言されたテーブルにのみ使用されます。 インデックスの初期値から始まります。 検索された要素が見つからない場合、インデックスは自動的に1ずつ増加し、テーブルの最後まで続きます。
例
上記のCOBOLプログラムを実行する JCL 。
上記のプログラムをコンパイルして実行すると、次の結果が生成されます-
すべて検索
すべて検索は、テーブル内の要素を見つけるために使用されるバイナリ検索方法です。 [すべて検索]オプションを使用するには、テーブルを並べ替える必要があります。 インデックスは初期化を必要としません。 バイナリ検索では、テーブルは2つの半分に分割され、検索された要素の半分が存在するかどうかを判断します。 このプロセスは、要素が見つかるか終了に達するまで繰り返されます。
例
上記のプログラムをコンパイルして実行すると、次の結果が生成されます-