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

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

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

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

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

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

    TCP TRM リンク モデルは、CICS 同時実行サーバー モデルが基になっています。 TCP TRM リンク モデルは、CICS 環境内での DPL サーバー アプリケーション プログラムの実行をサポートし、CICS LU6.2 リンク プログラミング モデルとの互換性を維持する Microsoft のバリエーションです。

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

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

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

  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. 標準リスナーによって接続要求が受け入れられ、TRM の送信が TI ランタイムに指示されます。 その後、標準リスナーにより TRM が待機されます。

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

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

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

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

  8. 標準リスナーにより、EXEC CICS Start を使用して、TRM の 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 にあります。 このモデルを使用する前に、コードをコンパイルし、リンクして、メインフレーム コンピューターにインストールする必要があります。

    注意

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

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

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

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

    注意

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

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

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

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

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

    1. 標準またはカスタムの TRM 応答が書式設定されます。

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

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

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

  11. TI ランタイムにより TRM が評価され、標準の EXEC CICS リンク呼び出しを使用して、CICS COMMAREA 経由で同時実行サーバー プログラムにデータが渡されます。 TI ランタイムは、ソケット (つまり 2 バイト) のシャットダウンも送信し、応答データを待機します。

  12. アプリケーション要求データを受信した同時実行サーバーにより、TRMs クライアント メッセージ ヘッダーで指定されていたサービスを提供するアプリケーション プログラムに対して、リンクが確立されます。 実際のサーバー アプリケーションを開始するには、CICS EXEC CICS LINK コマンドが使用されます。 Link コマンドにより、COMTI TCP トランスポートから受信されたアプリケーション データがメモリの共通領域 (COMMAREA) に渡されて、データに対するビジネス ロジックが実行されます。 すべてのビジネス ロジックは、サーバー TP で定義されています。

  13. サーバー アプリケーション プログラムは、要求の処理を完了し、応答を作成した後、EXEC CICS RETURN コマンドを発行して、同時実行サーバー (mscmtics.cbl) プログラムに制御を戻します。 サーバー TP により、応答データと標準またはカスタム TRM が準備され、COMMAREA からのデータが受け入れられた後、COMMAREA を通してアプリケーション応答データが TI TCP トランスポートに送り返されます。 アプリケーション データの処理の完了により、2 つ目の交換シーケンスの終わりが示されます。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

関連項目

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