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