Example:
LOCK ^P(t) ZTSTART SET ^P(t)=prec,^($H)=$G(^P(t,+$H))+1,^(+$H,s)=hrec ZTCOMMIT LOCK
This uses a LOCK on ^P(t) to serialize the transaction. The logical transaction consists of three global sets that are enclosed within a ZTSTART and a ZTCOMMIT.
Example:
BASEDO WORK QUIT GRPLOCK ^FAM(prn) SET b=^FAM(prn) ZTSTART FOR i=1:1:$L(b,"|") D GET,WORK ZTCOMMIT LOCK QUIT WORKLOCK +^ACT(acct) ZTSTART SET ^ACT(acct)=actrec SET ^ACTX(lname,fname,acct)="" ZTCOMMIT LOCK -^ACT(acct)
This has a sub-routine WORK, which BASE invokes directly and GRP invokes to perform a sub-transaction.