MF 

CHAIN(連鎖)文

CHAIN(連鎖)文は、実行単位内のある実行用プログラムから他の実行用プログラムへ制御を移す。ただし、後から制御が戻されることを前提としない。連鎖先のプログラムは、新しい実行単位中の主プログラムであるようにみえる。

一般形式

構文規則

  1. CHAIN文の構文はCALL文の構文に似ている。CALL文の項に示したように、この2つの文は、CALL (呼出し)文節に記述されている共通の構文規則に従う。CHAIN文の一般形式に示されている一意名、定数、整数はすべて、CALL文の一意名、定数、整数に対応する。

一般規則

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

    連鎖先のプログラムはCOBOLプログラムでなければならず、かつ入れ子になっていてはならない。連鎖先のプログラムの名前には、そのプログラムのプログラム名段落中に記述されている名前を指定しなければならない(大文字と小文字の区別に関しては、見出し部の章のプログラム名段落節を参照)。別の方法として、連鎖先のプログラムの名前は、連鎖先のプログラムの実行プログラム用のコードが収められているファイルを指す名前であってもよい。前に連鎖されたプログラム、プログラム・ファイル名、あるいは登録集ファイル中のプログラムと指定された名前の照合方法の詳細については、インターフェイスに関するCOBOLシステムのマニュアルを参照。

  2. CHAIN文を実行したときに、CHAIN文に指定した連鎖先のプログラムが実行可能になれば、そのプログラムに制御が移される。連鎖するプログラムは取り消される。また、連鎖するプログラムによって呼ばれたCOBOLプログラムがあれば、それらも取り消される。連鎖先のプログラムは連鎖するプログラムの制御下にはない。したがって、連鎖されたプログラム内でEXIT PROGRAMを実行しても、効果はない。

  3. CHAIN文を実行したときに、CHAIN文に指定した連鎖先のプログラムが実行可能にならなければ、致命的なランタイム・エラーとされる。

  4. 連鎖されたプログラム内にCHAIN文があってもよい。連鎖されたプログラム内のCHAIN文では、そのプログラム自体以外の任意のプログラムを参照できる。.

  5. CHAIN文の形式はCALL文の形式に似ている。CALL文の項に示したように、この2つの文は、CALL (呼出し)文節に記述されている共通の一般規則に従う。CHAIN文の一般形式に示されている一意名、定数、整数はすべて、CHAIN文の一意名、定数、整数に対応する。また、呼ぶプログラムおよび呼ばれるプログラムという表現が用いられているときは、連鎖するプログラムおよび連鎖先のプログラムと同等であるとみなす。

  6. 連鎖処理によって、CHAIN文のUSING指定内で参照されている各データ項目の値が、連鎖先のプログラムの手続き部の見出しのUSING指定中に書かれている対応するデータ名によって参照される、データ項目に転記される。

  7. USING指定中の作用対象として渡されたUSAGE POINTERまたはUSAGE PROCEDURE-POINTERの指定がある任意のデータ項目の値は、COBOLデータ項目から当初に導出された番地を表していてはならない。

  8. END-CHAIN指定はCHAIN文の範囲を区切る。

  9. コンパイラ指令のINTLEVEL"1"を使用した場合は、USING指定を用いてはならない。