Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 TP1/Server Base Enterprise Option プログラム作成の手引


ee_rpc_cmtsend_to

〈このページの構成〉

名称

通信先を指定したトランザクションと同期して送信する非応答型RPC要求

形式

ANSI C,C++の形式

#include <eerpc.h>
int ee_rpc_cmtsend_to(struct EERPC_BINDING_TBL *direction,
                      char *group, char *service,
                      char *in, EEULONG *in_len,
                      EELONG flags)

機能

SPPにサービスを要求します。サービスを要求するには,ホスト名またはノード識別子を指定したEERPC_BINDING_TBL構造体に加え,「サービスグループ名」と「サービス名」を引数に設定します。EERPC_BINDING_TBL構造体に指定したホスト名またはノード識別子は,サービス要求先を特定する検索のキーとして使用します。この設定に該当するサービス関数へサービスが要求されます。ドメイン修飾をしてサービスを要求することはできません。

この関数を使う場合,サーバUAPがあるノードのTP1/Server BaseまたはTP1/EEが稼働していることが前提です。

【TP1/FSP限定】RPC関連定義のrpc_output_messageオペランドが設定されている場合,またはユーザサービス関連定義のservice_attr定義コマンドが設定されている場合に,送信データをUAP履歴情報のデータ種別「OJ(出力メッセージ)」として取得します。

オペランドについては,TP1/FSPの関連ドキュメントを参照してください。

UAPで値を設定する引数

●direction

サービス要求先を特定する検索キーを格納するEERPC_BINDING_TBL構造体のアドレスを指定します。検索のキーはホスト名またはノード識別子のどちらかです。

directionの指定値はee_rpc_call_to関数を参照してください。

●group

SPPのサービスグループ名を,31バイト以内のアスキー文字列で設定します。文字列の最後にはNULL文字を設定してください。このNULL文字は文字列の長さに数えません。

●service

SPPのサービス名を,31バイト以内のアスキー文字列で設定します。文字列の最後にはNULL文字を設定してください。このNULL文字は文字列の長さに数えません。

●in

サービスの入力パラメタを設定します。

●in_len

サービスの入力パラメタ長を設定します(単位:バイト)。1〜EERPC_MAX_MESSAGE_SIZE_EXの範囲の値を指定できます。EERPC_MAX_MESSAGE_SIZE_EXは,eerpc.hで定義してあります。

注※

従来のEERPC_MAX_MESSAGE_SIZEは,eerpc.hで定義してありますが,EERPC_MAX_MESSAGE_SIZE_EXの使用をお勧めします。

●flags

EENOFLAGSを設定します。

リターン値

ここで示すリターン値は,TP1/EEが返す値です。サービス関数から返される値ではありません。

リターン値

意味

EE_OK

正常に終了しました。

EECOMER_CNDBPP

オフラインバッチプロセスから発行しているため,この機能は使用できません。

EECOMER_CNDUOC

UOCから発行しているため,この機能は使用できません。

EECOMER_ENVIRON

TP1/EEの環境下にありません。

EERPCER_ARGUMENT

引数に設定した値が間違っています。

EERPC_BINDING_TBL構造体のhostnmに指定されたホスト名が,/etc/hostsファイルまたはDNSなどで,IPアドレスとのマッピングができません。

EERPCER_CONDITION

関数の呼び出し条件が不正です。

RPC関連定義のname_useオペランドにYが設定されていません。

EERPCER_MEMORY_SHORT

メモリが不足しました。

EERPCER_MESSAGE_TOO_BIG

in_lenに設定した入力パラメタ長が,最大値を超えています。

EERPCER_NO_SUCH_SERVICE_GROUP

groupに設定したサービスグループ名は,定義されていません。

EERPCER_PARAM_FLAGS

flagsに設定した値が間違っています。

EERPCER_PARAM_GROUP

groupに設定した値が間違っています。

EERPCER_PARAM_IN

inに設定した値が間違っています。

EERPCER_PARAM_IN_LEN

in_lenに設定した値が間違っています。

EERPCER_PARAM_SERVICE

serviceに設定した値が間違っています。

EERPCER_SYSERR

システムエラーが起こりました。

注意事項

  1. EERPC_BINDING_TBL構造体にホスト名とノード識別子を同時に指定した場合,ホスト名の指定が有効になり,ノード識別子の指定は無視されます。

  2. EERPC_BINDING_TBL構造体にホスト名,ノード識別子ともに0を指定した場合,ee_rpc_cmtsend関数と同様に動作します。

  3. EERPC_BINDING_TBL構造体のflagsにEERPC_SCDPORTを指定し,ソケット受信型(ユーザサービス定義のreceive_fromオペランドにsocketを指定)のTP1/Server Baseユーザサーバへサービスを要求した場合,送信エラーとなります。

  4. EERPC_BINDING_TBL構造体のflagsにEERPC_SCDPORTを指定して,ee_rpc_cmtsend_to関数を呼び出した場合,rpc_retryオペランドは無効になります。

  5. RPC関連定義のname_useオペランドにNを設定して,ee_rpc_cmtsend_to関数を呼び出した場合,EERPCER_CONDITIONでエラーリターンします。

  6. 【TP1/FSP限定】次のリターン値の場合,出力メッセージ(OJ)は取得されません。

    EECOMER_ENVIRON,EECOMER_CNDUOC,EECOMER_CNDBPP,EERPCER_ARGUMENT,EERPCER_PARAM_GROUP,EERPCER_PARAM_SERVICE,EERPCER_PARAM_IN,EERPCER_PARAM_IN_LEN,EERPCER_PARAM_FLAGS,EERPCER_MESSAGE_TOO_BIG

  7. その他の注意事項は,ee_rpc_cmtsend関数の注意事項を参照してください。