Hitachi

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


CBLDCTRN('RMSELECT')

〈このページの構成〉

名称

リソースマネジャ接続先選択

形式

PROCEDURE DIVISIONの指定

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

DATA DIVISION の指定

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

機能

ユーザサービス定義のtrnrmid定義コマンドに-kオプションを指定したリソースマネジャについて,該当するプロセスまたはトランザクションで接続先となるリソースマネジャ(リソースマネジャ名+リソースマネジャ拡張子)を指定します。

CBLDCTRN('RMSELECT')は,グローバルトランザクション外でだけ呼び出せます。トランザクションブランチ内でCBLDCTRN('RMSELECT')を呼び出した場合は,エラーリターンします。

CBLDCTRN('RMSELECT')が正常に終了したあとは,指定されたリソースマネジャにだけ接続するようになり,trnrmid定義コマンドに-kオプションの指定があるほかの同一名称のリソースマネジャには接続しません。同一UAPプロセス内で,先に指定したリソースマネジャから別のリソースマネジャに変更する場合は,実行中のトランザクションが完了し新たなトランザクションを開始する前に変更対象となるリソースマネジャ(リソースマネジャ名とリソースマネジャ拡張子)を指定したCBLDCTRN('RMSELECT')を呼び出してください。

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

●データ名A

接続先となるリソースマネジャ名の設定を示す要求コードを「VALUE 'RMSELECT'」と設定します。以降の処理でも,この内容は変わりません。

●データ名C

0を設定します。

●データ名D

接続先となるリソースマネジャ名(trnrmid定義コマンドの-nオプション指定値)を31文字以内の識別子で指定します。文字列の最後には空白を設定してください。この空白は文字列の長さに数えません。

●データ名E

データ名Dに指定したリソースマネジャに指定した拡張子(trnrmid定義コマンドの-nオプション指定値)のうち,接続先となる拡張子を2文字以内の識別子で指定します。文字列の最後には空白を設定してください。この空白は文字列の長さに数えません。

OpenTP1から値が返されるデータ領域

●データ名B

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

ステータスコード

リターン値

意味

00000

正常に終了しました。

指定されたリソースマネジャは,CBLDCTRN('RMSELECT')を呼び出したプロセスで実行されるトランザクションで接続先として設定されました。

00905

CBLDCTRN('RMSELECT')を正しくないコンテクスト(例えば,すでにトランザクション内にいる)で呼び出しています。または,実行環境がジャーナルファイルレスモードの場合に関数が呼び出されました。

00906

リソースマネジャでエラーが起こりました。指定されたリソースマネジャのXA関数の呼び出し処理でエラーが発生しました。

00908

引数の指定値に次の誤りがあります。

  • トランザクションサービス定義のtrnstring定義コマンドに指定されたリソースマネジャが存在しない。

  • trnrmid定義コマンドの-kオプションが指定されていない。

  • データ名Cに無効な値が指定されている。

指定例

01 MISC1.
   02 CMD-CODE PIC X(8) VALUE 'RMSELECT'.
   02 STATUS-CODE PIC X(5).
01 MISC2.
   02 FLAGS PIC S9(9) COMP VALUE ZERO.
   02 RMNAME PIC X(32) VALUE SPACES.
   02 INFO PIC X(3) VALUE SPACES.
     :
     :
MOVE 'RM_A ' TO RMNAME.
MOVE 'Z1 ' TO INFO.
CALL 'CBLDCTRN' USING MISC1 MISC2.
IF STATUS-CODE OF MISC1 NOT EQUAL TO '00000' THEN
   MOVE 'CANNOT RM SELECT' TO ERRMSG OF OUT-ERROR-REC
   WRITE OUT-ERROR-REC
END IF.