Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 OpenTP1 プログラム作成の手引


3.10.11 MCFイベントのメッセージ形式

MCFイベントとして渡される論理メッセージは,MCFイベント情報と,処理できなかったメッセージから構成されます。処理できなかったメッセージは,通知されたMCFイベントによって異なります。

ERREVT1の場合

アプリケーションを特定できなかったメッセージ

ERREVT2の場合

アプリケーションの閉塞などで,目的のアプリケーションに渡せなかったメッセージ

ERREVT3の場合

異常終了したMHP(アプリケーション)で受信したメッセージ

ERREVT4の場合

タイマ起動のアプリケーションプログラムの起動で,開始するMHPに渡そうとしたメッセージ

ERREVTAの場合

出力キューで滞留していたメッセージ

次に示すMCFイベントの場合は,MCFイベント情報だけが渡されます。処理できなかったメッセージに該当するものはありません。

〈この項の構成〉

(1) MCFイベントのメッセージ構造

MCFイベントをMCFイベント処理用MHPで受信する場合は,通常のメッセージを受信する関数(dc_mcf_receive関数)を使います。

MCFイベントは,複数セグメントの論理メッセージとして,MCFイベント処理用MHPに渡されます。先頭セグメントにはMCFイベント情報が,2番目以降のセグメントには処理できなかったメッセージのセグメントが設定されています。このとき,元の先頭セグメントは2番目のセグメントになり,以降一つずつずれてMCFイベントのセグメントとなります。

また,通信イベント障害時のエラーイベント通知機能(アプリケーション属性定義mcfaalcapの-nオプションにerrevt=yesを指定)によって起動されたMCFイベント処理用MHPにERREVT2またはERREVT3が渡されます。先頭セグメントにはMCFイベント情報が,2番目のセグメントに障害となった通信イベントのMCFイベント情報が設定されています。

MCFイベントとして渡される論理メッセージのセグメント形式を次の図に示します。

図3‒34 MCFイベントとして渡される論理メッセージのセグメント

[図データ]

(2) 通知されるデータ形式

MCFイベント情報は,MCFイベント処理用MHPをコーディングした高級言語(C言語,またはCOBOL言語)に合わせて通知されます。

C言語のMHPでは,MCFイベント情報を構造体で受け取れます。この構造体はヘッダファイル<dcmcf.h>で定義されています。MCFイベント情報を処理するMHPでは,#includeで<dcmcf.h>をインクルードしてください。また,通信イベントによっては,通信プロトコル製品別のヘッダファイルに,構造体を定義している場合もあります。

COBOL言語のMHPでは,MCFイベント情報をセグメントの並びで受け取れます。このセグメントのバイト位置で必要な情報を取り出します。

MCFイベント情報のデータ形式は,通信プロトコル対応製品(TP1/NET/××××)によって異なります。次に示すMCFイベント情報のデータ形式については,マニュアル「OpenTP1 プロトコル」の該当するプロトコル編を参照してください。

ERREVT4のMCFイベント情報のデータ形式については,マニュアル「OpenTP1 プログラム作成リファレンス」の該当する言語編を参照してください。