Hitachi

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


5.1.14 受信メッセージの保留判定UOCインタフェース

受信メッセージ保留判定UOCは,次に示す形式で呼び出します。

〈この項の構成〉

(1) 形式

 ANSI C,C++の場合
#include <dcmcf.h>
#include <dcmcfuoc.h>
#include <dcmtcpu.h>
DCLONG msghld_uoc(dctcp_uoc_msghld *parm)
 K&R版 Cの場合
#include <dcmcf.h>
#include <dcmcfuoc.h>
#include <dcmtcpu.h>
DCLONG    msghld_uoc(parm)
 
dctcp_uoc_msghld *parm;

(2) 説明

msghld_uoc(受信メッセージ保留判定UOC)を呼び出すとき,MCFは次に示す所定のパラメタをparmに設定します。

(3) パラメタの内容

(a) dctcp_uoc_msghldの内容

typedef struct {
    DCLONG pro_kind;           …プロトコル種別
    char cn_name[9];           …コネクションID
    char reserve1[7];          …予備
    char le_name[9];           …論理端末名称
    char reserve2[7];          …予備
    char reserve3[4];          …予備
    char *rcv_data_adr;        …受信メッセージ格納アドレス
    DCLONG rcv_data_size;      …受信メッセージ長
    DCLONG msg_hld;            …受信メッセージの保留要否
    DCLONG rtn_detail;         …詳細リターンコード
    char reserve4[20];         …予備
}dctcp_uoc_msghld;

(4) MCFが値を設定する項目

(a) dctcp_uoc_msghld

  • pro_kind

    プロトコル種別として,次の値が設定されます。

    DCMCF_UOC_PRO_TCP

    TCP/IPプロトコル

  • cn_name

    メッセージを受信したコネクションIDが設定されます。

  • le_name

    cn_nameに対応する論理端末の名称が設定されます。

  • rcv_data_adr

    受信メッセージを格納したバッファのアドレスが設定されます。

    ユーザは,このパラメタを使用して受信メッセージを参照・編集できます。ただし,受信メッセージのメッセージ長は変更できません。

  • rcv_data_size

    受信メッセージ長が設定されます。

    UOCでこのパラメタを変更しても無効となります。

(5) ユーザが値を設定する項目

(a) dctcp_uoc_msghld

  • msg_hld

    受信メッセージを保留するかどうかを設定します。

    DCTCP_UOC_MH_HLD_ON

    受信したメッセージを保留します。

    保留したメッセージは同期型メッセージの受信関数を使用して受信してください。

    DCTCP_UOC_MH_HLD_OFF

    受信したメッセージを保留しません。

    TP1/NET/TCP/IPは受信メッセージを入力キューに書き込み,MHPを起動します。

  • rtn_detail

    UOCエラーリターン時の詳細リターンコードを設定します。

(6) リターン値

msghld_uoc()は次のコードでリターンしてください。

リターン値

意味

DCTCP_UOC_MH_OK

正常リターン

DCTCP_UOC_MH_NG

エラーリターン

(7) MCFメイン関数のコーディング例

受信メッセージ保留判定UOCをメイン関数に登録する場合のコーディング例を次に示します。

ANSI C,C++の場合
#include  <dcmtcp.h>
#include  <dcmtcpu.h>
 
extern DCLONG   msghld_uoc(dctcp_uoc_msghld *);
                                      /* 受信メッセージ保留判定UOC */
extern dcmcf_uoc_t dcmcf_uoctbl;
                                         /* UOCテーブルextern宣言 */
 
int main()
{
    dcmcf_uoctbl.msghld               /* 受信メッセージ保留判定UOC */
                   = (dcmcf_uocfunc)msghld_uoc;     /*アドレス設定 */
    dc_mcf_svstart();
    return 0;
 
}
K&R版 Cの場合
#include  <dcmtcp.h>
extern DCLONG        msghld_uoc();     /* 受信メッセージ保留判定UOC */
extern dcmcf_uoc_t dcmcf_uoctbl;         /* UOC テーブルextern宣言*/
 
main()
{
    dcmcf_uoctbl.msghld              /* 受信メッセージ保留判定UOC */
                   = msghld_uoc;                   /*アドレス設定 */
    dc_mcf_svstart();
}