Rational Developer for System z
COBOL for Windows バージョン 7.5 言語解説書


添え字付け

添え字付け とは、 添え字を利用してテーブル参照を行う手法のことです。 添え字 は、正の整数で、その値はテーブル・エレメントのオカレンス番号です。

フォーマット
構文図を読む構文図をスキップする                   .------------------------.  
                   V                        |  
>>-+-条件名-1---+----+--------------------+-+------------------->
   '-データ名-1-'    '-+-IN-+--データ名-2-'    
                       '-OF-'                  
 
>--+----------------------+------------------------------------->
   '-+-IN-+--ファイル名-1-'  
     '-OF-'                  
 
      .-------------------------------------.     
      V                                     |     
>--(----+-整数-1--------------------------+-+--)---------------><
        +-ALL-----------------------------+       
        +-データ名-3--+-----------------+-+       
        |             '-+- + -+--整数-2-' |       
        |               '- - -'           |       
        '-指標名-1--+-----------------+---'       
                    '-+- + -+--整数-3-'           
                      '- - -'                     
 
条件名-1
条件名-1 の条件変数には OCCURS 文節が含まれているか、または OCCURS 文節が含まれているデータ記述項目に従属していなければなりません。
データ名-1
OCCURS 文節が含まれているか、または OCCURS 文節が含まれているデータ記述項目に従属していなければなりません。
データ名-2ファイル名-1
データ名-1 が含まれているデータ項目またはレコードでなければなりません。
整数-1
符号を付けることができます。符号を付ける場合、その符号は正でなければなりません。
データ名-3
整数を表す基本数字項目でなければなりません。

データ名-3 は修飾することができます。データ名-3 をウィンドウ化日付フィールドにすることはできません。

指標名-1
参照されるテーブルの階層内にあって、 その名前を指定している INDEXED BY 句が含まれているデータ記述項目に対応します。
整数-2整数-3
符号を付けることはできません。

添え字は括弧に囲んで、テーブル・エレメントの名前の修飾のすぐ後に続けて記述します。このような参照における添え字の個数は、 参照されるエレメントを含むテーブルの次元数と同じでなければなりません。 つまり、該当のデータ名自体も含めて、 そのデータ名を含む階層の各 OCCURS 文節ごとに対応する添え字がなければなりません。

複数の添え字が必要な場合には、データ編成の次元が低い順から指定します。多次元テーブルが一連のネストされたテーブルとしてみなされ、 ネストの中で最も包括的または最外部のテーブルがメジャー・テーブルで、 最も内側または最も包括的でないテーブルがマイナー・テーブルとみなされる場合は、 添え字は左から右へ、メジャー、中間、マイナーの順に指定されます。

例えば、TABLE-THREE が次のように定義されているとします。

01  TABLE-THREE.
    05  ELEMENT-ONE OCCURS 3 TIMES.
        10  ELEMENT-TWO OCCURS 3 TIMES.
            15  ELEMENT-THREE OCCURS 2 TIMES    PIC X(8).

TABLE-THREE の有効な添え字付き参照は次のようになります。

ELEMENT-THREE (2 2 1)

添え字付き参照も参照変更することができます。 参照変更の例の 3 番目の例を参照してください。ある項目に対する参照は、その項目がテーブル・エレメントまたはテーブル・エレメントに関連付けられた項目あるいは条件名である場合以外は、 添え字を付けることはできません。

各テーブル・エレメント参照は、次のような参照がある場合を除いて、 添え字を付ける必要があります。

添え字で表すことが可能な最小のオカレンス番号は 1 です。個々の場合に許される最大のオ カレンス番号は、OCCURS 文節で指定されている項目の最大出現数です。

データ名を使用した添え字付け

データ名を使用して添え字を表す場合、そのデータ名は別のテーブルの中の項目を参照するために使用できます。 これらのテーブルは、同じサイズのエレメント数である必要はありません。 同じデータ名は、1 つの項目を持つ 1 つだけの添え字として、 および別の項目を持つ 2 つ以上の添え字の 1 つとして指定することができます。データ名の添え字は修飾できます。しかし、添え字や指標を付けることはできません。 例えば、TABLE-THREE に対する有効な添え字付き参照 (SUB1SUB2、および SUB3 はすべて SUBSCRIPT-ITEM に従属する項目であると想定) には、 次のものが含まれます。

ELEMENT-THREE (SUB1 SUB2 SUB3)

ELEMENT-THREE IN TABLE-THREE (SUB1 OF SUBSCRIPT-ITEM,
    SUB2 OF SUBSCRIPT-ITEM, SUB3 OF SUBSCRIPT-ITEM)

指標名を使用した添え字付け (指標付け)

指標付けを行うことによって、テーブルの検索や特定の項目の処理などの操作ができるようになります。 指標付けを使用するには、1 つ以上の指標名をデータ記述項目に OCCURS 文節を含む項目と関連付けます。指標名に関連付けられる指標は添え字の働きをし、 その値は指標名が関連付けられている項目のオカレンス番号に対応しています。

INDEXED BY 句は、指標名を識別し、特定のテーブルに関連付ける場合に使用されるものですが、 OCCURS 文節のオプショナル部分です。指標名に関連付けられる指標を記述するための別個の項目はありません。 実行時には、指標の内容が、それが関連付けられるテーブルの特定の次元のオカレンス番号に対応します。

実行時の指標の初期値は不定であり、 添え字として使用する前に初期設定しなければなりません。 指標の初期値の割り当ては、次のいずれかによって行います。

整数またはデータ名を、 テーブル・エレメントまたはテーブル・エレメント内の項目を参照する添え字として使用しても、そのテーブルに関連付けられた指標が変更されることはありません。

テーブルを参照するために指標名を使用することができます。しかし、参照されているテーブルと索引名が関連付けられているテーブルの各エレメントの長さがそれぞれ一致している必要があります。一致していない場合は、 参照はそれぞれのテーブルの同じテーブル・エレメントに対するものにならず、 実行時エラーが発生する可能性があります。

テーブル形式で配列されているデータは、頻繁に検索されることになります。 SEARCH ステートメントは、逐次検索や非逐次検索が行える機能を備えています。このステートメントは、テーブルを検索し、特定の条件を満たすテーブル・エレメントをテーブルから検索し、関連付けられた指標の値を そのテーブル・エレメントを指し示すように調整する場合に使います。

実行中に有効であるためには、指標の値は 1 以上、かつ最大許容オカレンス番号以下のテーブル・エレメントのオカレンスに対応している必要があります。

指標名の詳細については、指標名および INDEXED BY 句を参照してください。

相対添え字付け

相対添え字付け では、テーブル・エレメントの名前の後に、データ名または指標名の後に演算子 + または - が続き、さらに正の整数リテラルまたは符号なし整数リテラルが続く形式の添え字を指定します。

演算子の + と - の前後にはスペースが必要です。使用される添え字の値は、 指標名またはデータ名が整数の値によって上下に設定されているかのように、 それらの値は同じになります。相対指標付けを使用しても、プログラムが指標の値を変更することはありません。


ご利用条件 | フィードバック

Copyright IBM Corporation 1996, 2008.
このインフォメーション・センターでは Eclipse テクノロジーが採用されています。(http://www.eclipse.org)