TCP 拡張リスナー メッセージのユーザー データ

TCP 拡張リスナー メッセージ (ELM) ユーザー データ モデルを使用すると、TI とサーバー TP の間でデータとパラメーターを直接受け渡すことができます。

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

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

TCP ELM ユーザー データ プログラミング モデル

TCP ELM ユーザー データ プログラミング モデルは次のように動作します。

  1. アプリケーションによって、TI .NET オブジェクト内のメソッドが呼び出されます。

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

  3. TI プロキシで次の操作が実行されます。

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

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

      その後、TI プロキシでは次の操作が実行されます。

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

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

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

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

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

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

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

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

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

  8. 拡張リスナーにより、EXEC CICS Start を使用して、ELM の TRANID によって識別された同時実行サーバー 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 にあります。 このモデルを使用する前に、それをコンパイルし、リンクして、メインフレーム コンピューターにインストールする必要があります。

注意

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

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

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

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

注意

CICS リスナーからのエラー メッセージは文字ベースであり、常に EZY という文字で始まります。 エラー メッセージの長さは一定ではなく、メッセージの終了は、CICS リスナーによって閉じたソケットによって決まります。 拡張リスナーにより、ホスト環境内のソケット アプリケーション プロトコル インターフェイス (API) が呼び出されます。 拡張リスナーによって同時実行サーバー トランザクションの開始コマンドが発行された後、拡張リスナーはアプリケーションの処理ループから外れるので、別の受信要求をリッスンすることができます。

  1. 実行された同時実行サーバーによって、標準リスナーから送信されたトランザクション初期メッセージ (TIM) が読み取られます。

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

  2. 同時実行サーバーによって TI に TRM が送信され、アプリケーション要求データが待機されます。

  3. TI によって TRM が評価されて、データが同時実行サーバー プログラム (Mscmtics.cbl) に直接渡されます。 TI はソケットのシャットダウンも送信し、TI は応答データを待機します。

  4. データを受信した後、サーバー TP によりデータでビジネス ロジックが実行されます。 すべてのビジネス ロジックは、サーバー TP で定義されています。

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

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

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

    1. TCP トランスポート コンポーネントからメッセージが受信されます。

    2. メッセージ バッファーが読み取られます

      TI プロキシで次の操作が実行されます。

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

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

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

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

    メインフレームの構成と TCP/IP 用のサーバー アプリケーションの作成については、TCP/IP V3R2 for MVS: CICS TCP/IP ソケット インターフェイス ガイド (IBM ドキュメント #SC31-7131) を参照してください。

関連項目

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