6.5.2 CBLDCTRS('C-COMMIT') − 連鎖モードのコミット
(1) 形式
(a) マルチスレッド環境の場合
■ PROCEDURE DIVISIONの指定
CALL 'CBLDCTRS' USING 一意名1
■ DATA DIVISIONの指定
01 一意名1. 02 データ名A PIC X(8) VALUE 'C-COMMIT'. 02 データ名B PIC X(5). 02 FILLER PIC X(3). 02 データ名C PIC 9(9) COMP-X.
(b) シングルスレッド環境の場合
■ PROCEDURE DIVISIONの指定
CALL 'CBLDCTRN' USING 一意名1
■ DATA DIVISIONの指定
01 一意名1. 02 データ名A PIC X(8) VALUE 'C-COMMIT'. 02 データ名B PIC X(5).
(2) 機能
トランザクションの同期点を取得します。
CBLDCTRS('C-COMMIT')が正常終了すると,新しいグローバルトランザクションが発生し,以降実行するプログラムは新しいグローバルトランザクションの範囲になります。
(3) UAPで値を設定するデータ領域
-
データ名A
連鎖モードのコミットを示す要求コードを「VALUE 'C-COMMIT'」と設定します。
-
データ名C
CBLDCCLS('CLTIN '),またはCBLDCCLS('EXCLTIN ')で受け取ったクライアントIDを指定します。
(4) 値が返されるデータ領域
-
データ名B
ステータスコードが,5けたの数字で返されます。
(5) ステータスコード
ステータスコード |
意味 |
---|---|
00000 |
正常終了しました。 |
02501 |
要求コード(データ名A)に指定した値が間違っています。 |
02502 |
誤ったコンテクストからプログラムを呼び出しています。 |
02504 |
メモリ不足が発生しました。 |
02506 |
ネットワーク障害が発生しました。 |
02507 |
CBLDCTRS('C-COMMIT')の処理時間で時間切れ(タイムアウト)が発生しました。 |
02515 |
OpenTP1が起動されていません。 |
02517 |
トランザクションプロセス内でメモリ不足が発生しました。 |
02518 |
システムエラーが発生しました。 |
02542 |
常設コネクションが解放されました。 |
02544 |
データ名Cに指定したクライアントIDはCBLDCCLS('CLTIN '),またはCBLDCCLS('EXCLTIN ')で受け取ったクライアントIDと異なっています。 |
03402 |
現在のトランザクションは,コミットに失敗したためロールバックしました。 完了後,このプロセスはトランザクション下にあって,グローバルトランザクションの範囲内です。 |
03403 |
ヒューリスティック決定のため,あるトランザクションブランチはコミットとなり,あるトランザクションはロールバックとなりました。 このステータスコードは,ヒューリスティック決定の結果が,グローバルトランザクションの同期点の結果と一致しなかった場合に戻ります。 このステータスコードが返る原因およびグローバルトランザクションの同期点の結果は,メッセージログファイルを参照してください。 このステータスコードが戻ったあともこのプロセスはトランザクション下にあって,グローバルトランザクションの範囲内です。 |
03404 |
グローバルトランザクションのトランザクションブランチがヒューリスティックに完了しました。 しかし,障害のためヒューリスティックに完了したトランザクションブランチの同期点の結果が判明しません。このステータスコードが返る原因およびグローバルトランザクションの同期点の結果は,メッセージログファイルを参照してください。このステータスコードが戻ったあともこのプロセスはトランザクション下にあって,グローバルトランザクションの範囲内です。 |
03424 |
コミットは正常終了しましたが,新しいトランザクションは開始できませんでした。このステータスコードが返ったあとは,このプロセスはトランザクション下にはありません。 |
03425 |
現在のトランザクションは,コミットできないのでロールバックしました。 その後,新しいトランザクションは開始できなかったため,このプロセスはトランザクション下にありません。 |
03426 |
CBLDCTRS('C-COMMIT')を実行したグローバルトランザクションは,ヒューリスティック決定のため,トランザクションブランチにはコミットされたものと,されていないものがあります。 このステータスコードは,ヒューリスティック決定の結果が,グローバルトランザクションの同期点の結果と一致しなかった場合に返ります。 このステータスコードが返る原因となったUAP,リソースマネジャ,およびグローバルトランザクションの同期点の結果は,メッセージログファイルを参照してください。 その後,新しいトランザクションを開始できなかったため,このプロセスはトランザクション下にありません。 |
03427 |
グローバルトランザクションのトランザクションブランチが,ヒューリスティックに完了しました。しかし,障害のため,ヒューリスティックに完了したトランザクションブランチの同期点の結果が判明しません。 このステータスコードが返る原因となったUAP,リソースマネジャ,およびグローバルトランザクションの同期点の結果は,メッセージログファイルを参照してください。 その後,新しいトランザクションを開始できなかったため,このプロセスはトランザクション下にありません。 このステータスコードが戻ったあともこのプロセスはトランザクション下にあって,グローバルトランザクションの範囲内です。 |
(6) 注意事項
-
トランザクションをコミットしてからCUPのプロセスを終了させるときは,CBLDCTRS('U-COMMIT')を必ず実行してください。
-
ステータスコード02518が戻る場合,CUPを終了してから開始し直してください。