リンケージ・オプション・パーツの transferToProgram
エレメントは、生成された COBOL プログラムが制御を転送し、処理を終了する方法を指定します。
このエレメントには以下のようなプロパティーがあります。
- fromPgm
- toPgm
- linkType
- alias (ご使用のコードが、実行時名が関連するプログラム・パーツ名とは異なるプログラムに転送される場合に必要)
ターゲット・プログラムが VisualAge
® Generator、または EGL (別名がない場合)を使用して生成される際に、
transferToProgram エレメントの指定を省略できます。
デフォルトの振る舞いは、以下のとおりです。- プログラムが、CICS® for z/OS® 上で稼動する場合には、移行は XCTL コマンドを使用して実装されます。
- プログラムが z/OS 上
(CICS 環境ではない)で稼動している場合には、EGL は、CICS
上における振る舞いをシミュレートします。これによって、移行元プログラムは終了しますが、その実行単位は、ロックのコミットまたはリリースをすることなく継続します。この場合には、移行は動的 COBOL 呼び出しによって実装されます。これは XCTL よりも効果的ですが、より多くのメモリーを使用します。
CICS の外部で実行する COBOL コードを作成する場合には、
特別な注意事項があります。
CICS の振る舞いのランタイム・シミュレーションでは、任意の転送が発生するプログラムとして、
実行単位に初期プログラムを指定する必要があります。
Program01 から Program02 に転送され、次に Program03 に転送されることを考えてみます。それぞれの転送は、
transfer to program タイプと想定します。Program01 の生成時に (デフォルトの振る舞いを受け入れない場合)、
ユーザーのリンケージ・オプション・パートには、以下の転送が発生したことを示す 1 対の transferLink エレメントが含まれている必要があります。
- Program01 から Program02 へ
- Program01 から Program03 へ
Program02 が EGL 生成プログラムで、Program03 が EGL 生成プログラムではない場合には、
デフォルト設定は不適切です。Program01 から Program03 への制御の移行で必要になる transferLink エレメントを指定する必要があります。
上記の状態で、Program02 を他の実行単位の最初のプログラムとしても使用する可能性がある場合には、
ユーザーのリンケージ・オプション・パーツには、Program02 の生成時に異なる transferLink エレメントを組み込む必要があります。この場合の目的は、単純に制御を Program02 から Program03 へ移動することです。