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(); }