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の処理に影響を与えます。』

『データ領域』

『●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で使う場合の注意事項』

  1. 『TXCOMMITは,グローバルトランザクションを開始したUAP(TXBEGINを呼び出したUAP)のプロセスからだけ呼び出せます。』
  2. 『TXCOMMITを呼び出すプロセスは,このマニュアルの記述に従って正しく結合されたUAPの実行形式ファイルを起動したものでなければなりません。』
  3. 『TXCOMMITと,OpenTP1の CBLDCTRN は併用できません。』