4.1.2 入力メッセージ編集UOCインタフェース

入力メッセージ編集UOCは,次に示す形式で呼び出します。

<この項の構成>
(1) 形式
(2) 説明
(3) パラメタの内容
(4) MCFが値を設定する項目
(5) ユーザが値を設定する項目
(6) リターン値
(7) パラメタとバッファの関係
(8) バッファインタフェース

(1) 形式

ANSI C,C++の場合

#include <dcmcf.h>
#include <dcmotm.h>
#include <dcmcfuoc.h>
DCLONG    uoc_func(dcmcf_uoc_min_n *parm)

K&R版 Cの場合

#include <dcmcf.h>
#include <dcmotm.h>
#include <dcmcfuoc.h>
DCLONG   uoc_func(parm)

dcmcf_uoc_min_n  *parm ;

(2) 説明

uoc_func(入力メッセージ編集UOC)を呼び出すとき,MCFは次に示す所定のパラメタをparmに設定します。

(3) パラメタの内容

(a) dcmcf_uoc_min_nの内容

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;

(b) dcmcf_uocbuff_list_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;

(c) dcmcf_uocbufinf_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;

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

(a) dcmcf_uoc_min_n
(b) dcmcf_uocbuff_list_n(バッファリスト)
(c) dcmcf_uocbufinf_n(バッファ情報)

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

(a) dcmcf_uoc_min_n
(b) dcmcf_uocbuff_list_n(バッファリスト)
(c) dcmcf_uocbufinf_n(バッファ情報)

(6) リターン値

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

リターン値意味
DCMCF_UOC_MSG_OK正常リターン(編集バッファでスケジューリング)
DCMCF_UOC_MSG_OK_RCV正常リターン(受信バッファでスケジューリング)
DCMCF_UOC_MSG_NGメッセージ編集エラー

(7) パラメタとバッファの関係

UOCインタフェース用のパラメタとバッファの関係を次の図に示します。

図4-1 UOCインタフェース用のパラメタとバッファの関係

[図データ]

(8) バッファインタフェース

入力メッセージ編集UOCを使用する場合,APDU連結があるかどうかによって,バッファのインタフェースが異なります。

(a) APDU連結がない場合

APDU連結がない場合,セグメント数は1になります。ユーザセグメントは,バッファ情報エリアの1番目が使用されます。

APDU連結がない場合のバッファインタフェースを次の図に示します。

図4-2 入力メッセージ編集UOCのバッファインタフェース(APDU連結なし)

[図データ]

(b) APDU連結がある場合

APDU連結がある場合,複数セグメントのメッセージが入力されます。第1セグメントは,「(a) APDU連結がない場合」と同様にバッファ情報エリアの1番目に入ります。第2セグメント以下は,各セグメントの制御情報およびパラメタと,ユーザ情報とがそれぞれ異なるバッファ情報エリアに入ります。

APDU連結がある場合のバッファインタフェースを次の図に示します。

図4-3 入力メッセージ編集UOCのバッファインタフェース(APDU連結あり)

[図データ]

TP1/NET/OSI-TPでは,受信バッファ数に関係なく,使用できる編集バッファ数は一つだけです。編集バッファでスケジューリングをする場合,受信メッセージの編集後,連結させたメッセージを編集バッファに設定してください。受信メッセージの連結の仕組みを次の図に示します。

図4-4 受信メッセージの連結

[図データ]