ANS85 

関数一意名

関数一意名とは、関数を評価した結果として得られるデータ項目を一意に参照する名前である。

一般形式


*

構文規則

  1. 受け取り側の作用対象として関数一意名を指定することはできない。
  2. ISO2002 次のいずれかに該当する場合を除き、

    FUNCTION という語は必須である。ISO2002 
    1. ISO2002 intrinsic-function-name-1 がリポジトリ段落で指定されている。
    2. ISO2002 function-prototype-name-1 が指定されている。
  3. ISO2002 function-prototype-name-1 は、リポジトリ段落で指定された関数プロトタイプである必要がある。
  4. ISO2002 intrinsic-function-name-1 が指定されている場合は、OMITTED という語は指定できない。
  5. argument-1 は、一意名、リテラル、または算術式とする。組み込み関数に対する argument-1 の数、クラス、およびカテゴリに関する規則については、「手続き部 - 組み込み関数」の章にある「関数の定義」セクションを参照。

    ISO2002 また、ユーザー定義関数については、「手続き部」の章にある「パラメーターおよび戻り項目の適合」セクションを参照

  6. ISO2002 OMITTED が指定されている場合は、対応する仮パラメーターに対して OPTIONAL を指定する必要がある。
  7. ISO2002 function-prototype-name-1 が指定され、かつ argument-1 に対応する仮パラメーターが BY VALUE 句とともに指定されている場合、argument-1 のクラスは、数字、オブジェクト、またはポインターでなければならない。
  8. 数値関数の特定の参照により整数値が生成された場合でも、整数の作用対象が必要な箇所では数値関数は指定できない。
  9. 符号なしの整数が必要な場合、整数形式の ABS 関数以外の整数関数は指定できない。
  10. 整数または数値関数を参照する関数一意名は、算術式でのみ使用できる。
  11. ISO2002 function-prototype-name-1 が指定されている場合、「手続き部」の章にある「パラメーターおよび戻り項目の適合」セクションで指定されている規則が該当する。
  12. 部分参照は、英数字

    ISO2002MF または各国文字

    のカテゴリの関数に対してのみ指定できる。

  13. 関数の定義により、function-prototype-name-1 または intrinsic-function-name-1 の直後に引数と左かっこを記述できる場合、この左かっこは常にこの関数の引数の左かっこと見なされる。
    注: 引数の有無にかかわらず参照される関数 (RANDOM 関数など) については、正しく解釈されるよう、符号化には注意が必要となる。次に例を示す。
    FUNCTION MAX (FUNCTION RANDOM (A) B)

    「A」は、RANDOM 関数の引数と見なされる。このような関数で、「A」を MAX 関数の 2 番目の引数とする場合は、次のいずれかの方法で記述する。

    FUNCTION MAX (FUNCTION RANDOM () A B)
    
       または
     FUNCTION MAX ( (FUNCTION RANDOM) (A) B)
    
       または
     FUNCTION MAX (FUNCTION RANDOM A B)

一般規則

  1. 関数一意名は、関数が実行中に参照される際に値が決定される一時データ項目を参照する。

    intrinsic-function-name-1 が指定されている場合、一時データ項目は基本データ項目であり、その記述とカテゴリは組み込み関数の定義によって指定される。この定義については、「手続き部 - 組み込み関数」の章の「関数の定義」セクションで解説する。

    ISO2002 function-prototype-name-1 が指定されている場合、一時データ項目の記述、クラス、およびカテゴリは、function-prototype-name-1 で指定された関数プロトタイプの手続き部の見出しの RETURNING で指定された項目の連絡節の記述により指定されたものである。

  2. 関数が参照される際に、その引数は引数のリストで指定された順序で左から右へと個別に評価される。評価対象の引数は、それ自体が関数一意名であってもよいし、関数一意名を含む式であってもよい。引数を評価する際に参照される関数は、その引数が指定されている関数を使用することもできる。つまり、関数は再帰型でもよい。組み込み関数の追加規則については、「組み込み関数」セクションに記載されている。

    ISO2002 また、ユーザー定義関数については、「手続き部」の章の「手続き部の見出し」および「パラメーターおよび戻り項目の適合」のセクションを参照。

    MF 整数の引数を求める関数に浮動小数点の引数が提供された場合、その値は最も近い整数に丸められるか、端数が切り捨てられる。

  3. ISO2002 function-prototype-name-1 が指定されている場合、「環境部」の章の「リポジトリ段落」セクションに記載の規則に従い、function-prototype-name-1 によって起動対象の関数の指定およびその関数の特徴の決定が行われる。
  4. ISO2002 function-prototype-name-1 が指定されている場合に各引数が渡される方法は以下のとおり。
    1. 対応する仮パラメーターに BY REFERENCE が指定または暗黙指定されており、argument-1 が、オブジェクト プロパティ、オブジェクト データ項目、またはファクトリ オブジェクト データ項目以外の受け取り作用対象として許可されている一意名である場合、BY REFERENCE が想定される。
    2. 対応する仮パラメーターに BY REFERENCE が指定または暗黙指定されており、argument-1 がリテラル、算術式、オブジェクト プロパティ、オブジェクト データ項目、ファクトリ オブジェクト データ項目、または受け取り作用対象として許可されている一意名である場合、BY CONTENT が想定される。
    3. 対応する仮パラメーターに BY VALUE が指定されている場合、BY VALUE が想定される。
  5. 関数一意名の評価のプロセスは次のとおり。
    1. argument-1 はそれぞれ、関数一意名の評価の最初に評価される。argument-1 の値は、起動された関数に制御が移行した時点で、その関数で利用できる。
    2. 実行時システムは、起動中の関数の位置の特定を試みる。

      ISO2002 function-prototype-name-1 が指定されている場合の規則については、「関数プロトタイプ名の規則」セクションに記載のとおり。追加規則については、「環境部」の章にある「リポジトリ段落」セクションを参照。

    3. 関数が見つかっても、関数の実行に必要なリソースがない場合、関数は起動されない。関数を実行するための可用性を判別するためにチェックされる実行時リソースは、実装者が定義する。
    4. 関数一意名によって指定された関数は実行用に利用できるようになり、制御は、起動される関数に対して指定された呼び出し規約に従った方法で、その関数に移行する。

      ISO2002 function-prototype- name-1 が指定されており、起動される関数が COBOL 関数である場合、その処理は「手続き部」の章の「手続き部の見出し」セクションに記載のとおり実行される。

      intrinsic-function-name-1 が指定されている場合、その処理は「手続き部 - 組み込み関数」の章に記載のとおり実行される。

      ISO2002 function-prototype-name-1 が指定されており、起動される関数が COBOL 関数でない場合、その処理は COBOL システム ドキュメントのインターフェイスに関する解説で定義されているとおりに実行される。

  6. OMITTED という語が指定されている場合、または後に続く引数が省略されている場合、そのパラメーターの省略引数条件は、起動された関数内で TRUE と見なされる(「省略引数条件」トピックを参照)。
  7. 省略引数条件が真であるパラメーターが、起動された関数により参照されている場合は、実行時エラー 203 が返される。ただし、引数として参照される場合、および省略引数条件内で参照される場合を除く。