DCRPC_BINDTBL_SET,DCRPC_DIRECT_SCHEDULE
形式
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_BINDTBL_SET関数
指定されたサービス要求先ノードのノード識別子(nid),または指定されたサービス要求先ノードのホスト名(hostnm)をDCRPC_BINDING_TBL構造体に設定し,dc_rpc_call_to関数の第1引数を作成します。
-
DCRPC_DIRECT_SCHEDULE関数
指定されたサービス要求先ノードのホスト名(hostnm)と,指定されたスケジュールサービスのポート番号(scdport)をDCRPC_BINDING_TBL構造体に設定し,dc_rpc_call_to関数の第1引数を作成します。
DCRPC_DIRECT_SCHEDULE関数で作成したDCRPC_BINDING_TBL構造体を指定してdc_rpc_call_to関数を呼び出すと,OpenTP1は指定されたスケジュールサービスの管理するユーザサーバに,直接サービス要求を送信します。ただし,DCRPC_DIRECT_SCHEDULE関数で作成したDCRPC_BINDING_TBL構造体は,次に示すユーザサーバへのサービス要求にしか使用できません。
-
キュー受信型(ユーザサービス定義のreceive_fromオペランドにqueueを指定)のユーザサーバ
-
TP1/EEのサーバUAP
-
アプリケーションサーバのTP1インバウンドアダプタ(TP1インバウンドアダプタについては,マニュアル「Cosminexus V9 アプリケーションサーバ 機能解説 基本・開発編(コンテナ共通機能)」を参照してください。)
また,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関数を参照してください。
注意事項
-
DCRPC_BINDTBL_SET関数,DCRPC_DIRECT_SCHEDULE関数は,dc_rpc_call_to関数の第1引数に指定する,DCRPC_BINDING_TBL構造体を設定するための関数です。
-
DCRPC_BINDTBL_SET関数,DCRPC_DIRECT_SCHEDULE関数の引数の指定値チェックや,指定方法によってどのような動作をするかについては,作成したDCRPC_BINDING_TBL構造体を指定して呼び出したdc_rpc_call_to関数の動作に現れます。dc_rpc_call_to関数については,「2. リモートプロシジャコール(dc_rpc_〜)」のdc_rpc_call_toを参照してください。
-
DCRPC_BINDTBL_SET関数,DCRPC_DIRECT_SCHEDULE関数では,UAPトレースは取得しません。