TXCOMMIT
形式
DATA DIVISION. * Include TX definitions. 01 TX-RETURN-STATUS. COPY TXSTATUS. PROCEDURE DIVISION. CALL "TXCOMMIT" USING TX-RETURN-STATUS.
機能
TXCOMMITは,呼び出し元のスレッドのトランザクションの作業をコミットします。
transaction_control特性が,TX-UNCHAINEDに設定されていた場合に,TXCOMMITがリターンすると,呼び出し元スレッドはトランザクションモードにはいません。しかし,transaction_control特性がTX-CHAINEDに設定されていた場合は,TXCOMMITがリターンすると,呼び出し元スレッドは新しいトランザクションのためにトランザクションモードにとどまります。transaction_control特性については,TXSETTRANCTLを参照してください(リターン値を参照)。
『次に示すAPIで設定した値は,TXCOMMITの処理に影響を与えます。』
-
TXSETCOMMITRET
-
TXSETTRANCTL
-
TXSETTIMEOUT
『データ領域』
『●TX-RETURN-STATUS
TXCLOSEの実行結果が返されます。』
リターン値
成功した場合,TXCOMMITはTX-OKを返します。これは,負ではないリターン値です。『0が返ります。』『transaction_control特性がTX-CHAINEDに設定されていた場合,新しいグローバルトランザクションが開始します。』
エラー
次のような場合,TXCOMMITはエラーリターンして,次のうちどれか一つの値を返します。これは,負のリターン値です。
- TX-NO-BEGIN
-
トランザクションはコミット終了しましたが,新しいトランザクションは開始できないで,呼び出し元はすでにトランザクションモードにいません。
このリターン値はtransaction_control特性がTX-CHAINEDのときだけ返ります。
- TX-ROLLBACK
-
トランザクションはコミットできないで,ロールバックしました。transaction_control特性がTX-CHAINEDに設定されている場合は,新しいトランザクションが開始されます。
- TX-ROLLBACK-NO-BEGIN
-
トランザクションはコミットできないで,ロールバックしました。新しいトランザクションは開始できないで,呼び出し元はすでにトランザクションモードではありません。
このリターン値はtransaction_control特性がTX-CHAINEDのときだけ返ります。
- TX-MIXED
-
トランザクションは部分的にコミット,部分的にロールバックしました。transaction_control特性がTX-CHAINEDが設定されている場合は,新しいトランザクションが開始されます。
- TX-MIXED-NO-BEGIN
-
トランザクションは部分的にコミット,部分的にロールバックしました。新しいトランザクションは開始できないで,呼び出し元はすでにトランザクションモードにはいません。
このリターン値はtransaction_control特性がTX-CHAINEDのときだけ返ります。
- TX-HAZARD
-
障害が原因で,トランザクションは部分的にコミット,部分的にロールバックされた可能性があります。transaction_control特性がTX-CHAINEDに設定されている場合は,新しいトランザクションが開始されます。
トランザクションサービス定義で,trn_extend_functionオペランドに00000001を指定し,1相コミット時にリソースマネジャからのリターン値がXAER_NOTAの場合も,TX-HAZARDを返します。
- TX-HAZARD-NO-BEGIN
-
障害が原因で,トランザクションは部分的にコミット,部分的にロールバックしました。新しいトランザクションは開始できないで,呼び出し元はすでにトランザクションモードにはいません。
このリターン値は,トランザクション特性がTX-CHAINEDのときだけ返ります。
トランザクションサービス定義で,trn_extend_functionオペランドに00000001を指定し,1相コミット時にリソースマネジャからのリターン値がXAER_NOTAの場合も,TX-HAZARD-NO-BEGINを返します。
- TX-PROTOCOL-ERROR
-
TXCOMMITは,適切でないコンテクストで呼ばれました(例えば,呼び出し元がトランザクションモードにいない場合)。呼び出し元のトランザクションに対する状態は変わりません。
- TX-FAIL
-
トランザクションマネジャ,または一つ以上のリソースマネジャで,回復できないエラーが起こりました。トランザクションマネジャ,または一つ以上のリソースマネジャのどちらか,またはその両方が,すでにアプリケーションに代わって作業できないことがエラーの原因です。呼び出し元のトランザクションに対する状態は不明です。
参照
TXBEGIN,TXSETCOMMITRET,TXSETTRANCTL,TXSETTIMEOUT
『OpenTP1で使う場合の注意事項』
-
『TXCOMMITは,グローバルトランザクションを開始したUAP(TXBEGINを呼び出したUAP)のプロセスからだけ呼び出せます。』
-
『TXCOMMITを呼び出すプロセスは,このマニュアルの記述に従って正しく結合されたUAPの実行形式ファイルを起動したものでなければなりません。』
-
『TXCOMMITと,OpenTP1の CBLDCTRN は併用できません。』