ANS85 

ANS85 引数

引数は、関数値を求めるために使用する値である。引数は、関数一意名中に指定する。指定する引数の型には、一意名と算術式と定数がある。各関数の定義の説明で、必要な引数の数を具体的に示してある。関数によって、引数は必要ないもの、1つだけ必要とするもの、複数個必要とするものがある。また、中には、指定できる引数の数が変えられる関数もある。 関数一意名中に引数を指定する順序に基づいて、それぞれの引数が解釈され、関数値が決定される。指定する引数が、特定の字類またはその部分集合に属することが要求される場合がある。引数の型を下に示す。

  1. 数 字: 算術式を指定する。演算符号を含む算術式の値が、関数値を求めるために使用される。

  2. 英 字: 字類が英字である基本データ項目、または英字だけを含む文字定数を指定する。引数の大きさが、関数値の決定に使用されることもある。

  3. 英数字: 字類が英字か英数字である基本データ項目、または文字定数を指定する。引数の大きさが、関数値の決定に使用されることもある。

  4. 各国語型。字類が各国語型であるデータ項目、または各国語型文字を指定する。引数の大きさが、関数値の決定に使用されることもある。

  5. 整 数:  結果が必ず整数になる算術式を指定する。演算符号を含む算術式の値が、関数値を求めるために使用される。

意味のある関数値を求めるために、引数に指定できる値に制約が設けられることがある。関数の実行時に引数の値がその関数の制約から外れる場合、その関数からの戻り値は保証されない。

関数定義において引数を任意の回数繰り返し指定することが認められている場合、表を使用することができる。この場合、使用する表を識別するデータ名と、必要に応じて修飾語を指定し、その直後に添字を続ける。添字の1つまたはいくつかに語ALLを指定できる。

添字にALLを指定すると、その添字の位置に対応する表要素をすべて指定したのと同様の効果が得られる。この暗黙の指定は、表の要素を左から右に順に指定することを意味する。つまり、指定の対象となる最初(左端)の表要素は、添字に指定した語ALLのそれぞれを、1で置き換えた一意名によって表わされるものとなる。指定の対象となる次の表要素は、右端のALLに対応する添字の値を1繰り上げた一意名によって表わされるものとなる。

それ以降、暗黙の指定の対象となる表要素は、右端のALLに対応する添字の値を順々に1繰り上げていった一意名によって表わされるものとなる。そして、そのALLに対応する添字の値がその最大値に達したところで、その添字の繰り上げ処理は終わりとなる。ALLを指定した添字が複数ある場合は、次に、ALLを指定した右端の添字のすぐ左のALLを指定した添字が1繰り上げられ、ALLを指定した右端の添字の値は1に設定し直される。右端の添字の値を順々に1繰り上げていくことが、再度繰り返される。そして、右端の添字の値が最大値に達するたびに、その左側の添字の値が1繰り上げられる。左側の添字の値が最大値に達したところで、その添字の繰り上げ処理は終わりとなる。その左側にもALLを指定した添字がまだあれば、同様のプロセスが繰り返され、ALLを指定した左端の添字の値が最大値に達するまで、続けられる。

この処理の対象となる添字にOCCURS DEPENDING ON句が指定してある場合は、該当する添字の値の範囲は、OCCURS DEPENDING ON句の右辺の項目に基づいて決められる。ALLを指定した添字が評価された結果、少なくとも引数が1つ存在しなければならない。引数がないと、戻り値は保証されない。

 01 Test-Fields.
     10 OT-Elem                  PIC 9(02).
     10 Arr.
         15 Ind occurs 5 times        PIC 9(02).
     compute OT-Elem = function sum (IND(ALL)).

下記のコーディングと同じ意味になる。

     compute OT-Elem = function sum (IND(1), IND(2), IND(3),
                                            IND(4), IND(5)).

ALL を指定した添字は、以下の例のように、多くの要素を持つ表でも使用できる。

 01 Test-Group.
     03 OT-Elem               pic 9(15) binary.
     03 table-length          pic s9(9) binary.
     03 array.
         05 Ind pic 9(2) occurs 1 to 200 times depending on
                              table length
      ...
     move 100 to table-length.
     compute OT-Elem = function sum (Ind(ALL))

これらの文は、表の最初の100個の要素を合計する。table-lengthに指定された数が、関数の参照時に、加える要素の数として決定される。