入力メッセージ編集UOCは,次に示す形式で呼び出します。
#include <dcmcf.h>
#include <dcmotm.h>
#include <dcmcfuoc.h>
DCLONG uoc_func(dcmcf_uoc_min_n *parm)
#include <dcmcf.h>
#include <dcmotm.h>
#include <dcmcfuoc.h>
DCLONG uoc_func(parm)
dcmcf_uoc_min_n *parm ;
uoc_func(入力メッセージ編集UOC)を呼び出すとき,MCFは次に示す所定のパラメタをparmに設定します。
typedef struct {
DCLONG pro_kind; …プロトコル種別
char le_name[9]; …論理端末名称
char reserve1[7];
DCLONG rcv_prim; …受信サービスプリミティブ
dcmcf_uocbuff_list_n *buflist_adr;
…受信バッファリストアドレス
dcmcf_uocbuff_list_n *ebuflist_adr;
…編集バッファリストアドレス
char aplname[9]; …アプリケーション名
char reserve2[7];
char *pro_indv_ifa; …MCF使用領域
DCLONG rtn_detail; …詳細リターンコード
char reserve3[16];
} dcmcf_uoc_min_n;
typedef struct {
DCLONG buf_num; …バッファ情報数
DCLONG used_buf_num; …使用バッファ情報数
char reserve1[8];
dcmcf_uocbufinf_n buf_array[DCMCF_UOC_BUFF_MAX];
…バッファ情報
} dcmcf_uocbuff_list_n;
typedef struct {
char *buf_adr; …バッファアドレス
DCLONG buf_size; …バッファ最大長
DCLONG seg_size; …バッファ使用長
char reserve1[4];
dcmcfuoc_w_type buff_id; …MCF内部情報1
DCLONG buff_addr; …MCF内部情報2
char reserve2[4];
} dcmcf_uocbufinf_n;
uoc_func()は次のコードでリターンしてください。
リターン値 | 意味 |
---|---|
DCMCF_UOC_MSG_OK | 正常リターン(編集バッファでスケジューリング) |
DCMCF_UOC_MSG_OK_RCV | 正常リターン(受信バッファでスケジューリング) |
DCMCF_UOC_MSG_NG | メッセージ編集エラー |
UOCインタフェース用のパラメタとバッファの関係を次の図に示します。
図4-1 UOCインタフェース用のパラメタとバッファの関係
入力メッセージ編集UOCを使用する場合,APDU連結があるかどうかによって,バッファのインタフェースが異なります。
APDU連結がない場合,セグメント数は1になります。ユーザセグメントは,バッファ情報エリアの1番目が使用されます。
APDU連結がない場合のバッファインタフェースを次の図に示します。
図4-2 入力メッセージ編集UOCのバッファインタフェース(APDU連結なし)
APDU連結がある場合,複数セグメントのメッセージが入力されます。第1セグメントは,「(a) APDU連結がない場合」と同様にバッファ情報エリアの1番目に入ります。第2セグメント以下は,各セグメントの制御情報およびパラメタと,ユーザ情報とがそれぞれ異なるバッファ情報エリアに入ります。
APDU連結がある場合のバッファインタフェースを次の図に示します。
図4-3 入力メッセージ編集UOCのバッファインタフェース(APDU連結あり)
TP1/NET/OSI-TPでは,受信バッファ数に関係なく,使用できる編集バッファ数は一つだけです。編集バッファでスケジューリングをする場合,受信メッセージの編集後,連結させたメッセージを編集バッファに設定してください。受信メッセージの連結の仕組みを次の図に示します。
図4-4 受信メッセージの連結