Hitachi

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


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

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

〈この項の構成〉

(1) 形式

 ANSI C,C++の場合
#include <dcmcf.h>
#include <dcmcfuoc.h>
#include <dcmtcpu.h>
DCLONG  uoc_func(dcmcf_uoc_min_n *parm)
 K&R版 Cの場合
#include <dcmcf.h>
#include <dcmcfuoc.h>
#include <dcmtcpu.h>
DCLONG    uoc_func(parm)
 
dcmcf_uoc_min_n   *parm ;
注※

dcmtcp_min_ifa(プロトコル個別インタフェース)を参照する場合に指定が必要です。

(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;          …プロトコル個別インタフェース領域アドレス
    DCLONG rtn_detail;           …詳細リターンコード
    char reserve3[8];            …予備
} 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;

(d) dcmtcp_min_ifa(プロトコル個別インタフェース)の内容

typedef struct {
    char cont_status;           …継続問い合わせ応答ステータス
    char reserve1[63];          …予備
} dcmtcp_min_ifa;

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

(a) dcmcf_uoc_min_n

  • pro_kind

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

    DCMCF_UOC_PRO_TCP

    TCP/IPプロトコル

  • le_name

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

  • rcv_prim

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

    DCMCF_UOC_RCV_BRD

    一方送信メッセージの受信および問い合わせメッセージの受信

    DCMCF_UOC_RCV_REP_RE

    同期型メッセージの受信

    DCMCF_UOC_RCV_REP_SR

    同期型メッセージの送受信関数によるメッセージの受信

  • buflist_adr

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

  • ebuflist_adr

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

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

  • aplname

    アプリケーション名が設定されます。設定するアプリケーション名を次の表に示します。

    受信サービスプリミティブ

    継続問い合わせ応答ステータス

    論理端末定義(mcftalcle)の-vオプションの指定

    設定するアプリケーション名

    DCMCF_UOC_RCV_BRD

    継続問い合わせ応答中

    任意

    応答メッセージの送信時に指定した次起動アプリケーション名(次起動アプリケーション名を省略した場合,応答メッセージの送信を行ったアプリケーション名)

    継続問い合わせ応答中以外(問い合わせ応答形態および継続問い合わせ応答形態のメッセージ送受信機能未使用の場合を含みます)

    あり

    論理端末定義(mcftalcle)の-vオプションの指定値

    なし

    なし(ヌル文字で埋められます)

    DCMCF_UOC_RCV_REP_RE

    DCMCF_UOC_RCV_REP_SR

    任意

    任意

    なし(ヌル文字で埋められます)

  • pro_indv_ifa

    プロトコル個別インタフェース領域のアドレスが設定されます。

    設定する領域の内容を次の表に示します。

    問い合わせ応答形態および継続問い合わせ応答形態のメッセージ送受信機能(mcftalccn -l replymsg指定値)

    受信サービスプリミティブ

    設定する領域の内容

    使用(yes)

    DCMCF_UOC_RCV_BRD

    dcmtcp_min_ifaの内容を設定します。

    上記以外

    MCF使用領域です。

    未使用(no)

    任意

    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で使用するパラメタです。

(d) dcmtcp_min_ifa(プロトコル個別インタフェース)

  • cont_status

    継続問い合わせ応答ステータスが設定されます。

    'c'

    継続問い合わせ応答中

    'n'

    継続問い合わせ応答中以外

(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‒4 UOCインタフェース用のパラメタとバッファの関係

[図データ]

注※1

mcftalccnコマンドの-eオプションを指定しない場合,NULLとなり,バッファリストとバッファは確保されません。

注※2

バッファ情報は次の形式をしています。

[図データ]