EGL 生成の Java コードまたはデバッガーからのリモート CICS プログラムの呼び出し

EGL 生成の Java™ コードまたは EGL デバッガーから CICS® プログラムをリモート側で呼び出すことができます。 呼び出し先プログラムは、EGL または VisualAge® Generator から生成できます。または、別の言語で作成できます。

デバッグ時または生成時に、リンケージ・オプション・パーツ、calllink 要素のプロパティーは、呼び出し先プログラムの特性によって異なります。具体的には、次のようになります。
以下に、実行時の動作を示します。
  1. EGL ランタイム・コードは、呼び出し側の生成に使用されたリンケージ・オプション・パーツを使用し、そのパーツから呼び出し先プログラムの名前と関連 CICS トランザクション・コードの両方を取得します。
  2. EGL ランタイム・コードは、callLink 要素で指定された conversionTable プロパティー、および呼び出し先プログラムに渡されるフィールドのデータ型に基づいて、データを EBCDIC に変換します。
  3. EGL ランタイム・コードは、CICS Transaction Gateway のコネクターを使用して、トランザクションを開始し、呼び出し先プログラムの名前とパラメーターを識別して特定の CICS 領域に渡します。正確なパスは、remoteComType の値によって異なります (CICSECI、CICSEXCI、CICSJ2C、または CICSSSL のうちどれであるか)。
  4. 以下のイベントは、calllink 要素のプロパティー値によって異なります。
    1. remotePgmType の値が EXTERNALLYDEFINED または EGL であり、parmForm の値が COMMDATA である場合、CICS ミラー・プログラムは呼び出し先プログラムを直接呼び出し、ランタイム・コードは COMMAREA を使用して呼び出し先プログラムと値を交換します。 (COMMDATA は、渡されるすべての引数が値変数またはリテラルであり、参照変数ではない場合にのみ使用できます。)
    2. remotePgmType の値が EXTERNALLYDEFINED または EGL であり、parmForm の値が COMMPTR である場合、CICS ミラー・プログラムは EGL キャッチャー・プログラムを呼び出します。

      キャッチャー・プログラムの名前は、呼び出しを実行するクライアント・ランタイム・コードのバージョンによって異なります。EGL バージョン 7.0 以降の場合、キャッチャー・プログラムは ELACSV7 です。それよりも前のバージョンの EGL (または VisualAge Generator) の場合、キャッチャー・プログラムは ELACSV です。

    3. remotePgmType の値が EXTERNALLYDEFINED または EGL であり、parmForm の値が CHANNEL である場合、CICS ミラー・プログラムは EGL キャッチャー・プログラムを呼び出します。ただし、この場合、キャッチャー・プログラムの名前は ELACSV7C です。
  5. キャッチャー・プログラムが使用されている場合、以下の記述が適用されます。
    • parmForm の値が COMMPTR である場合、プログラムは呼び出し側パラメーターをポインターに変換します。この場合、キャッチャー・プログラムは、2 つの方法 (動的 COBOL 呼び出し (remotePgmType の値が EGL である場合) または CICS LINK の使用 (remotePgmType の値が EXTERNALLYDEFINED である場合)) のいずれかで呼び出し先プログラムを呼び出します。
    • parmForm の値が CHANNEL である場合、各パラメーターは内容にポインターが含まれない別々のコンテナーで渡されます。この場合、キャッチャー・プログラムは必ず CICS LINK を使用して呼び出し先プログラムを呼び出します。

    キャッチャー・プログラムは、2 つの方法 (動的 COBOL 呼び出し (remotePgmType の値が EGL である場合) または CICS LINK の使用 (remotePgmType の値が EXTERNALLYDEFINED である場合)) のいずれかで呼び出し先プログラムを呼び出します。

  6. 呼び出し先プログラムが実行され、それを開始するために使用されたパスと同じパス (直接、または EGL キャッチャー経由のいずれか) を使用してデータを戻します。
  7. EGL ランタイム・コードは、クライアント・マシンのロケールと呼び出し先プログラムに渡されるフィールドのデータ型に従って、データを呼び出し側のコード・ページに変換します。
以下に例を示します。
  1. CICS システム・プログラマーが、TRNX という名前のトランザクションを作成し、CICS ミラー・プログラム DFHMIRS に関連付けます。トランザクション名は、calllink プロパティー serverID で指定されている名前に一致している必要があります。 そのトランザクションの特性は、トピック『callLink 要素の serverID』で説明されているとおりです。
  2. CICS では、PGMX という名前の既存の非 EGL プログラムが、COMMAREA でポインターの形式の引数を予期しています。
  3. Java プログラムには、PGMX を呼び出すためのステートメントが組み込まれています。
  4. 呼び出し側の生成に使用されるビルド記述子で、 linkage ビルド記述子オプションは pgmLinkage という名前のリンケージ・オプション・パーツを参照します。
  5. そのリンケージ・オプション・パーツで、次のようにします。
    1. callLink 要素の serverID プロパティーを適切なトランザクション・コード (この場合は TRNX) に設定します。
    2. プロパティー remoteComType を CICSECI、CICSJ2C、または CICSSSL に設定し、プログラムが CICS 環境内にあることを示します。
  6. 実行時に、EGL ランタイム・コードは、データを変換し、その後トランザクション・コード (TRNX)、プログラム名 (ELACSV7、この呼び出しが EGL キャッチャー・プログラムの使用を必要とするため)、およびパラメーター (ターゲットの呼び出し先プログラムの名前など) を CICS Transaction Gateway に送信します。
  7. CICS Transaction Gateway は、CICS サーバー上の TRNX を呼び出します。 このトランザクションは、DFHMIRS という名前の CICS ミラー・プログラムに関連付けられています。
  8. CICS ミラー・プログラムは、ELACSV7 という名前の EGL キャッチャー・プログラムを呼び出します (EGL Java ランタイム・コードがバージョン 7.0 以降であることを想定)。
  9. EGL キャッチャー・プログラムは、パラメーターを値として受け取り、ネットワークを介して渡された値をパラメーターあたり 1 つのポインターに変換し、PGMX を呼び出します。
  10. PGMX が完了すると、制御はキャッチャー・プログラムに戻り、キャッチャー・プログラムは、戻りデータへのポインターを受け取り、呼び出し側に戻すデータ値のバッファーを作成します。
  11. キャッチャー・プログラムはミラー・プログラムに戻り、ミラー・プログラムは CICS Transaction Gateway を介して EGL Java ランタイム・コードにデータを送信します。
  12. EGL Java ランタイムは、これらの値を受け取って適切なロケールに変換し、呼び出し側の実行を再開します。

フィードバック