$ZMAXTPTIme

$ZMAXTPTI[ME] contains an integer value indicating the time duration GT.M should wait for the completion of all activities fenced by the current transaction's outermost TSTART/TCOMMIT pair.

$ZMAXTPTIME can be SET but cannot be NEWed.

The initial value of $ZMAXTPTIME is zero (0) seconds, which indicates "no timeout" (unlimited time). The value of $ZMAXTPTIME when a transaction's outermost TSTART operation executes determines the timeout setting for that transaction.

When a $ZMAXTPTIME expires, GT.M executes the $ETRAP/$ZTRAP exception handler currently in effect.

[Note]

Negative values of $ZMAXTPTIME are also treated as "no timeout". Timeouts apply only to the outermost transaction, that is, $ZMAXTPTIME has no effect when TSTART is nested within another transaction.

Example:

    Test;testing TP timeouts
    set $ZMAXTPTIME=6,^X=0,^Y=0,^Z=0
    write "Start with $ZMAXTPTIME=",$ZMAXTPTIME,":",!
    for sleep=3:2:9 do
     . set retlvl=$zl
     . do longtran;ztrap on longtran 
     ;continues execution
     ;on next line
      . write "(^X,^Y)=(",^X,",",^Y,")",!
      write !,"Done TP Timeout test.",!
      quit
      longtran ;I/O in TP doesn't get rolled back
      set newzt="set $ZT="""" ";avoid recursive ZTRAP
      set $ZT=newzt_" goto err"
      tstart ():serial ;plain tstart works as well
      set ^X=1+^X
      write !,"^X=",^X,",will set ^Y to ",sleep
      write " in ",sleep," seconds..."
      hang sleep
      set ^Y=sleep
      write "^Y=",^Y
      tcommit
      write "...committed.",!
      quit
      err;
      set $ZT=""
      write !,"In $ZTRAP handler. Error was: "
      write !," ",$zstatus
      if $TLEVEL do ;test allows handler use outside of TP
       . trollback
        . write "Rolled back transaction."
        write !
        zgoto retlvl
    

Results:

        Start with $ZMAXTPTIME=6:
        
        ^X=1,will set ^Y to 3 in 3 seconds...^Y=3...committed.
        
        ^X=2,will set ^Y to 5 in 5 seconds...^Y=5...committed.
        
        ^X=3,will set ^Y to 7 in 7 seconds...
        In $ZTRAP handler. Error was:
        150377322,longtran+7^tptime,%GTM-E-TPTIMEOUT, Transaction timeoutRolled back transaction.
        
        ^X=3,will set ^Y to 9 in 9 seconds...
        
        In $ZTRAP handler. Error was:
        150377322,longtran+7^tptime,%GTM-E-TPTIMEOUT, Transaction timeoutRolled back transaction.
        
        Done TP Timeout test.