Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 OpenTP1 プロトコル TP1/NET/User Datagram Protocol編


5.1.5 送信メッセージの通番編集

〈この項の構成〉

(1) 出力通番編集

送信メッセージの通番編集UOCでは,受け取った出力通番を基に,ユーザ独自の処理ができます。例えば,出力通番を使用して編集した送信メッセージを再送要求します。

送信メッセージの通番編集UOCを起動する場合,メッセージ送信の関数で,出力通番を付けるように設定してください。送信メッセージの通番編集UOCは,UAPがsend関数またはresend関数を発行したときに,MCFによって起動されます。

(2) OpenTP1への組み込み方法

UAPのメイン関数の中に,UOCの関数アドレスを登録しておきます。UAPのメイン関数に登録するdc_mcf_regster関数の形式を次に示します。

(a) 形式

ANSI C,C++の場合

#include <dcmcf.h>
int dc_mcf_regster(DCLONG flags, DCLONG (*uoc_addr)(DCLONG flags,
                   char *termname, DCLONG sendno, DCLONG sendid,
                   DCLONG dataleng, char *senddata))

K&R版 Cの場合

#include <dcmcf.h>
int dc_mcf_regster(flags, uoc_addr)
DCLONG flags;
DCLONG (*uoc_addr)();

(b) ユーザが値を設定する引数

  • flags

    DCMCF_SEND_UOCを指定します。

  • uoc_addr

    flagsに対応するUOCのアドレスを指定します。

(c) リターン値

リターン値

意味

DC_OK

正常リターン

DCMCFER_INVALID_ARGS

引数の指定が間違っています。

DCMCFER_NOMEM

ローカルメモリが不足しました。

(d) メイン関数への登録例

UAPのメイン関数への登録例を次に示します。

  • SPPの場合

    main()
    {
        extern DCLONG send_uoc();
     
        dc_rpc_open();
        dc_mcf_open();
        dc_mcf_regster(DCMCF_SEND_UOC,send_uoc);
        dc_rpc_mainloop();
        dc_mcf_close();
        dc_rpc_close();
    }
  • MHPの場合

    main()
    {
        extern DCLONG send_uoc();
     
        dc_rpc_open();
        dc_mcf_open();
        dc_mcf_regster(DCMCF_SEND_UOC,send_uoc);
        dc_mcf_mainloop();
        dc_mcf_close();
        dc_rpc_close();
    }