Hitachi

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


CBLEERPC('CMTSNDTO')

〈このページの構成〉

名称

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

形式

PROCEDURE DIVISIONの指定

CALL 'CBLEERPC' USING 一意名1 一意名2

DATA DIVISIONの指定

01 一意名1.
  02 データ名A  PIC X(8) VALUE 'CMTSNDTO'.
  02 データ名B  PIC X(5).
  02 FILLER      PIC X(3).
  02 データ名C  PIC S9(9) COMP.
  02 FILLER      PIC S9(9) COMP.
  02 データ名E  PIC X(32).
  02 データ名F  PIC X(n).
01 一意名2.
  02 データ名G  PIC 9(9) COMP.
  02 データ名H  PIC X(n).
01 一意名3.
  02 データ名K  PIC X(1).
  02 FILLER     PIC X(1).
  02 データ名L  PIC 9(4) COMP-X.
  02 データ名M  PIC X(5).
  02 FILLER     PIC X(3).
  02 データ名N  PIC X(n).

機能

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

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

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

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

UAPで値を設定するデータ領域

●データ名A

遠隔サービスの要求を示す要求コードを「VALUE 'CMTSNDTO'」と設定します。

●データ名C

0を設定します。

●データ名E

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

●データ名F

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

●データ名G

サービスの入力パラメタ長(データ名Hの長さ)を設定します。1〜EERPC_MAX_MESSAGE_SIZE_EXの範囲の値を指定できます。EERPC_MAX_MESSAGE_SIZE_EXは,eerpc.hで定義してあります。

注※

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

●データ名H

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

●データ名K

指定値はCBLEERPC('CALLTO ')のデータ名Kを参照してください。

●データ名L

指定値はCBLEERPC('CALLTO ')のデータ名Lを参照してください。

●データ名M

指定値はCBLEERPC('CALLTO ')のデータ名Mを参照してください。

●データ名N

指定値はCBLEERPC('CALLTO ')のデータ名Nを参照してください。

TP1/EEから値が返されるデータ領域

●データ名B

ステータスコードが,5けたの数字で返されます。

ステータスコード

ここで示すステータスコードは,TP1/EEが返す値です。サービスプログラムから返される値ではありません。

ステータスコード

意味

00000

正常に終了しました。

00001

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

00004

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

00005

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

00301

要求コード(データ名A)が間違っています。

データ名Nに指定されたホスト名が,/etc/hostsファイル,DNSなどで,IPアドレスとのマッピングができません。

00304

メモリが不足しました。

00308

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

00310

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

00318

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

00331

データ名Fに設定した値が間違っています。

00332

データ名Eに設定した値が間違っています。

00334

データ名Gに設定した値が間違っています。

00337

データ名Cに設定した値が間違っています。

00338

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

RPC関連定義のname_useにYが設定されていません。

注意事項

  1. ホスト名(データ名M)とノード識別子(データ名N)を同時に指定した場合,ホスト名の指定が有効になり,ノード識別子の指定は無視されます。

  2. ホスト名(データ名N),ノード識別子(データ名M)ともに空白を指定した場合は,CBLEERPC('CMTSND ')と同様に動作します。

  3. データ名KにVALUE 'S'を指定し,ソケット受信型(ユーザサービス定義のreceive_fromオペランドにsocketを指定)のTP1/Server Baseユーザサーバへサービスを要求した場合,CBLEERPC('CMTSNDTO')は,送信エラーとなります。

  4. データ名KにVALUE 'S'を指定してCBLEERPC('CMTSNDTO')を呼び出した場合,rpc_retryオペランドは無効になります。

  5. RPC関連定義のname_useオペランドにNを設定して,CBLEERPC('CMTSNDTO')を呼び出した場合,ステータスコード「00338」でリターンします。

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

    00001,00004,00005,00301,00308,00331,00332,00334,00337

  7. その他の注意事項は,CBLEERPC('CMTSND ')の注意事項を参照してください。