Hitachi

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


5.1.12 受信メッセージ判定UOCインタフェース

受信メッセージ判定UOCは,次に示す形式で呼び出します。なお,UOCの関数名称はユーザの任意です。

〈この項の構成〉

(1) 形式

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

(2) 説明

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

(3) パラメタの内容

(a) dctcp_uoc_msgrepの内容

typedef struct {
    DCLONG pro_kind;           …プロトコル種別
    char cn_name[9];           …コネクションID
    char reserve1[7];          …予備
    char le_name[9];           …論理端末名称
    char reserve2[7];          …予備
    DCLONG snd_status;         …送信状態
    char *rcv_data_adr;        …受信メッセージ格納アドレス
    DCLONG rcv_data_size;      …受信メッセージ長
    DCLONG msg_type;           …メッセージ種別
    DCLONG reason;             …理由コード
    DCLONG msg_reply;          …送達確認メッセージの送信要否
    char *snd_data_adr;        …送達確認メッセージ格納アドレス
    DCLONG snd_buff_size;      …送達確認メッセージ格納バッファサイズ
    DCLONG snd_data_size;      …送達確認メッセージ長
    DCLONG snd_cont;           …送信処理の継続可否
    DCLONG rtn_detail;         …詳細リターンコード
    char reserve3[16];         …予備
}dctcp_uoc_msgrep;

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

(a) dctcp_uoc_msgrep

  • pro_kind

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

    DCMCF_UOC_PRO_TCP

    TCP/IPプロトコル

  • cn_name

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

  • le_name

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

  • snd_status

    送信状態が設定されます。DCTCP_UOC_MR_ST_SNDが設定されている場合,送受信メッセージの衝突が発生しています。

    DCTCP_UOC_MR_ST_IDL

    未送信

    DCTCP_UOC_MR_ST_SND

    送信処理中

  • rcv_data_adr

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

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

  • rcv_data_size

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

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

  • snd_data_adr

    送達確認メッセージを格納するバッファのアドレスが設定されます。

    ユーザは,このパラメタを使用して送達確認メッセージを編集します。

  • snd_buff_size

    送達確認メッセージを格納するバッファサイズが設定されます。

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

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

(a) dctcp_uoc_msgrep

  • msg_type

    受信したメッセージの種別を設定します。

    DCTCP_UOC_MR_MT_INFO

    一方送信メッセージ

    DCTCP_UOC_MR_MT_ACK

    送達確認メッセージ

    DCTCP_UOC_MR_MT_IGN

    破棄メッセージ

    DCTCP_UOC_MR_MT_CLS

    コネクション解放

  • reason

    破棄メッセージおよびコネクション解放を指定するときの理由を設定します。この理由コードはログメッセージ(KFCA14849-I,KFCA14850-I)に出力されます。値はユーザの任意に設定します。msg_typeが,DCTCP_UOC_MR_MT_IGN,DCTCP_UOC_MR_MT_CLSの場合だけ有効です。

  • msg_reply

    送達確認メッセージの送信要否を設定します。msg_typeがDCTCP_UOC_MR_MT_INFOの場合だけ有効です。

    DCTCP_UOC_MR_REP_ON

    送達確認メッセージの送信要

    DCTCP_UOC_MR_REP_OFF

    送達確認メッセージの送信不要

  • snd_data_size

    送達確認メッセージ長を設定します。msg_typeがDCTCP_UOC_MR_MT_INFOであり,かつmsg_replyがDCTCP_UOC_MR_REP_ONの場合だけ有効です。

  • snd_cont

    仕掛り中の送信処理を継続するかどうかを設定します。snd_statusがDCTCP_UOC_MR_ST_SNDの場合で,msg_typeがDCTCP_UOC_MR_MT_INFOまたはDCTCP_UOC_MR_MT_IGNのときだけ有効です。

    DCTCP_UOC_MR_SC_CONT

    送信処理を継続します。

    DCTCP_UOC_MR_SC_RSND

    送信処理を中断します。送信中のメッセージは,受信処理および送達確認メッセージの送信処理完了後,再送します。

    DCTCP_UOC_MR_SC_STOP

    論理端末を閉塞し,送信処理を停止します。

  • rtn_detail

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

(6) リターン値

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

リターン値

意味

DCTCP_UOC_MR_OK

正常リターン

DCTCP_UOC_MR_NG

エラーリターン

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

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

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