EGL の transfer 文は、メイン・プログラムから別のプログラムに制御を与えて、転送側のプログラムを終了します。さらにオプションで、受け取り側プログラムの入力レコードが受け取るデータを持っているレコードを渡します。呼び出し先プログラムでは、transfer 文は使用することができません。
プログラムは、
トランザクションへの移動または
プログラムへの移動という書式の文によって、制御を移動することができます。
- トランザクションへの転送は、以下のようにして行われます。
- CICS® for z/OS® で実行されるメインプログラムでは、この文はリカバリー可能リソースをコミットし、ファイルをクローズし、カーソルをクローズし、新規トランザクションを開始します。
- z/OS のメイン・バッチ・プログラムとして、または Java™ メイン・テキストまたはメイン・バッチ・プログラムとして実行するプログラムでは、この振る舞いは、ビルド記述子オプション synchOnTrxTransfer の設定によって異なります。
- synchOnTrxTransfer の値が YES の場合は、transfer 文は回復可能リソースをコミットしてファイルをクローズし、次にカーソルをクローズして、同じ実行単位にあるプログラムを開始します。
- synchOnTrxTransfer の値が NO (デフォルト) の場合も transfer 文は同じ実行単位内のプログラムを開始しますが、呼び出し先プログラムで使用可能なリソースは、クローズまたはコミットしません。
- Web プログラムまたはページ・ハンドラーでは、トランザクションへの転送は無効です。その代わりに、forward 文を使用してください。
- プログラムへの転送は、回復可能なリソースをコミットまたはロールバックしませんが、ファイルをクローズし、次にカーソルをクローズして、同じ実行単位にあるプログラムを開始します。
リンケージ・オプション・パーツである transferLink 要素は、Java コードから Java コードへ制御を転送する場合は何の効果も与えませんが、それ以外では意味があります。
EGL または VisualAge
® Generator を使って作成
されていないコードに制御コードを転送する場合は、リンケージ・オプション・パーツである
transferLink 要素を以下のように設定することをお勧めします。
- プログラムに転送する場合は、linkType プロパティーを externallyDefined に設定する。
- トランザクションに転送する場合は、externallyDefined プロパティーを yes に設定する。
EGL または VisualAge Generator を使って作成されていないコードに制御コードを転送する場合は、リンケージ・オプション・パーツである transferLink 要素を設定することをお勧めします。
linkType プロパティーを externallyDefined に設定します。
VisualAge Generator との互換性モードで実行している場合は、VisualAge Generator からマイグレーションされたプログラムの場合のように、transfer 文で externallyDefined オプションを指定することができます。ただし、その代わりにリンケージ・オプション・パーツに等価な値を設定することをお勧めします。
VisualAge Generator との互換性モードについての詳細は、『VisualAge Generator との互換性』を参照してください。
- program targetName (デフォルト)
- 制御を受け取るプログラム。COBOL のプログラムを作成していて、8 文字よりも長いプログラム名を
指定した場合は、そのプログラム名は 8 文字に切り捨てられ、必要であれば文字置換が行われます。
これについては、『名前の別名割り当て』で説明しています。
- transaction targetName
- すでに説明した、制御を受け取るトランザクションまたはプログラム。
- sysVar.transferName
- 実行時に設定可能なターゲット名を含むシステム関数。
詳細については、『sysVar.transferName』を参照してください。
- passing recordName
- ターゲット・プログラムで、入力レコードとして受け取られるレコード。渡されるレコードの型は任意ですが、その長さとプリミティブ型は、データを受け取るレコードと互換性がある必要があります。ターゲット・プログラムの入力レコードは、
basicRecord 型であることが必要です。
- externallyDefined
- すでに説明したように、新規の開発にはお勧めしません。