TCP 拡張リスナー メッセージのリンク

TCP 拡張リスナー メッセージ (ELM) リンク モデルを使用すると、COMMAREA を使用して TI とサーバー TP の間でデータとパラメーターを受け渡すことができます。 このモデルを使用すると、同時実行サーバーを CICS DPL プログラムにリンクすることもできます。 拡張リスナーは CICS トランザクション サーバー バージョン 1.4 で導入されたもので、そのアーキテクチャにより、TRM と TRM 応答のシーケンスがなくなるため、CICS TCP/IP 環境の効率が向上します。 拡張リスナーにより、初期ストリームにおいてクライアントからヘッダーと要求のデータが受け取られるため、アプリケーション データが使用できるようになる前に、サーバー アプリケーションで別の応答を提供する必要がなくなります。 拡張リスナーを使用するには、クライアントで次のことを行う必要があります。

  • 要求ヘッダーとそれに続くアプリケーション要求データで構成される単一のデータ ストリームを作成し、サーバー アプリケーション プログラムに送信します

  • 応答ヘッダーとアプリケーション データで構成される単一のデータ ストリームを、サーバー アプリケーション プログラムから受信します

    次の図は、クライアント、拡張 CICS リスナー、同時実行サーバー、メインフレーム トランザクション プログラムの間で行われるワークフローをまとめたものです。 かっこ内の数字は、イベントが発生するおおよその順序を示しています。 イベントの詳細については、次の図を参照してください。

    クライアント、拡張 CICS リスナー、コンカレント サーバー、メインフレーム トランザクション プログラムの間で発生するワークフローを示す画像。

TCP ELM リンク プログラミング モデルは次のように動作します。

  1. アプリケーションによって、コンポーネント サービスまたは .NET Framework に構成された TI コンポーネント内のメソッドが呼び出されます。

  2. TI ランタイムにより、TI Automation プロキシが呼び出されます。

  3. アプリケーションが COM+ コンポーネントの場合、TI Automation プロキシで次の操作が実行されます。

    1. 前に TI デザイナーによって作成されたタイプ ライブラリが読み取られます

    2. オートメーション データ型が COBOL データ型にマップされます

      アプリケーションが .NET Framework アセンブリの場合、TI Automation プロキシでは次の操作が実行されます。

    3. 前に TI デザイナーによって作成されたアセンブリとメタ データが読み取られます

    4. .NET Framework データ型が COBOL データ型にマップされます

      その後、TI Automation プロキシによって次の操作が実行されます。

    5. 変換ルーチンが呼び出されて、アプリケーション データがメインフレームの COBOL 型に変換されます

    6. COBOL 宣言またはコピーブックを表す、フラット化されたデータ ストリーム バッファーが構築されます。

    7. メッセージが TCP トランスポート コンポーネントに渡されます。

  4. TI TCP トランスポートによって、メインフレーム コンピューターのインターネット プロトコル (IP) アドレスとリスナーのポート アドレスを使用して、拡張リスナーに接続要求が送信されます。

  5. 拡張リスナーによって接続要求が受け入れられ、ELM の送信が TI ランタイムに指示されます。 その後、拡張リスナーにより ELM が待機されます。

    ELM は、TRANID を使用して呼び出されるサーバー TP を示す、書式設定されたデータ レコードです。 リスナー TP は特殊なメインフレーム TP であり、その主な機能は、TCP/IP を実行するクライアント アプリケーションによって送信されたサーバー TP 呼び出しを受け取ることです。 IBM 提供の拡張リスナー TP の TRANID は、ユーザーによって定義されます。

  6. TI ランタイムにより、ELM が書式設定されて、拡張リスナーに送信されます。 その後、TI により、ELM 応答を待機するトランスポート ロジックがバイパスされ、要求ヘッダーの直後にアプリケーション要求データが送信されます。 TI は、その後で ELM 応答を待機します。

  7. 拡張リスナーによって、35 バイトの ELM が受信された後、ELM ヘッダーの内容が読み取られます。 拡張リスナーにより、トランザクション初期メッセージ (TIM) にその 35 バイトが格納されますが、その内容は操作されません。

    TIM には、サーバーが実行されている TCP/IP 環境が記述されており、同時実行サーバーが COMTI TCP トランスポートとの通信に使用する TCP/IP ソケット情報と、実行時の動作をカスタマイズするために同時実行サーバーが使用するクライアント メッセージ ヘッダーが格納されています。 ヘッダーには、リンク先のサーバー プログラムの名前が含まれます。

  8. 拡張リスナーにより、リスナー定義で定義されている同時実行サーバー TP プログラム (Mscmtics.cbl サンプル アプリケーション) が開始されます。

    Mscmtics.cbl は Microsoft のサンプル TP ファイルであり、COMMAREA を使用して TI とサーバー TP の間でデータを受け渡すために使用されます。 Mscmtics.cbl サンプル TP は Microsoft によって開発され、Host Integration Server ソフトウェアの一部として提供されています。 それは、$\Microsoft Host Integration Server\SDK\Samples\Comti\ProgrammingSpecifics\Tcp にあります。 このモデルを使用する前に、それをコンパイルし、リンクして、メインフレーム コンピューターにインストールする必要があります。

    注意

    拡張リスナーで同時実行サーバーを起動できない場合、リスナーによりエラー メッセージが作成されて、COMTI TCP トランスポートに返送されます。 次のような理由で、リスナーは起動できない可能性があります。

    • CICS リソースに制限があるために接続が拒否された (たとえば、CICS タスクまたは同時実行サーバー タスクの最大数を超えた)

    • 同時実行サーバーに対する TRANID が不適切または無効である

    • トランザクション ID に関連付けられている同時実行サーバー プログラムが不適切、無効、または使用できない

    注意

    CICS リスナーからのエラー メッセージは文字ベースであり、常に EZY という文字で始まります。 エラー メッセージの長さは一定ではなく、メッセージの終了は、CICS リスナーによって閉じたソケットによって決まります。

  9. 拡張リスナーにより、ホスト環境内のソケット アプリケーション プロトコル インターフェイス (API) が呼び出されます。 拡張リスナーによって同時実行サーバー トランザクションの開始コマンドが発行された後、拡張リスナーはアプリケーションの処理ループから外れるので、別の受信要求をリッスンすることができます。

  10. 同時実行サーバーにより、TIM が取得され、ソケットへの接続が行われて、ELM の内容が読み取られます。

  11. TI により、標準の EXEC CICS リンク呼び出しを使用して、ビジネス ロジックが含まれるサーバー アプリケーション プログラムに、CICS COMMAREA を介してアプリケーション データが渡されます。 また、TI ランタイムにより、送信している 1/2 ソケットのシャットダウンが発行された後、応答データが待機されます。

  12. サーバー TP により、アプリケーション データが受信されて、要求が処理され、データに対してビジネス ロジックが実行されます。 すべてのビジネス ロジックは、サーバー TP で定義されています。

  13. 同時実行サーバーにより、COMMAREA を介して ELM 応答ヘッダーが TI に送信されます。

  14. サーバー TP によって応答データが準備された後、応答が COMMAREA を通してクライアントに送信されます。

  15. アプリケーション応答データ ストリームは、2 つの部分で構成されます。 1 つ目は、要求が成功したか失敗したかをトランスポートに通知する ELM 応答です。 TCP トランスポートによってストリームからの ELM 応答が使用され、ELM 応答で呼び出しが成功したことが示されている場合は、同時実行サーバーによってソケットが閉じられるまで、アプリケーションの応答データが受信されます。

  16. 同時実行サーバーによってソケットが閉じられます

  17. TI Automation プロキシにより、応答データが受信されて応答が処理されます。 TI Automation プロキシでは次の操作が実行されます。

    1. TCP トランスポート コンポーネントからメッセージを受信

    2. メッセージ バッファーの読み取り

      アプリケーションが COM+ コンポーネントの場合、TI Automation プロキシでは次の操作が実行されます。

    3. COBOL データ型を Automation データにマップします。

    4. 変換ルーチンを呼び出し、メインフレームの COBOL 型をアプリケーション データに変換します。

      アプリケーションが .NET アセンブリの場合、TI Automation プロキシでは次の操作が実行されます。

    5. COBOL データ型を .NET Framework データ型へマップします。

    6. 変換ルーチンを呼び出し、メインフレームの COBOL 型をアプリケーション データに変換します。

  18. TI ランタイムにより、変換されたデータが、メソッドを呼び出した COM または .NET Framework アプリケーションに送り返されます。

    このモデルを実装するには、同時実行サーバー プログラム (Mscmtics.cbl) によって渡されるアプリケーションを実行するための IP アドレス、ポート番号、CICS プログラム名を、TI に指定する必要があります。

    Host Integration Server には、TCP ELM Link プログラミング モデルを実装する方法を示すサンプル コードが含まれています。 サンプル コードは、\<インストール ディレクトリ>\SDK\Samples\AppInt にあります。 Microsoft Visual Studio を起動し、選択したチュートリアルを開き、Readme の手順に従ってください。

参照

トランザクション インテグレーターのコンポーネント
トランザクション要求メッセージ
データ型を自動化から z/OS COBOL に変換する]
z/OS COBOL から自動化へのデータ・タイプの変換
CICS コンポーネント
TI ランタイム
適切なプログラミング モデルの選択
プログラミング モデル