TCP トランザクション要求メッセージ (TRM) ユーザー データ プログラミング モデルを使用すると、TI とホスト TP の間でデータとパラメーターを直接交換できます。 TCP TRM ユーザー データ モデルは、CICS コンカレント サーバー モデルに基づいています。 標準リスナーは、2 つのネットワーク交換を使用して 1 つのトランザクション プログラムを実行し、クライアントで次の操作を行う必要があります。
トランザクション要求メッセージ (TRM) を標準リスナーに送信する
アプリケーション・プログラムから TRM 応答を受け取る
アプリケーション要求データ ストリームをサーバー トランザクション プログラムに送信する
サーバー・トランザクション・プログラムからアプリケーション応答データを受信する
次の図は、クライアント、標準 CICS リスナー、およびコンカレント サーバーの間で発生するワークフローをまとめたものです。 かっこ内の数値は、イベントが発生するおおよその順序を示します。 この図の後に、イベントの詳細な説明を示します。
クライアントが既定のリスナーを開始するプロセス。このリスナーは同時サーバーに呼び出しを渡し、クライアントからデータを送受信します。
TCP TRM ユーザー データ プログラミング モデルの概要ワークフロー図
TCP TRM ユーザー データ プログラミング モデルは次のように動作します。
アプリケーションは、コンポーネント サービスまたは .NET Framework で構成された TI .NET オブジェクト内のメソッドを呼び出します。
TI ランタイムは TI プロキシを呼び出します。
TI プロキシ:
TI デザイナーによって以前に作成されたアセンブリとメタデータを読み取ります。
.NET Framework データ型を COBOL データ型にマップします。
その後、TI プロキシは次の操作を行います。
変換ルーチンを呼び出して、アプリケーション・データをメインフレーム COBOL タイプに変換します。
COBOL 宣言またはコピーブックを表すフラット化されたデータ ストリーム バッファーを構築します。
TCP トランスポート コンポーネントにメッセージを渡します。
TI TCP トランスポートは、メインフレーム コンピューターのインターネット プロトコル (IP) アドレスとリスナーのポート アドレスを使用して、標準リスナーに接続要求を送信します。
標準リスナーは接続要求を受け入れ、TRM を送信するように TI ランタイムに指示します。 その後、標準リスナーは TRM の信号を待ちます。
TRM は、TRANID を使用して呼び出されるサーバー TP を識別する書式設定されたデータ レコードです。 CICS リスナー TP は特殊なメインフレーム TP であり、その主な機能は、TCP/IP を実行しているクライアント アプリケーションによって送信されたサーバー TP 呼び出しを受信することです。
IBM 提供の標準リスナー TP の TRANID は CSKL です。 プログラム制御テーブル (PCT) に表示されるリスナー TP の TP 名がEZACIC02。
TI ランタイムは TRM をフォーマットし、標準リスナーに送信します。 TI は TRM 応答を待機します。
標準リスナーは TRM を受信し、TI ランタイムに受信確認を送信してから、TRM の内容を読み取ります。 リスナーは、TRM 内の情報を解釈し、要求を処理する同時実行サーバー プログラムのトランザクション ID を抽出します。
標準リスナーは、EXEC CICS Start を使用して、TRM (Mscmtics.cbl サンプル アプリケーション) の TRANID によって識別される同時実行サーバー TP プログラムを開始します。
Mscmtics.cbl は、COMMAREA を使用して TI とサーバー TP の間でデータを渡すために使用される Microsoft サンプル 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) を呼び出します。 標準リスナーは TRM 応答を送信できません。 TRM 応答は、クライアントがアプリケーション要求データを送信する前にトランザクション・プログラムを開始するための時間を許可する同期プロセスを表します。 この同期プロセスは、内部 CICS アーキテクチャの考慮事項が原因で必要です (要求が行われた後にトランザクション・プログラムがいつ開始されるのかは保証されません)。
標準 CICS リスナーが同時実行サーバー・トランザクションの開始コマンドを発行すると、標準リスナーはアプリケーション処理ループから外れ、別の着信要求を自由にリッスンできます。
同時実行サーバーが実行されると、標準リスナーによって送信されたトランザクション初期メッセージ (TIM) が読み取られます。
TIM は、サーバーが実行されている TCP/IP 環境を記述し、同時実行サーバーが COMTI TCP トランスポートとの通信に使用する TCP/IP ソケット情報と、同時実行サーバーが実行動作をカスタマイズするために使用するクライアント メッセージ ヘッダーを含みます。
同時実行サーバー:
TRM 応答の書式を設定します。
TRM 応答を TI TCP トランスポートに送信して、アプリケーション要求データを送信できるようになったことを通知します。
受信を発行し、アプリケーション要求データを待機します。
TRM 応答の送信は、標準リスナー交換シーケンスの最初の部分を完了します。
TI は TRM を評価し、データをコンカレント サーバーに渡します。 TI はソケットのシャットダウンも送信し、TI は応答データを待機します。
コンカレント サーバーがアプリケーション要求データを受信すると、サーバーはデータに対してビジネス ロジックを実行します。
サーバーが要求の処理を完了し、応答を作成したら、応答データを準備してから、応答をクライアントに直接送信します。 アプリケーション データの処理を完了すると、第 2 交換シーケンスの終了が通知されます。
同時実行サーバーがソケットを閉じます。
TI プロキシは応答データを受信し、応答を処理します。 TI プロキシ:
TCP トランスポート コンポーネントからメッセージを受信します。
メッセージ バッファーを読み取ります。
TI プロキシ:
COBOL データ型を .NET Framework データ型にマップします。
変換ルーチンを呼び出して、メインフレーム COBOL タイプをアプリケーション・データに変換します。
TI ランタイムは、変換されたデータを、メソッドを呼び出した .NET Framework アプリケーションに送り返します。
このモデルを実装するには、同時実行サーバー プログラム (Mscmtics.cbl) によって渡されたアプリケーションを実行するために、IP アドレス、ポート番号、および CICS プログラム名を TI に指定する必要があります。 このモデルでは、IBM 提供のデフォルト・リスナー (EZACIC02) を CICS 内にインストールする必要があります。 CICS IBM デフォルト・リスナーは、IBM が提供するデフォルト設定を使用します。
Host Integration Server には、TCP TRM Link プログラミング モデルを実装する方法を示すサンプル コードが含まれています。 サンプル コードは、 \installation ディレクトリ\SDK\Samples\AppInt にあります。 Visual Studio を起動し、使用するチュートリアルのいずれかを開き、 Readme の指示に従います。
メインフレームの構成と TCP/IP 用のサーバー・アプリケーションの作成については、MVS 用 TCP/IP V3R2: CICS TCP/IP ソケット・インターフェース・ガイド (IBM ドキュメント #SC31-7131) を参照してください。
こちらもご覧ください
トランザクション インテグレーター コンポーネント
トランザクション要求メッセージ
データ型を Automation から z/OS COBOL に変換する]
z/OS COBOL から Automation へのデータ・タイプの変換
CICS コンポーネント
TI ランタイム
適切なプログラミング モデルの選択
プログラミング モデル