MF 

CHAIN 文

CHAIN 文は、実行単位内のある実行用プログラムから他の実行用プログラムへ制御を移す。制御は後で戻らない。効果は、連鎖先のプログラムが新しい実行単位でメイン プログラムであるかのようになる。

一般形式

CHAIN Statement

構文規則

  1. CHAIN 文は、CALL 文と構文が似ている。この 2 つの文は、「CALL 文」トピックに記載の共通の構文規則に従う。CHAIN 文の一般形式に示す一意名、定数、および整数はすべて、CALL 文の一意名、定数、および整数に対応する。

一般規則

  1. literal-1、または identifier-1 が参照するデータ項目の内容は、連鎖先のプログラムの名前である。CHAIN 文が記述されているプログラムは、連鎖元のプログラムである。

    連鎖先のプログラムは、入れ子構造を持たない COBOL プログラムとする。連鎖先のプログラムの名前は、そのプログラムのプログラム名段落に含まれている名前を含むものとする (大文字と小文字の区別に関しては、「プログラム名段落」セクションを参照)。あるいは、連鎖先のプログラムの名前には、連鎖先のプログラム用の実行可能プログラム コードを含むファイルを示す名前を含めてもよい。事前に連鎖されたプログラム、プログラム ファイル名、またはライブラリ ファイルのプログラムと、指定された名前との照合方法の詳細については、COBOL システムのドキュメントを参照。

  2. CHAIN 文の実行時に、CHAIN 文で指定した連鎖先のプログラムが実行可能になれば、そのプログラムに制御が移る。また、連鎖元のプログラムおよびそれらが呼び出した COBOL プログラムがあれば、それらも取り消される。連鎖先のプログラムは連鎖元のプログラムの制御下にはない。したがって、連鎖先のプログラム内で EXIT PROGRAM を実行しても効果はない。
  3. CHAIN 文の実行時に、CHAIN 文で指定した連鎖先のプログラムが実行可能にならなければ、以下のいずれかの処理が発生する。
    • ON EXCEPTION または ON OVERFLOW が指定されている場合、制御が imperative-statement-1 または imperative-statement-2 に移る。その後、文の規則に従って実行が継続する。制御を明示的に移す手続き分岐文または条件文を実行すると、その文の規則に応じて制御が移る。それ以外の場合には、無条件文の実行が完了すると、CHAIN 文の最後に制御が移る。
    • ON EXCEPTION または ON OVERFLOW が指定されていない場合、致命的な実行時エラーが発生する。
  4. 連鎖先のプログラムに CHAIN 文を含められる。連鎖先のプログラムの CHAIN 文は、そのプログラム自体を除く任意のプログラムを参照できる。
  5. CHAIN 文は、CALL 文と形式が似ている。この 2 つの文は、「CALL 文」トピックに記載の共通の一般規則に従う。CHAIN 文の一般形式に示す一意名、定数、および整数はすべて、CALL 文の一意名、定数、および整数に対応する。また、呼び出す側のプログラムおよび呼び出される側のプログラムという表現を用いている箇所は、連鎖元のプログラムおよび連鎖先のプログラムと同等であると見なす。
  6. 連鎖処理により、CHAIN 文の USING 指定で参照されている各データ項目の値が、連鎖先のプログラムの手続き部の見出しの USING 指定内の対応するデータ名が参照するデータ項目に転記される。
  7. USING 指定で作用対象として渡された、USAGE POINTER または USAGE PROCEDURE-POINTER を指定したデータ項目の値は、元々 COBOL データ項目から導出されたアドレスを表すことはできない。
  8. END-CHAIN 指定は CHAIN 文の範囲を区切る。