CBLDCTRN('C-COMMIT')
- 〈このページの構成〉
形式
PROCEDURE DIVISIONの指定
CALL 'CBLDCTRN' USING 一意名1
DATA DIVISIONの指定
01 一意名1. 02 データ名A PIC X(8) VALUE 'C-COMMIT'. 02 データ名B PIC X(5).
機能
トランザクションの同期点を取得します。ルートトランザクションブランチから,処理が正常に終了したこと(コミット)を,トランザクションを構成するトランザクションブランチ,トランザクションサービス,リソースマネジャに知らせます。
CBLDCTRN('C-COMMIT')が正常に終了すると,新しいグローバルトランザクションが開始して,CBLDCTRN('C-COMMIT')を呼び出したプロセスは,トランザクションの範囲内です。ただし,CBLDCTRN('C-COMMIT')を呼び出したUAP以外のトランザクションモードに対しての指定を意味しません。
グローバルトランザクションが複数のトランザクションブランチから構成される(CBLDCTRN('C-COMMIT')を呼び出したUAPだけではない)場合は,それぞれのトランザクションブランチの処理結果がコミットにならないかぎり,コミットされません。
CBLDCTRN('C-COMMIT')を呼び出せるのは,ルートトランザクションブランチ(トランザクションを開始したUAP)だけです。それ以外のUAPから呼び出した場合は,ステータスコード「00905」でエラーリターンします。
CBLDCTRN('C-COMMIT')を呼び出すプロセスは,このマニュアルの記述に従って正しく作成されたUAPを稼働させたものでなければなりません。
CBLDCTRN('C-COMMIT')は,同期点処理が完了したときに正常に終了,またはエラーリターンのどちらかで返ります。CBLDCTRN('C-COMMIT')を呼び出すサービスが正常終了するためには,UAPの実行環境を設定するときに,トランザクション属性を指定していることが前提です。
UAPで値を設定するデータ領域
●データ名A
連鎖モードのコミットを示す要求コードを「VALUE 'C-COMMIT'」と設定します。連鎖モードのコミットをした処理以降も,この内容は変化しません。
OpenTP1から値が返されるデータ領域
●データ名B
ステータスコードが,5けたの数字で返されます。
ステータスコード
ステータスコード |
意味 |
---|---|
00000 |
正常に終了しました。CBLDCTRN('C-COMMIT')が終了したあとも,このプロセスはトランザクション下にあって,グローバルトランザクションの範囲内です。 |
00902 |
現在のトランザクションは,コミットできないでロールバックしました。このステータスコードが返ったあとも,このプロセスはトランザクション下にあって,新しく開始したグローバルトランザクションの範囲内です。 |
00903 |
CBLDCTRN('C-COMMIT')を呼び出したグローバルトランザクションは,ヒューリスティック決定のため,あるトランザクションブランチはコミットとなり,あるトランザクションブランチはロールバックとなりました。 このステータスコードは,ヒューリスティック決定の結果が,グローバルトランザクションの同期点の結果と一致しなかった場合にリターンします。 このステータスコードが返る原因になったUAP,リソースマネジャ,およびグローバルトランザクションの同期点の結果は,メッセージログファイルを参照してください。 このステータスコードが返ったあとも,このプロセスはトランザクション下にあって,グローバルトランザクションの範囲内です。 |
00904 |
グローバルトランザクションのトランザクションブランチがヒューリスティックに完了しました。しかし,障害のため,ヒューリスティックに完了したトランザクションブランチの同期点の結果が判明しません。 このステータスコードが返る原因になったUAP,リソースマネジャ,およびグローバルトランザクションの同期点の結果は,メッセージログファイルを参照してください。 このステータスコードが返ったあとも,このプロセスはトランザクション下にあって,グローバルトランザクションの範囲内です。 トランザクションサービス定義で,trn_extend_functionオペランドに00000001を指定し,1相コミット時にリソースマネジャからのリターン値がXAER_NOTAの場合も,ステータスコード00904を返します。 |
00905 |
CBLDCTRN('C-COMMIT')を,正しくないコンテクスト(例えば,すでにトランザクション中にいない)から呼び出しています。トランザクションモードに対する影響はありません。 |
00908 |
要求コード(データ名A)が間違っています。 |
00924 |
コミット処理は正常に終了しましたが,新しいトランザクションは開始できませんでした。このステータスコードが返ったあと,このプロセスはトランザクション下にはありません。 |
00925 |
コミットしようとしたトランザクションは,コミットできないでロールバックしました。新しいトランザクションは開始できませんでした。このステータスコードが返ったあと,このプロセスはトランザクション下にはありません。 |
00926 |
CBLDCTRN('C-COMMIT')を呼び出したグローバルトランザクションは,ヒューリスティック決定のため,あるトランザクションブランチはコミットとなって,あるトランザクションブランチはロールバックとなりました。 このステータスコードは,ヒューリスティック決定の結果が,グローバルトランザクションの同期点の結果と一致しなかった場合にリターンされます。 このステータスコードが返される原因となったUAP,リソースマネジャ,およびグローバルトランザクションの同期点の結果は,メッセージログファイルの内容を参照してください。新しいトランザクションは開始できませんでした。このステータスコードが返ったあと,このプロセスはトランザクション下にはありません。 |
00927 |
グローバルトランザクションのトランザクションブランチがヒューリスティックに完了しました。しかし,障害のため,ヒューリスティックに完了したトランザクションブランチの同期点の結果がわかりません。 このステータスコードが返される原因となったUAP,リソースマネジャ,およびグローバルトランザクションの同期点の結果は,メッセージログファイルの内容を参照してください。 新しいトランザクションは開始できませんでした。このステータスコードが返ったあと,このプロセスはトランザクション下にはありません。 トランザクションサービス定義で,trn_extend_functionオペランドに00000001を指定し,リソースマネジャからのリターン値がXAER_NOTAの場合も,ステータスコード00927を返します。 |
指定例
01 MISC. 02 CMD-CODE PIC X(8). 02 STATUS-CODE PIC X(5). : : MOVE 'C-COMMIT' TO CMD-CODE OF MISC. CALL 'CBLDCTRN' USING MISC. IF STATUS-CODE OF MISC NOT EQUAL TO '00000' THEN MOVE 'CANNOT COMMIT TRANSACTION' TO ERRMSG OF OUT-ERROR-REC WRITE OUT-ERROR-REC END IF.