Sep 5, 2022, 2:02:14 PM9/5/22
The 1995 standard around TSTART says restartarguments can be one of the following:
This implies you can have:
1) a single local name
2) a list of local names in parens
3) an asterisk, meaning to save off all local variables
4) an empty set of parens, to save no local variables
As I see it, this implies one of:
1: the first option should have been "L lname", for inclusive operation, and the omission of the preceding "L" is an error
2: inclusive operation is limited to a single variable, but you can have a list for exclusive operation
3: there is no exclusive form of restartarguments, and parens are just there to encapsulate a list of inclusive variables
Another part of the standard has this text, explaining the operation of a restart:
The frame at the top of the PROCESS-STACK is examined. If the frame's linked list of CONTEXT-STRUCTUREs contains entries, they are processed in last-in-first-out order from their creation. If the CONTEXT-STRUCTURE is exclusive, all entries in the currently active local variable NAME-TABLE are pointed to empty DATA-CELLs. In all cases, the CONTEXT-STRUCTURE NAME-TABLEs are copied to the currently active NAME-TABLEs.
This implies that scenario 1 is the case.
However, the 1995 Standard MUMPS Pocket Guide from VistA Expertise Network, in its section on TSTART, seems to reinforce either scenario 2 or scenario 3, but makes no mention of any exclusive form.
GT.M and YottaDB seem to support both "L lname" and "(L lname)", but both appear to behave identically to each other.
Also, I find it amusing that the standard discusses a "linked list of CONTEXT-STRUCTURES", but also says it doesn't imply an implementation method, when linked lists are incontrovertibly an implementation method.
Can any former MDC-ers shed some light?