Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 OpenTP1 プログラム作成リファレンス C言語編


DCRPC_BINDTBL_SET,DCRPC_DIRECT_SCHEDULE

〈このページの構成〉

名称

DCRPC_BINDING_TBL構造体の設定

形式

ANSI C,C++の形式

#include <dcrpc.h>
void DCRPC_BINDTBL_SET(struct DCRPC_BINDING_TBL *direction,
                       char *nid, char *hostnm,
                       short portno, DCLONG flags)
 
void DCRPC_DIRECT_SCHEDULE(struct DCRPC_BINDING_TBL *direction,
                           char *hostnm, short scdport,
                           DCLONG flags)

K&R版 C の形式

#include <dcrpc.h>
void DCRPC_BINDTBL_SET(*direction, *nid, *hostnm, portno, flags)
struct DCRPC_BINDING_TBL *direction;
char      *nid;
char      *hostnm;
short     portno;
DCLONG    flags;
 
void DCRPC_DIRECT_SCHEDULE(*direction, *hostnm, scdport, flags)
struct DCRPC_BINDING_TBL  *direction;
char      *hostnm;
short     scdport;
DCLONG    flags;

機能

dc_rpc_call_to関数の第1引数に指定するDCRPC_BINDING_TBL構造体を次のどちらかの関数を使用して作成します。

DCRPC_DIRECT_SCHEDULE関数で作成したDCRPC_BINDING_TBL構造体を指定してdc_rpc_call_to関数を呼び出すと,OpenTP1は指定されたスケジュールサービスの管理するユーザサーバに,直接サービス要求を送信します。ただし,DCRPC_DIRECT_SCHEDULE関数で作成したDCRPC_BINDING_TBL構造体は,次に示すユーザサーバへのサービス要求にしか使用できません。

また,DCRPC_DIRECT_SCHEDULE関数で作成したDCRPC_BINDING_TBL構造体を指定してdc_rpc_call_to関数を呼び出す場合は,サービス要求先のOpenTP1のバージョンやユーザサーバのトランザクション属性を認識しなければならないなど,多くの注意事項があります。詳細については,dc_rpc_call_to関数の注意事項を参照してください。

UAPで値を設定する引数

●direction

dc_rpc_call_to関数の第1引数で使用するDCRPC_BINDING_TBL構造体のアドレスを設定します。

●nid

DCRPC_BINDTBL_SET関数で,ノード識別子をサービス要求先を特定する検索のキーとする場合,ノード識別子を格納した領域のアドレスを指定します。文字列の最後にはヌル文字を設定してください。このヌル文字は文字列の長さに数えません。

ノード識別子は,システム共通定義のnode_idオペランドに指定した名称で,かつサービス要求先ノードのホスト名がグローバルドメイン内にあることが前提です。

ノード識別子を検索のキーにしない場合には,nidにアドレス0を指定してください。

注※

ここでのグローバルドメインとは,次のノード名の集合を指します。

システム共通定義のname_domain_file_useオペランドにNを指定している場合

システム共通定義のall_nodeオペランド,all_node_exオペランドで指定したノード名の集合です。

システム共通定義のname_domain_file_useオペランドにYを指定している場合

ドメイン定義ファイルに指定したノード名の集合です。なお,ドメイン定義ファイルは次の場所に格納します。

  • all_nodeのドメイン定義ファイル

    $DCCONFPATH/dcnamndディレクトリ下

  • all_node_exのドメイン定義ファイル

    $DCCONFPATH/dcnamndexディレクトリ下

●hostnm

サービス要求先ノードのホスト名を格納した領域のアドレスを指定します。指定できるホスト名は1から255文字までの文字列です。文字列の最後にはヌル文字を設定してください。このヌル文字は文字列の長さに数えません。指定するホスト名は,/etc/hostsファイルまたはDNSなどで,IPアドレスとのマッピングができる名称です。

なお,サービス要求先ノードのホスト名はグローバルドメインに指定されていても,指定されていなくても,どちらでもかまいません。

DCRPC_BINDTBL_SET関数で,ホスト名をサービス要求先を特定する検索のキーにしない場合には,hostnmにアドレス0を指定してください。

DCRPC_DIRECT_SCHEDULE関数では,hostnmは必ず指定してください。DCRPC_DIRECT_SCHEDULE関数のhostnmにアドレス0を指定した場合は,このDCRPC_BINDING_TBL構造体を指定して呼び出したdc_rpc_call_to関数が,DCRPCER_INVALID_ARGSでエラーリターンします。

注※

ここでのグローバルドメインとは,次のノード名の集合を指します。

システム共通定義のname_domain_file_useオペランドにNを指定している場合

システム共通定義のall_nodeオペランド,all_node_exオペランドで指定したノード名の集合です。

システム共通定義のname_domain_file_useオペランドにYを指定している場合

ドメイン定義ファイルに指定したノード名の集合です。なお,ドメイン定義ファイルは次の場所に格納します。

  • all_nodeのドメイン定義ファイル

    $DCCONFPATH/dcnamndディレクトリ下

  • all_node_exのドメイン定義ファイル

    $DCCONFPATH/dcnamndexディレクトリ下

●portno

  • DCRPC_BINDTBL_SET関数でホスト名を検索のキーとする場合

    サービス要求先のOpenTP1システムのネームサービスのポート番号(システム共通定義のname_portオペランドで指定)を指定します。サービス要求先のネームサービスのポート番号が,サービス要求元のネームサービスのポート番号と同じ場合は,0を指定します。

  • DCRPC_BINDTBL_SET関数でノード識別子を検索のキーとする場合

    portnoに0を指定します。サービス要求先のポート番号(システム共通定義のall_nodeオペランドで指定)を省略している場合は,サービス要求先のネームサービスのポート番号(システム共通定義のname_portオペランドで指定)と,サービス要求元のネームサービスのポート番号が同じでなければなりません。

●scdport

DCRPC_DIRECT_SCHEDULE関数のscdportには,サービス要求先OpenTP1システムのスケジュールサービスのポート番号(サービス要求先のスケジュールサービス定義のscd_portオペランドで指定)を指定します。0を指定した場合は,送信先ポート番号の省略値として,サービス要求元のスケジュールサービス定義に指定されているscd_portオペランドの値を仮定します。したがって,DCRPC_DIRECT_SCHEDULE関数のscdportに0を指定する場合,サービス要求元のOpenTP1は,スケジュールサービス定義にscd_portオペランドが指定され,起動されていなければなりません。

●flags

DCNOFLAGSを指定します。

その他関連事項

dc_rpc_call_to関数を参照してください。

注意事項

  1. DCRPC_BINDTBL_SET関数,DCRPC_DIRECT_SCHEDULE関数は,dc_rpc_call_to関数の第1引数に指定する,DCRPC_BINDING_TBL構造体を設定するための関数です。

  2. DCRPC_BINDTBL_SET関数,DCRPC_DIRECT_SCHEDULE関数の引数の指定値チェックや,指定方法によってどのような動作をするかについては,作成したDCRPC_BINDING_TBL構造体を指定して呼び出したdc_rpc_call_to関数の動作に現れます。dc_rpc_call_to関数については,「2. リモートプロシジャコール(dc_rpc_〜)」のdc_rpc_call_toを参照してください。

  3. DCRPC_BINDTBL_SET関数,DCRPC_DIRECT_SCHEDULE関数では,UAPトレースは取得しません。