$InTransaction
$InTransaction
Indicates if an explicit transaction is in progress.
Syntax
$intransaction
Return Value
“1” ($True), or “0” ($False). Can be reset by an application program.
Description
$InTransaction acts as a flag, indicating if the software is currently processing an explicit transaction.
$InTransaction is set to “1” ($True) if a TRANSACTION (or BEGIN WORK) command has started an explicit transaction. It is set to “0” ($False) when an ENDTRANSACTION or QUITTRANSACTION (or COMMIT WORK or ROLLBACK WORK) command has closed the explicit transaction in progress.
The variable is unaffected by deadlock or implicit transactions.
Example
on deadlock
if $intransaction = $true
goto RetryAdd
else
goto previous
endif
endon
… other commands …
RetryAdd:
transaction
… commands in the transaction …
endtransaction
In the above example, when a deadlock occurs, $InTransaction determines the course of action that the exception handler takes: restart the explicit transaction (when true) or retry the command that caused the deadlock (when false).
procedure UpdateCode (NewCode) local (DoEndTrans)
if $intransaction = $false
transaction
let DoEndTrans = $true
endif
… other commands …
if DoEndTrans = $true
endtransaction
endif
endprocedure
In the above example, $InTransaction starts an explicit transaction if one is not already in progress.
See Also