Hitachi

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


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

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

〈この項の構成〉

(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;               …バッファアドレス
    DCULONG buf_size;              …バッファ最大長
    DCULONG seg_size;              …バッファ使用長
    char   reserve1[4];
    dcmcfuoc_w_type  buff_id;      …MCF内部情報1
    DCMLONG buff_addr;             …MCF内部情報2
    char   reserve2[4];
} dcmcf_uocbufinf_n;

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

(a) dcmcf_uoc_min_n

  • pro_kind

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

    DCMCF_UOC_PRO_TP

    OSI TPプロトコル

  • le_name

    メッセージを入力した論理端末の名称が設定されます。

  • rcv_prim

    受信サービスプリミティブとして,次のどちらかの値が設定されます。

    DCMCF_UOC_RCV_BRD

    ダイアログ開始要求(TP-BEGIN-DIALOGUEind)受信

    DCMCF_UOC_RCV_REP_RE

    上記以外の関数受信

  • buflist_adr

    受信用バッファリストのアドレスが設定されます。

  • ebuflist_adr

    編集用バッファリストのアドレスが設定されます。

    メッセージ編集用バッファが未定義の場合,つまり,コネクション定義(mcftalccn)の-eオプションを省略した場合,ebuflist_adrにはNULLが設定されます。

  • aplname

    論理端末定義(mcftalcle)の-vオプションで指定したアプリケーション名,またはダイアログ開始要求時に受信側TPSU名称で設定したアプリケーション名が設定されます。

  • pro_indv_ifa

    MCFで使用するパラメタです。

(b) dcmcf_uocbuff_list_n(バッファリスト)

  • buf_num

    バッファ情報の数として1が設定されます。

  • buf_array

    バッファ情報の配列が設定されます。バッファ情報は,buf_numの数だけ設定されます。

(c) dcmcf_uocbufinf_n(バッファ情報)

  • buf_adr

    バッファのアドレスが設定されます。

  • buf_size

    バッファの最大長が設定されます。

  • seg_size

    送信,または受信用バッファリストの場合だけ,バッファの使用長が設定されます。

  • buff_id,buff_addr

    MCFで使用するパラメタです。

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

(a) dcmcf_uoc_min_n

  • aplname

    UOCで決定したアプリケーション名を設定します。

  • rtn_detail

    詳細リターンコードを設定します。

    このコードは,UOCがDCMCF_UOC_MSG_NGをリターンしたときに,MCFに渡されます。MCFは,詳細リターンコードをメッセージログファイルに出力します。

    詳細リターンコードは,-19999〜-19000の範囲で設定してください。

(b) dcmcf_uocbuff_list_n(バッファリスト)

  • used_buf_num

    使用したバッファ情報の数を設定します。

    使用したバッファ情報数には,1を設定してください。

(c) dcmcf_uocbufinf_n(バッファ情報)

  • seg_size

    バッファの使用長を設定します。

(6) リターン値

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

リターン値

意味

DCMCF_UOC_MSG_OK

正常リターン(編集バッファでスケジューリング)

DCMCF_UOC_MSG_OK_RCV

正常リターン(受信バッファでスケジューリング)

DCMCF_UOC_MSG_NG

メッセージ編集エラー

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

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

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

[図データ]

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

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

(a) APDU連結がない場合

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

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

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

[図データ]

(b) APDU連結がある場合

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

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

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

[図データ]

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

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

[図データ]