You must use PUSHLEVEL to mark a starting point for a series of PUSH commands before you can use POPLEVEL to restore the saved values. POPLEVEL itself marks the end of the series. You can use POPLEVEL only within programs.
See also:"Considerations When Designing PUSHLEVEL and POPLEVEL Statements", POP, PUSH, PUSHLEVEL, and CONTEXT commands.
POPLEVEL marker-expression [DISCARD]
A text value used as a marker. This must be exactly the same as the value used in the corresponding PUSHLEVEL statement to mark the start of a series of saved values being popped.
Specifies that the pushed values for that level are discarded when you issue a POPLEVEL statement. When you do not specify DISCARD, the values that were pushed are used to reset the pushed objects.
Two possible uses for POPLEVEL statements are:
After a series of increasingly broadening or narrowing LIMIT commands, each with a corresponding PUSH.
After a single extremely long and complicated PUSH statement, or a series of short ones given throughout a program, that may need a lot of editing. PUSHLEVEL and POPLEVEL allow you to edit the arguments for a long and complicated PUSH statement without also having to edit a corresponding long and complicated POP statement.
To see a sample program using POPLEVEL, see the example for the PUSHLEVEL command.