分散トランザクション処理機能 OpenTP1 プロトコル TP1/NET/OSI-TP編

[目次][用語][索引][前へ][次へ]

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 受信メッセージの連結

[図データ]