次の方法で共有


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

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

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

  • アプリケーション・プログラムから TRM 応答を受け取ります。

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

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

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

    次の図は、クライアント、標準 CICS リスナー、コンカレント サーバー、メインフレーム トランザクション プログラムの間で発生するワークフローをまとめたものです。 かっこ内の数値は、イベントが発生するおおよその順序を示します。 この図の後に、イベントの詳細な説明を示します。

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

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

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

  2. TI ランタイムは、TI オートメーション プロキシを呼び出します。

  3. アプリケーションが COM+ コンポーネントの場合、TI オートメーション プロキシは次のようになります。

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

    2. 自動化データ型を COBOL データ型にマップします。

      アプリケーションが .NET Framework アセンブリの場合、TI オートメーション プロキシは次のようになります。

    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 は、COMMAREA を使用して TI とサーバー TP の間でデータを渡すために使用される Microsoft サンプル 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 オートメーション プロキシは応答データを受信し、応答を処理します。 TI オートメーション プロキシ:

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

    2. メッセージ バッファーを読み取ります。

      アプリケーションが COM+ コンポーネントの場合、TI オートメーション プロキシは次のようになります。

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

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

      アプリケーションが .NET Framework アセンブリの場合、TI オートメーション プロキシは次のようになります。

    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 プログラミング モデルを実装する方法を示すサンプル コードが含まれています。 サンプル コードは、 \installation ディレクトリ\SDK\Samples\AppInt にあります。 Microsoft Visual Studio を起動し、任意のチュートリアルを開き、 Readme の指示に従います。

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

こちらもご覧ください

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