プログラム間での制御権の移動

ある関数から別の関数へコントロールを引き渡すことに加えて、EGL には、以下のように、コントロールをプログラムから別のプログラムに切り替えるための異なる方法がいくつかあります。
  • call 文は、関数から呼び出し先プログラムにコントロールを渡します。 また、オプションで一連の値を渡すこともできます。 (詳しくは、メインプログラムと呼び出し先プログラムを参照してください。) 呼び出し先プログラムが終了すると、制御は呼び出し側に戻ります。呼び出し先プログラムが、変数として渡された任意のデータを変更すると、その変数の内容は、呼び出し側でも変更されます。

    呼び出しでは、データベースやその他のリカバリー可能リソースをコミットしませんが、サーバー・サイドの自動コミットは行われる場合があります。

    プログラムは、EGL で生成されたプログラムであるか、外部定義されている と見なされます。 この件について詳しくは、呼び出しまたは転送におけるリンケージ・オプション・パーツの使用を参照してください。

    その数に実質的な制限はありません。

  • 2 種類の transfer 文は、コントロールをメインプログラムから別のメインプログラムに移動し、 コントロールの移動元プログラムを終了し、オプションで、受け取り先プログラムの入力レコードで受け入れられるデータを持つレコードを渡します。
    • transfer to transaction 文はほとんどの環境で使用可能であり、リカバリー可能リソースのコミットやロールバックを行う能力を持ちます。
    • transfer to program 文はリカバリー可能リソースのコミットやロールバックは行いませんが、ファイルのクローズ、ロックの解除、および同じ実行単位内のプログラムの開始を行います。
  • vgLib.startTransaction() システム関数は、非同期的に実行単位を開始します。その操作は、移動元のプログラムを終了せず、移動元のプログラム内のデータベース、ファイル、およびロックに影響しません。 受け取り側プログラムの入力レコードに、データを渡すオプションがあります。
  • EGL の show 文は、特定の UI テクノロジーのコンテキスト内でのみ使用します。ご使用のテクノロジーについて詳しくは、このトピックの終わりにある『関連参照』を参照してください。
  • EGL の forward 文は、Java™ 環境や UI コンテキストでのみ実行されるプログラムで使用します。この文は、以下のアクションを実行します。
    1. リカバリー可能リソースのコミット、ファイルのクローズ、およびロックの解除
    2. 制御の移動
    3. コードの終了

    この場合の宛先は、別のプログラムまたは Web ページです。詳しくは、forwardを参照してください。