Hitachi

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


CBLDCTRN('C-ROLL ')

〈このページの構成〉

名称

連鎖モードのロールバック

形式

PROCEDURE DIVISIONの指定

CALL 'CBLDCTRN' USING 一意名1

DATA DIVISIONの指定

01 一意名1.
   02 データ名A PIC  X(8) VALUE  'C-ROLL  '.
   02 データ名B PIC  X(5).

機能

トランザクションをロールバックします。連鎖モードでロールバックしたあとには続けてトランザクションが開始します。

CBLDCTRN('C-ROLL ')を呼び出すことで,ルートトランザクションブランチから,トランザクションブランチ,トランザクションサービス,およびリソースマネジャにロールバックを知らせます。

CBLDCTRN('C-ROLL ')が正常に終了すると,CBLDCTRN('C-ROLL ')を呼び出したプロセスはロールバックしてリターンします。そのあとで新しいグローバルトランザクションが開始して,CBLDCTRN('C-ROLL ')を呼び出したプロセスはトランザクションの範囲内です。ただし,CBLDCTRN('C-ROLL ')を呼び出したUAP以外のトランザクションモードに対しての指定を意味しません。

CBLDCTRN('C-ROLL ')を呼び出せるのは,ルートトランザクションブランチ(トランザクションを開始したUAP)だけです。それ以外のUAPから呼び出した場合は,ステータスコード「00905」でエラーリターンします。

CBLDCTRN('C-ROLL ')を呼び出すプロセスは,このマニュアルの記述に従って正しく作成されたUAPを稼働させたものでなければなりません。

CBLDCTRN('C-ROLL ')は,同期点処理が完了したときに正常に終了,またはエラーリターンのどちらかで返ります。CBLDCTRN('C-ROLL ')を呼び出すサービスが正常終了するためには,UAPの実行環境を設定するときに,トランザクション属性を指定していることが前提です。

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

●データ名A

連鎖モードのロールバックを示す要求コードを「VALUE 'C-ROLL△△'」と設定します。連鎖モードのロールバックをした処理以降も,この内容は変わりません。

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

●データ名B

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

ステータスコード

ステータスコード

意味

00000

正常に終了しました。CBLDCTRN('C-ROLL ')が終了したあとも,このプロセスはトランザクション下にあって,グローバルトランザクションの範囲内です。

00903

CBLDCTRN('C-ROLL ')を呼び出したグローバルトランザクションは,ヒューリスティック決定のため,あるトランザクションブランチはコミットとなり,あるトランザクションブランチはロールバックとなりました。

このステータスコードは,ヒューリスティック決定の結果が,グローバルトランザクションの同期点の結果と一致しなかった場合にリターンします。

このステータスコードが返る原因になったUAP,リソースマネジャ,およびグローバルトランザクションの同期点の結果は,メッセージログファイルを参照してください。

このステータスコードが返ったあとも,このプロセスはトランザクション下にあって,グローバルトランザクションの範囲内です。

00904

グローバルトランザクションのトランザクションブランチがヒューリスティックに完了しました。しかし,障害のため,ヒューリスティックに完了したトランザクションブランチの同期点の結果が判明しません。

このステータスコードが返る原因になったUAP,リソースマネジャ,およびグローバルトランザクションの同期点の結果は,メッセージログファイルを参照してください。

このステータスコードが返ったあとも,このプロセスはトランザクション下にあって,グローバルトランザクションの範囲内です。

00905

CBLDCTRN('C-ROLL ')を正しくないコンテクスト(例えば,すでにトランザクション中にいない)から呼び出しています。トランザクションモードに対する影響はありません。

00908

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

00924

ロールバック処理は正常に終了しましたが,新しいトランザクションは開始できませんでした。このステータスコードが返ったあと,このプロセスはトランザクション下にはありません。

00926

CBLDCTRN('C-ROLL ')を呼び出したグローバルトランザクションは,ヒューリスティック決定のため,あるトランザクションブランチはコミットとなって,あるトランザクションブランチはロールバックとなりました。

このステータスコードは,ヒューリスティック決定の結果が,グローバルトランザクションの同期点の結果と一致しなかった場合にリターンされます。

このステータスコードが返される原因となったUAP,リソースマネジャ,およびグローバルトランザクションの同期点の結果は,メッセージログファイルの内容を参照してください。新しいトランザクションは開始できませんでした。このステータスコードが返ったあと,このプロセスはトランザクション下にはありません。

00927

グローバルトランザクションのトランザクションブランチがヒューリスティックに完了しました。しかし,障害のため,ヒューリスティックに完了したトランザクションブランチの同期点の結果がわかりません。

このステータスコードが返される原因となったUAP,リソースマネジャ,およびグローバルトランザクションの同期点の結果は,メッセージログファイルの内容を参照してください。

新しいトランザクションは開始できませんでした。このステータスコードが返ったあと,このプロセスはトランザクション下にはありません。

指定例

01 MISC.
    02 CMD-CODE     PIC X(8).
    02 STATUS-CODE  PIC X(5).
      :
      :
MOVE  'C-ROLL  ' TO CMD-CODE OF MISC.
CALL  'CBLDCTRN' USING MISC.
IF STATUS-CODE OF MISC NOT EQUAL TO  '00000' THEN
    MOVE  'CANNOT ROLLBACK TRANSACTION' TO ERRMSG OF OUT-ERROR-REC
    WRITE OUT-ERROR-REC
END IF.