TCP トランザクション要求メッセージのユーザー データ

TCP トランザクション要求メッセージ (TRM) ユーザー データ プログラミング モデルを使用すると、TI とホスト TP の間でデータとパラメーターを直接交換できます。 TCP TRM ユーザー データ モデルは、CICS 同時実行サーバー モデルが基になっています。 標準リスナーでは、2 つのネットワーク交換を使用して 1 つのトランザクション プログラムが実行され、クライアントで次のことを行う必要があります。

  • トランザクション要求メッセージ (TRM) を標準リスナーに送信します

  • アプリケーション プログラムから TRM 応答を受信します

  • アプリケーション要求データ ストリームをサーバー トランザクション プログラムに送信します

    サーバー トランザクション プログラムからアプリケーション応答データを受信します

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

    クライアントが既定のリスナーを開始し、クライアントからデータを送受信するプロセスを示す画像。
    このプロセスでは、クライアントによって開始された既定のリスナーにより、同時実行サーバーに呼び出しが渡された後、サーバーによってクライアントとの間でデータが送受信されます

TCP TRM ユーザー データ プログラミング モデルのワークフローの概要図

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

  1. アプリケーションによって、コンポーネント サービスまたは .NET Framework に構成された 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. 標準リスナーによって接続要求が受け入れられ、TRM の送信が TI ランタイムに指示されます。 その後、標準リスナーにより TRM が待機されます。

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

    IBM 提供の標準リスナー TP の TRANID は CSKL です。 プログラム制御テーブル (PCT) で使用されるリスナー TP の TP 名は EZACIC02 です。

  6. TI ランタイムにより、TRM が書式設定されて、標準リスナーに送信されます。 TI は、TRM 応答を待機します。

  7. 標準リスナーにより、TRM が受信され、TI ランタイムに受信確認が送信されてから、TRM の内容が読み取られます。 リスナーにより、TRM 内の情報が解釈され、要求を処理する同時実行サーバー プログラムのトランザクション ID が抽出されます。

  8. 標準リスナーにより、EXEC CICS Start を使用して、TRM (Mscmtics.cbl サンプル アプリケーション) の TRANID によって識別された同時実行サーバー TP プログラムが開始されます。

    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 リスナーによって閉じたソケットによって決まります。

  1. 標準リスナーにより、ホスト環境内のソケット アプリケーション プロトコル インターフェイス (API) が呼び出されます。 標準リスナーは TRM 応答を送信できません。 TRM 応答は、クライアントから送信されるアプリケーション要求データの前に、トランザクション プログラムが開始されるだけの時間があるようにする同期プロセスを表します。 この同期プロセスは、CICS アーキテクチャでの内部的な配慮のために必要です (要求が行われた後でトランザクション プログラムが開始されるタイミングについての保証はありません)。

    標準 CICS リスナーによって同時実行サーバー トランザクションの開始コマンドが発行された後、標準リスナーはアプリケーションの処理ループから外れるので、別の受信要求をリッスンすることができます。

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

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

  3. 同時実行サーバーで次の操作が実行されます。

    1. TRM 応答の書式が設定されます。

    2. TRM 応答が TI TCP トランスポートに送信されて、アプリケーション要求データを送信できるようになったことが通知されます。

    3. 受信が発行され、アプリケーション要求データが待機されます。

      TRM 応答の送信により、標準リスナーの交換シーケンスの最初の部分が完了します。

  4. TI によって TRM が評価されて、データが同時実行サーバーに渡されます。 TI はソケットのシャットダウンも送信し、TI は応答データを待機します。

  5. 同時実行サーバーがアプリケーション要求データを受信すると、サーバーはデータに対してビジネス ロジックを実行します。

  6. 要求の処理と応答の作成が完了した後、サーバーにより、応答データが準備され、応答がクライアントに直接送信されます。 アプリケーション データの処理の完了により、2 つ目の交換シーケンスの終わりが示されます。

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

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

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

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

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

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

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

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

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

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

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

関連項目

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