transfer 文は、あるメインプログラムから別のプログラムにコントロールを移動し、ソース・プログラムを終了します。 ソース・プログラムはオプションで、レコードをターゲット・プログラムの入力レコードに渡すことができます。transfer 文は、呼び出し先プログラムでは無効です。
実行時の動作について詳しくは、このトピックの『互換性』セクションを参照してください。
ターゲットのプログラムは、EGL により生成されたプログラム、 または外部定義と見なされたプログラムのいずれかです。 外部定義のプログラムであると示す方法について詳しくは、次のセクションにある isExternal プロパティーの説明を参照してください。

transfer to transaction 文を コーディングする場合、このリンケージ・パーツ要素は transferToTransaction で、 属性は externallyDefined です。transfer to program 文を コーディングする場合、このリンケージ・パーツ要素は transferToProgram で、 属性は linkType です。
EGL 生成コードとの間の有効な転送は、以下の表のとおりです。
| 転送側オブジェクト | ターゲット・オブジェクト |
|---|---|
| J2EE 外部の EGL Java™ プログラム | EGL Java プログラム (J2EE 以外) |
| J2EE アプリケーション・クライアント内の EGL Java プログラム | 同じ J2EE アプリケーション・クライアント内にある EGL Java プログラム |
| J2EE Web アプリケーション内の EGL Java プログラム | 同じ J2EE Web アプリケーション内の EGL Java プログラム |
| EGL CICS® COBOL プログラム | EGL CICS COBOL プログラム |
| 任意の言語で作成され、CICS で実行される非 EGL プログラム | |
| EGL z/OS® バッチ・プログラム | EGL z/OS バッチ・プログラム |
| 任意の言語で作成され、z/OS の CICS の外部で実行される非 EGL バッチ・プログラム | |
| 特定のトランザクションにおける非 EGL CICS プログラム | 同じトランザクションにおける EGL CICS COBOL プログラム |
| 同じトランザクションにおける非 EGL CICS COBOL プログラム | |
| 任意の言語で作成された CICS トランザクション | 任意の言語で作成された CICS トランザクション |
| 特定のトランザクションにおける EGL により生成された IMS/VS プログラム | 同じトランザクションにおける EGL により生成された IMS/VS プログラム |
| 任意の言語で作成された IMS™ トランザクション | 任意の言語で作成された IMS トランザクション |
| IBM® i 上の EGL プログラム | IBM i 上の EGL COBOL プログラム |
| 任意の言語で作成され、IBM i で実行される非 EGL プログラム | |
| 任意の言語で作成され、IBM i で実行される非 EGL プログラム | IBM i 上の EGL COBOL プログラム |
| 任意の言語で作成され、IBM i で実行される非 EGL プログラム |
EGL 生成 Java コードから非 EGL 生成 Java コードに 制御権を移動する場合は、EGL 外部型、Java アクセス関数、または vgLib.startTransaction のいずれかのメカニズムを使用してください。
EGL では据え置きの交換の使用をサポートしています。この場合、トランザクションでフォームを表示しユーザーがこのフォームを送信してから、別のトランザクションが起動されます。詳しくは、『show』を参照してください。
transfer to program com.CompanyB.CustomerPackage.processCustomer;
| プラットフォーム | 問題 |
|---|---|
| バッチ環境 (z/OS メイン・バッチ・プログラム、IMS BMP、あるいは Java メイン・テキストまたはメイン・バッチ・プログラム) | transfer to transaction 文は、同一の実行単位内のプログラムを開始します。制御権移動前の振る舞いは、synchOnTrxTransfer ビルド記述子オプションの設定に応じて異なります。
z/OS バッチ・プログラムと IMS BMP プログラムの間の制御権の移動はサポートされていません。 EGL では OS XCTL マクロを使用して、IMS BMP から、EGL によっても VisualAge® Generator によっても生成されていないプログラムへの制御権の移動を実行します。 |
| CICS for z/OS | transfer to program では、同期点は発生しません。
ただし、転送時に PSB がスケジュールされており、以下のいずれかの状況が生じている場合は例外です。
EGL は、transfer to program 文を CICS XCTL コマンドで実装し、そのコマンドの COMMAREA オプションを使用してレコードを渡します。 データは、CICS 共通域の最初のバイトから開始され、最大レコード長は 32763 です。 transfer to transaction 文は、リカバリー可能リソースのコミット、ファイルのクローズ、カーソルのクローズ、および新規トランザクションの開始を行います。 この場合の targetName は、CICS トランザクション ID です。EGL は、このステートメントを CICS START コマンドで実装し、そのコマンドの COMMAREA オプションを使用してレコードを渡します。 レコード・データは、CICS 共通域の最初のバイトから開始され、最大レコード長は 32763 です。 |
| IMS BMP | バッチ環境行を参照してください。 |
| IMS/VS |
transfer to transaction 文は、リカバリー可能リソースのコミット、ファイルのクローズ、カーソルのクローズ、および新規トランザクションの開始を行います。 |
| Java | リンケージ・オプション・パーツの transferToProgram 要素および transferToTransaction 要素では、 受信プログラムのパッケージ名が import 文によってもパッケージ名のコードによる明示によっても指定されていない場合に、そのパッケージ名を指定できます。 非 EGL 生成プログラムへの制御権の移動はサポートされていません。 |
| JSF | ページ・ハンドラーでは、transfer to transaction 文は無効です。代わりに forward 文を使用してください。 |
| Rich UI | transfer ステートメントはサポートされていません。 |
| z/OS バッチ | バッチ環境行を参照してください。 |