transfer

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 との互換性』を参照してください。


transfer 文の構文図

transfer 文の構文図
program targetName (デフォルト)
制御を受け取るプログラム。COBOL のプログラムを作成していて、8 文字よりも長いプログラム名を 指定した場合は、そのプログラム名は 8 文字に切り捨てられ、必要であれば文字置換が行われます。 これについては、『名前の別名割り当て』で説明しています。
transaction targetName
すでに説明した、制御を受け取るトランザクションまたはプログラム。
sysVar.transferName
実行時に設定可能なターゲット名を含むシステム関数。 詳細については、『sysVar.transferName』を参照してください。
passing recordName
ターゲット・プログラムで、入力レコードとして受け取られるレコード。渡されるレコードの型は任意ですが、その長さとプリミティブ型は、データを受け取るレコードと互換性がある必要があります。ターゲット・プログラムの入力レコードは、 basicRecord 型であることが必要です。
externallyDefined
すでに説明したように、新規の開発にはお勧めしません。

関連する参照項目
sysVar.transferName

ご利用条件 | フィードバック
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.(C) Copyright IBM Japan 2005.