添え字付け

添え字は、個別にデータ名が指定されていない同種の要素のリストまたは表の中の、個々の要素を参照するためにのみ使用できる (「OCCURS 句」トピックを参照)。

添え字として使用できるのは、整数である数値定数、データ名、後ろに「+」または「-」演算子が続くデータ名、または符号なしの整数数値定数が続くデータ名のいずれかである。データ名を使用する場合、このデータは数値基本項目で整数とする。添え字全体は、左かっこと右かっこが対になった分離符で区切る必要がある。

添え字に使用するデータ名には符号を指定できる (正符号のみ)。添え字が取り得る最小値は 1 である。この値は、テーブルの最初の要素を指す。表の要素の 2 番目以降をポイントする添え字の値は、2、3、... と続く。 添え字が取り得る最大値は、どのような場合であれ、OCCURS 句で指定した項目の反復回数の最大値である。

表の要素を一意に識別する添え字または添え字の組は、対象とする表要素のデータ名の後ろに、一対の左かっこと右かっこで囲んで付けて区切られる。表要素のデータ名に添え字を付けたものを、添え字付きデータ名または一意名と呼ぶ。複数の添え字を指定する必要がある場合は、データ構造の階層の上位のものから書く。添え字は 3 個まで指定できる。

ANS85 添え字は 7 個まで指定できる。

MF 添え字は 16 個まで指定できる。

一般形式


*

構文規則

  1. data-name-1、または condition-name-1 に関連付けられたデータ名を含むデータ記述項には、OCCURS 句が含まれていなければならない。または、それらのデータ記述項は、OCCURS 句を含むデータ記述項の下位に属さなければならない。
  2. 表要素を参照する場合、指定する添え字の数は、参照対象の表要素の記述中の OCCURS 句の数と一致している必要がある。ただし、構文規則 7 に規定された場合は例外とする。複数個の添え字を指定する必要がある場合は、表の次元の上位のものから順に書く。
  3. ANS85  添え字 ALLを使えるのは、関数の引数として添え字付きの一意名を使用する場合だけである。condition-name-1 を指定したときは、添え字 ALL は使用できない(「引数」トピックを参照)。
  4. integer-1 には符号を指定できる (正符号のみ)。
  5. data-name-2 は修飾が可能で、整数を表す数値基本項目にする必要がある。
  6. index-name-1 は、参照対象の表の階層系列中にあり、その指標名を指定する INDEXED BY を含むデータ記述項と対応させる必要がある。

    OSVSVSC2MF または、他の表を記述する指標を代わりに使用できる。ただし、2 つの表に含まれる要素のサイズが同じである場合に限る。

  7. 以下の場所を除き、表要素を参照する場合は必ず添え字を指定する必要がある。
    1. USE FOR DEBUGGING 文
    2. SEARCH 文または SORT 文の対象
    3. REDEFINES 句
    4. OCCURS 句内の KEY IS 指定
  8. OSVS 同じ一意名の中で、添え字と指標を併用することはできない。

    ANS85 同じ一意名の中で、添え字と指標は併用できる。

一般規則

  1. 添え字の値は、正の整数とする。添え字が取り得る最小の出現番号は 1 である。表の任意の次元の最初の要素は、出現番号 1 で参照される。表のその次元内の連続する各要素は、反復回数 2、3、... で順次参照される。 表のどの次元でも、添え字が取る最大値は、対応する OCCURS 句で指定した項目の出現番号の最大値である。

    MF 添え字が浮動小数点項目の場合、その値は最も近い整数に丸められるか、端数が切り捨てられる。

    arithmetic-expression-1 が指定され、算術式の最終結果が整数でない場合、最終結果の端数は切り捨てられる。中間結果は切り捨てられない。

    arithmetic-expression-1 が指定され、算術式の最終結果または中間結果が負の場合、その影響は予測不可能となる。

  2. index-name-1 を用いて参照する指標の値は、関連付けられた表中の要素の出現番号に対応する。
  3. index-name-1 を用いて参照する指標の値は、添え字として使用する前に初期化しておく必要がある。指標に初期値を与える方法には、PERFORM 文に VARYING を指定する方法、SEARCH 文に ALL を指定する方法、および SET 文を指定する方法の 3 通りがある。指標の値を変更できる文は PERFORM、SEARCH、および SET のみである。
  4. たとえば、

    ANS85 integer-2 または

    integer-3 を指定した場合、添え字の値は次のようにして決定される。演算子「+」を指定した場合は、

    ANS85 integer-2 または

    integer-3 の値が追加される。演算子「-」を指定した場合は、

    ANS85 integer-2 または

    integer-3 の値が差し引かれる。

    ANS85 次のいずれかが該当する。

    出現番号は、index-name-1 が参照する指標の値によって表される。

    ANS85 出現番号は、data-name-2 が参照するデータ項目の値によって表される場合もある。

説明:

MF NOBOUND コンパイラ指令を指定した場合は、この一般規則は実行時に適用されない。