Hitachi

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


CBLEERPC('POLLANYR')

〈このページの構成〉

名称

非同期応答型RPCの応答受信

形式

PROCEDURE DIVISIONの指定

CALL 'CBLEERPC' USING 一意名1

DATA DIVISIONの指定

01 一意名1.
  02 データ名A  PIC X(8) VALUE 'POLLANYR'.
  02 データ名B  PIC X(5).
  02 FILLER     PIC X(3).
  02 データ名C  PIC S9(9) COMP VALUE ZERO.
  02 データ名D  PIC S9(9) COMP.
  02 データ名E  PIC S9(9) COMP.
  02 データ名F  PIC S9(9) COMP.

機能

非同期応答型RPCでサービス要求した結果を受信します。

受信する非同期応答を特定する場合は,データ名Cに1,または17を設定します。この値を設定した場合は,データ名Eに設定した記述子をリターンした,非同期応答型RPCの応答を受信します。

受信する非同期応答を特定しない場合は,データ名Cに0,または16を設定します。このとき,データ名Eに設定した値は無視されます。データ名Cに0,または16を設定したCBLEERPC('POLLANYR')が正常に終了すると,受信した非同期応答の記述子と同じ値がリターンされます。

CBLEERPC('POLLANYR')は,次のどちらかの場合にリターンします。

CBLEERPC('POLLANYR')が正常に終了すると,非同期応答型RPCを使ったCBLEERPC('CALL ')の応答を格納する領域に,値が設定されます。

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

●データ名A

処理結果を非同期に受信することを示す要求コードを「VALUE 'POLLANYR'」と設定します。

●データ名C

次のどれかを設定します。

0

待ち時間を設定します(単位:秒)。CBLEERPC('POLLANYR')で受信する非同期の応答を特定しません。

1

待ち時間を設定します(単位:秒)。データ名Eに設定された記述子をリターンした,非同期応答型RPCの応答を受信します。

16

待ち時間を設定します(単位:ミリ秒)。CBLEERPC('POLLANYR')で受信する非同期の応答を特定しません。

17

待ち時間を設定します(単位:ミリ秒)。データ名Eに設定された記述子をリターンした,非同期応答型RPCの応答を受信します。

●データ名E

非同期応答型RPCのCBLEERPC('CALL ')(データ名Cに2を設定)が正常に終了したときに返された,記述子を設定します。データ名Cに0,または16を設定した場合は,ここに設定した値は無視されます。

●データ名F

CBLEERPC('POLLANYR')を呼び出してから,応答が返ってくるまでの待ち時間を設定します(単位:秒またはミリ秒)。設定できる値は-1からS9(9) COMPで表せる最大の数までです。

CBLEERPC('POLLANYR')で非同期応答を受信する場合は,RPC関連定義のwatch_timeオペランドまたはCBLEERPC('SETWATCH')で設定した応答待ち時間を参照しません。

0を設定した場合は,データ名Cが0,または1を設定したとき応答が返ってこないと「00307」ですぐにエラーリターンします。データ名Cに16,または17を設定したとき,50ミリ秒として処理されます。

-1を設定した場合は,応答が返るまで待ち続けます。

●データ名D

0を設定します。

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

●データ名B

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

●データ名D

受信した非同期応答の記述子が返されます。この記述子は,データ名Cに0,または16を設定したCBLEERPC('POLLANYR')が正常に終了した場合に返されます。データ名Cに1,または17を設定したCBLEERPC('POLLANYR')が正常に終了した場合は,0が設定されます。

ステータスコード

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

ステータスコード

意味

00000

正常に終了しました。

00001

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

00004

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

00005

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

00301

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

00304

メモリが不足しました。

00306

ネットワークに障害が起こりました。

00307

CBLEERPC('CALL ')の処理が時間切れ(タイムアウト)になりました。

サービスを要求されたSPPが,処理を完了する前に異常終了しました。

CBLEERPC('CALL ')の非トランザクショナルRPC(データ名Cに32以上を設定)の要求先サーバがTP1/EEであり,かつサーバ側のrpc_reply_tp1mode_downオペランドの設定値がJの場合,サーバ側のトランザクションがロールバック以外です。

00309

返ってきた応答が,クライアントUAPで用意した領域に入り切りません。

00310

CBLEERPC('CALL ')のデータ名Fに設定したサービスグループ名は定義されていません。

00311

CBLEERPC('CALL ')のデータ名Eに設定したサービス名は,定義されていません。

サービスの要求先がTP1/EEであり,かつ要求先の転送機能が無効(rpc_loadbalanceオペランドの設定値がN,かつrpc_transfer_othersvgオペランドの設定値がN)の場合は,サービスグループ名不正のおそれがあります。

00312

CBLEERPC('CALL ')のデータ名Eに設定したサービス名があるサービスグループは,閉塞しています。

00313

CBLEERPC('CALL ')のデータ名Eに設定したサービスは,終了処理中です。

00314

CBLEERPC('CALL ')のデータ名Eに設定したサービスのUAPプロセスが,稼働していません。

データ名Fに-1を指定した場合に,サービスを要求されたSPPが,処理を完了する前に異常終了しました。

00315

CBLEERPC('CALL ')のデータ名Eに設定したサービスがあるノードのOpenTP1が稼働していません。異常終了,停止中,終了処理中,および通信障害が起こったことが考えられます。

00316

CBLEERPC('CALL ')に設定したサービスで,システムエラーが起こりました。

00317

CBLEERPC('CALL ')に設定したサービスで,メモリが不足しました。

CBLEERPC('CALL ') で非トランザクショナルRPC(データ名Cに32以上を設定)の要求先サーバがTP1/EEであり,かつサーバ側のrpc_reply_tp1modeオペランドまたはrpc_reply_tp1mode_downオペランド設定値がNの場合,サーバ側のトランザクションがコミットしましたが,応答を返せませんでした。応答を返せなかった原因を次に示します。

  • UAPリターン後の同期点処理でトランザクション決着できない状態であり,かつrpc_replymsg_saveオペランドの設定値がN

  • UAPリターン後の同期点処理以降にプロセスダウン

00318

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

00319

サービス関数がOpenTP1に返した応答の長さが,1〜EERPC_MAX_MESSAGE_SIZE_EXで定義されている値の範囲にありません。

00320

サービスを要求されたノードにあるOpenTP1は,開始処理中です。

00321

非同期応答型RPCで要求したサービスの処理結果は,すべて受信しました。

00322

データ名Eに設定した記述子は存在しません。このステータスコードは,データ名Cに1または17を設定した場合に返されます。

00323

メモリが不足しました。このステータスコードが返った場合は,トランザクションブランチをコミットできません。

00324

システムエラーが起こりました。このステータスコードが返った場合は,トランザクションブランチをコミットできません。

00325

設定したサービスで,システムエラーが起こりました。このステータスコードが返った場合は,トランザクションブランチをコミットできません。

00326

返ってきた応答が,クライアントUAPで用意した領域に入り切りません。このステータスコードが返った場合は,トランザクションブランチをコミットできません。

00327

ノード間負荷バランス機能およびノード間負荷バランス拡張機能の環境で,複数のSPPのトランザクション属性が一致していません。または,負荷を分散する先のノードにあるOpenTP1のバージョンが,クライアントのOpenTP1のバージョンよりも低いため,ノード間負荷バランス機能およびノード間負荷バランス拡張機能を実行できません。

このステータスコードは,ノード間負荷バランス機能およびノード間負荷バランス拡張機能を使っているSPPにサービスを要求した場合にだけリターンされます。

00338

発行条件が不正です。

00356

サービスを要求されたソケット受信型サーバが,サービス要求を受け取れません。

00366

オンラインテスタを使っている環境で,テストモードのUAPからテストモードでないSPPへサービスを要求しています。または,テストモードでないUAPからテストモードのSPPへサービスを要求しています。

00372

一つのトランザクションブランチから開始できる子トランザクションブランチの最大数を超えたため,トランザクションブランチを開始できません。

CBLEERPC('CALL ')で非トランザクショナルRPC(データ名Cに32以上を設定)の要求先サーバがTP1/EEであり,かつサーバ側のrpc_reply_tp1modeオペランドまたはrpc_reply_tp1mode_downオペランドの設定値がNの場合,サーバ側のトランザクションがコミットできませんでした。

CBLEERPC('CALL ')で非トランザクショナルRPC(データ名Cに32以上を設定)の要求先サーバがTP1/EEであり,かつサーバ側のrpc_reply_tp1mode_downオペランドの設定値がJの場合,サーバ側のトランザクションがロールバックしました。

注意事項

  1. 記述子を特定しないCBLEERPC('POLLANYR')がエラーリターンした場合,エラーとなった応答の記述子を特定できません。CBLEERPC('POLLANYR')がエラーリターンしたときに該当する記述子がわかるようにしておきたい場合は,データ名Cに1,または17を設定しておいてください。または,CBLEERPC('GETERDES')を使用することで,エラーリターンした記述子を取得できることもあります。

  2. 別スレッドで送信した非同期応答型RPC(CBLEERPC('CALL ')(データ名Cに2を設定))は,このCOBOL-UAP作成用プログラムで受信できません。非同期応答型RPCは同一スレッドでCBLEERPC('POLLANYR')を使用して受信する必要があります。

  3. 非同期応答型RPCでサービスを要求したUAPが次に示すCOBOL-UAP作成用プログラムを呼び出すと,CBLEERPC('POLLANYR')で応答を受け取れません。

    • CBLEERPC('DISCARDF')で,非同期応答の受信を拒否した場合

    • トランザクショナルRPCの場合,同期点処理のCOBOL-UAP作成用プログラムでコミットまたはロールバックした場合

    上記のCOBOL-UAP作成用プログラムを使ったあとで返ってきた応答は,破棄されます。非同期応答型RPCでは,上記のCOBOL-UAP作成用プログラムを呼び出す前に,必要な非同期の応答をCBLEERPC('POLLANYR')ですべて受け取ってください。