TECH.Mockable %Integer 5 %ListOfDataTypes 1 %Integer 0 1 globalref:%String timeout:%Integer=..#DefaultTimeout %Integer timeout:%Integer=0 %Integer %Boolean 0 ]]> Operation:%String,timeout:%Integer 1 %Integer 1000)) { set GlobalRef = GlobalRefIterator.Next() set LockCmd = LockCmd _ GlobalRef set:(GlobalRefIterator.HasNext() && ( $Length(LockCmd) < 1000) ) LockCmd = LockCmd _ "," } set LockCmd = LockCmd _ "):"_timeout xecute LockCmd Set LockOK = LockOK && $TEST If Operation = "+" { If LockOK { ; bijhouden unlock statemens uit te voeren als een van de volgende deel locks niet lukt. ; alleen de gelockte mogen geunlocked worden om rekening te houden met incremental locks Do UnlockStatements.Insert(##class(TECH.StringUtils).Replace(LockCmd,"Lock +","Lock -")) } else { set StatementIterator = ##class(TECH.ListIterator).%New(UnlockStatements) While StatementIterator.HasNext(){ #dim UnlockStatement as %String = StatementIterator.Next() Xecute UnlockStatement } } } } quit LockOK ]]>