Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 OpenTP1 運用と操作


1.4.1 MCF通信サービスのMCFメイン関数の作成方法

メッセージ送受信機能を使用する場合,使用するプロトコルごとにMCF通信サービス用のMCFメイン関数をコーディングし,コンパイルおよびリンケージを行ってMCF通信サービスの実行形式プログラムを作成する必要があります。

MCFメイン関数ではスタート関数(dc_mcf_svstart)を発行します。

UOCを使用する場合は,MCFメイン関数でUOCの関数アドレスを指定してください。UOCは,MCFメイン関数と同じ言語(K&R版 C,ANSI C,またはC++)で作成してください。

なお,TP1/NET/XMAP3使用時は,UOC内で使用するマッピングサービスを,あらかじめMCFメイン関数で開始しておく必要があります。マッピングサービスの開始については,マニュアル「OpenTP1 プロトコル TP1/NET/XMAP3編」を参照してください。

プロトコルとUOCを定義するMCFメイン関数のコーディング概要を図1-5図1-6に示します。

図1‒5 プロトコルとUOCを定義するMCFメイン関数のコーディング概要(ANSI C,C++の場合)

[図データ]

  1. プロトコル提供ヘッダファイルを取り込みます。

    dcm××××.hの××××はプロトコルごとに変わります。マニュアル「OpenTP1 プロトコル」の該当するプロトコル編を参照してください。

  2. 使用するUOCの関数をextern宣言します。UOCのリターン値はDCLONG型にしてください。

    UOCを使用する場合だけコーディングしてください。

    使用できるUOCはプロトコルごとに変わります。マニュアル「OpenTP1 プロトコル」の該当するプロトコル編を参照してください。

  3. UOCテーブルをextern宣言します。

    UOCを使用する場合だけコーディングしてください。

  4. 各UOCの関数アドレスを,次に示すシステム提供変数に設定します。

    dcmcf_uoctbl.msgrcv /*入力メッセージ編集UOCアドレス*/

    dcmcf_uoctbl.msgsend /*出力メッセージ編集UOCアドレス*/

    UOCを使用する場合だけコーディングしてください。

    上記以外のUOCの関数アドレスを設定する変数については,マニュアル「OpenTP1 プロトコル」の該当するプロトコル編を参照してください。

  5. スタート関数を発行します。必ずコーディングしてください。

    スタート関数を呼び出したあとは,MCFメイン関数に制御が戻りません。このため,スタート関数のあとにコーディングした処理は実行されませんので,ご注意ください。

図1‒6 プロトコルとUOCを定義するMCFメイン関数のコーディング概要(K&R版 Cの場合)

[図データ]

  1. プロトコル提供ヘッダを取り込みます。

    dcm××××.hの××××はプロトコルごとに変わります。マニュアル「OpenTP1 プロトコル」の該当するプロトコル編を参照してください。

  2. 使用するUOCの関数をextern宣言します。UOCのリターン値はDCLONG型にしてください。

    UOCを使用する場合だけコーディングしてください。

    使用できるUOCはプロトコルごとに変わります。マニュアル「OpenTP1 プロトコル」の該当するプロトコル編を参照してください。

  3. UOCテーブルをextern宣言します。

    UOCを使用する場合だけコーディングしてください。

  4. 各UOCの関数アドレスを,次に示すシステム提供変数に設定します。

    dcmcf_uoctbl.msgrcv /*入力メッセージ編集UOCアドレス*/

    dcmcf_uoctbl.msgsend /*出力メッセージ編集UOCアドレス*/

    UOCを使用する場合だけコーディングしてください。

    上記以外のUOCの関数アドレスを設定する変数については,マニュアル「OpenTP1 プロトコル」の該当するプロトコル編を参照してください。

  5. スタート関数を発行します。必ずコーディングしてください。

    スタート関数を呼び出したあとは,MCFメイン関数に制御が戻りません。このため,スタート関数のあとにコーディングした処理は実行されませんので,ご注意ください。