@1
'CreateSession' creates an instance of an abstract graph 
rewriting machine in order to execute the current specification.
This enables several other interpreter commands for
inspecting and executing code. 
The interpreter starts its execution at the 
specification's root increment. The current interpreter 
increment is marked by a light grey background. 
You may quit the current interpreter session when execution 
terminates (which is announced by a special message window) 
or by the 'SaveSession' and 'KillSession' commands.
A session which was saved using the SaveSession-Command
may be resumed later by the 'ResumeSession' command.

--> 'SaveSession', 'KillSession', 'ResumeSession'
@2
'ShowPGCode' shows in a popup window the execution code
of the currently marked increment in a mnemonic notation. 
Use 'ShowM2Code' to get the modula-2 translation of this
code or 'ShowCCode' to get the ANSI-C translation. Use
'ShowWithValues' to get the mnemonic code of the currently
executed increment together with the input values of the
current instruction. 

--> 'ShowM2Code', 'ShowCCode', 'ShowWithValues'
@3
'ShowM2Code' shows in a popup window the execution code 
of the currently marked increment in modula-2 notation. 
Use 'ShowPGCode' to get a mnemonic notation and 
'ShowWithValues' to get additionally the input values 
of the current instruction. Use 'ShowCCode' to get the
ANSI-C translation of this code.

--> 'ShowPGCode', 'ShowWithValues', 'ShowCCode'
@4
'EdgeBrowser' opens a graphical view of the manipulated
host graph (i.e. the graph, the productions are applied to).

For further information about the graph browser, which
is an instance of the tool EDGE developped at the University
of Karlsruhe, see file ${PROGRESROOT}/browser/README-EDGE.

ATTENTION: About 35 MByte of virtual memory are necessary
to create one graph view. Therefore, close old views to
avoid virtual memory overflow. 
@5
'SetPC' sets the program counter of the abstract machine to 
the current increment. Used for the first time it enables 
several execution commands. During execution it may be used 
to skip increments or to execute increments again. Use this 
command carefully, because not or wrong initialization of 
variables or wrong use of the machines arithmetic stack may
cause abnormal execution behavior.

--> 'Step', 'ContTo', 'Next'	
@6
'Step' executes the code of the current increment until the 
program counter is set to another increment by a procedure 
call or jump instruction. 
@7
'Next' executes the code of the current increment completely
and jumps to the next executable increment.
@8
'ContTo' proceeds execution until the current increment is 
reached. If the program counter already points to the current 
increment, execution proceeds until another increment is 
visited and execution reaches the current increment again, for
example within a loop or on return of a procedure call or gosub.
@9
'ShowWithValues' shows in a popup window the execution code
of the increment marked by the program counter in a mnemonic 
notation. Additionally, the input values of the current 
instruction are shown. The mnemonic node of the currently 
marked increment is shown by 'ShowPGCode'. Use 'ShowM2Code' 
to get a translation to modula-2. 

--> 'ShowPGCode', 'ShowM2Code'
@10
'MicroStep' executes one instruction of the underlying 
abstract machine. This instruction is marked by a "*" in 
the popup window shown by 'ShowWithValues', cf. 'ShowPGCode'. 
@11
'MicroSKip' does not execute the current instruction of 
the underlying abstract machine. It just sets the program
counter to the next instruction. Be careful, this may let 
variables uninitialized and the arithmetic stack of the 
abstract machine may be confused. The command is often used
to skip a procedure call or incorrect instructions. 
@12
'Up' is not yet implemented.
@13
dummy
@14
dummy
@15
dummy
@16
'Finish' completes the execution of the current interpreter 
increment. 
@17
'DisplayXIncr' selects the current interpreter increment
to become the current editor increment, too.
@18
'Break' interrupts running interpreter.
@19
'eXecDirect' executes the currently selected (bold) increment
instead of the current (grey) interpreter increment. This
increment must be the call of a transaction, production,
query, or test. It should be part of an own transaction
(otherwise not used) fo technical reasons only.

--> 'IniteXecDirect', 'ReExecDirect', 'InitReExecDirect'
@20
'IniteXecDirect' initializes direct execution only (in
contrast to 'eXecDirect' which executes the selected
increment immediately). Afterwards normal interpreter
commands like 'Step', 'Next', etc. may be used to guide
the interpretation process.

--> 'eXecDirect', 'ReExecDirect', 'InitReExecDirect'
@21
'ReExecDirect' forces failure of the immediately
preceding direct execution process (applied to the same
current increment) and restarts the execution process.
This has the consequence that still remaining alternatives
for nondeterministic choices are explored.

--> 'eXecDirect', 'IniteXecDirect', 'InitReExecDirect'
@22
'InitReExecDirect' forces failure of the immediately
preceding direct execution process and reinitializes
the execution process. Afterwards normal interpreter
commands like 'Step', 'Next', etc. may be used to
guide the interpretation process which explores still
remaining alternatives for nondeterministic choices.

--> 'eXecDirect', 'IniteXecDirect', 'InitExecDirect'
@23
'ShowCCode' shows in a popup window the execution code 
of the currently marked increment in modula-2 notation. 
Use 'ShowPGCode' to get a mnemonic notation and 
'ShowWithValues' to get additionally the input values 
of the current instruction. Use 'ShowM2Code' to get the
modula-2 translation of this code.

--> 'ShowPGCode', 'ShowWithValues', 'ShowM2Code'
@24
'GenM2Code' generates modula-2 code for the whole document.
A file-chooser is opened to select the directory the
generated code will be placed in. (Choose a file in the
directory you want to select.)
Use 'GenCCode' to generate ANSI-C code.

--> 'GenCCode'
@25
'GenCCode' generates ANSI-C code for the whole document.
A file-chooser is opened to select the directory the
generated code will be placed in. (Choose a file in the
directory you want to select.)
Use 'GenM2Code' to generate modula-2 code.

--> 'GenM2Code'
@26
'DisplayBtGraph' opens a graphical view of the current
Choicegraph (i.e. the graph, backtrack information is
stored in). Until now, this view is static, i.e. graph
changes are not reflected. Use 'DisplayBtGraph' again,
to get a new view of the changed graph.

You may expand the context of single nodes by selecting
them with the right mouse button and you receive a view
of all nodes and edges in the host graph by pressing the
key "e". The "q" key may be used to close the graph view.
For further information about this graph browser, which
is an instance of the tool EDGE developped at the uni.
of Karlsruhe, see e.g.:

Newbery Paulisch F.: The Design of an Extendible Graph Editor
                     Dissertation, University of Karlsruhe,
                     LNCS, Springer Verlag (1992)

ATTENTION: About 35 MByte of virtual memory are necessary
to create one graph view. Therefore, close old views to
avoid virtual memory overflow.
@27
'RemovePGCode' removes all PG-Code that has been produced
by the compilation process. All Code has to be recompiled.
@28
'UpdateBrowser' updates (EDGE) host graph view (if necessary).

--> 'DisplayEdgeHGraph'
@29
'ReRun' restarts the Interpreter. Semantically equivalent to 
InterpreterKillSession and InterpreterCreateSession, but faster!
@30
'TraceOn' activates TRACE. If TRACE on is activated 
the part of your specification being currently interpreted 
will be marked on the screen. The depth of the current
interpreter increment is the same as the depth PROGRES 
will trace down.
@31
'TraceOff' deactivates TRACE.
@32
'DisableGenCode' disables generation of M2 or C code for 
the current section. If the current increment is the
specification increment then code generation will be disabled 
for all sections and subsections.

--> 'EnableGenCode', 'DisplayGenStat'
@33
'EnableGenCode' enables code generation of the current section.
If the current increment is the specification increment then
code generation will be enabled for all sections and subsections.

--> 'DisableGenCode', 'DisplayGenStat'
@34
'DisplayGenStat' shows whether the specification and its
sections will contribute to the generated M2 or C sources
of a specification.

--> 'EnableGenCode', 'DisableGenCode'
@35
'DisplayStackUp' moves the current editor increment
up in the call stack of the interpreter.

--> 'StackDown'
@36
'DisplayStackDown' moves the current editor increment
up in the call stack of the interpreter.

--> 'StackUp'
@37
'ResumeSession' opens an instance of an abstract graph 
rewriting machine in order to continue the execution of the
this specification. 

--> 'CreateSession', 'SaveSession', 'KillSession'
@38
'CopySession' copies an an abstract machine together
with all graphs needed for execution only, like the
current hostgraph.
@39
'RenameSession' renames an abstract machine together
with all graphs needed for execution only, like the
current hostgraph.
@40
'KillSession' deletes an abstract machine together
with all graphs needed for execution only, like the
current hostgraph.
@41
'SaveSession' closes an abstract machine together
with all graphs needed for execution only, like the
current hostgraph.

Use 'ResumeSession' to continue this interpreter
session, use 'KillSession' to delete it.

--> 'ResumeSession', 'KillSession'
@42
'KillSession' erases the current abstract machine
together with all graphs opened for execution only,
like the current hostgraph. 

--> 'CreateSession'
@43
'DisablePrototype' omits the selected section, so no type 
or transaction or production or anything else declared in 
this section will contribute to a generated user interface
of the prototype. You disable the whole specification by 
choosing the spec increment.

--> 'EnablePrototype', 'DisplayProtoStat'
@44
'EnablePrototype' enables a section so all node and edge types
and all transactions, productions, tests, queries and functions
declared in this section will contribute to a generated 
user interface of a prototype. By choosing the specification
you enable the whole specification.

--> 'DisablePrototype', 'DisplayProtoStat'
@45
'DisplayProtoStat' shows whether the specification and its sections
will contribute to the user interface of a prototype. 
@46
'TclBrowser' opens a graphical view of the manipulated
host graph (i.e. the graph, the productions are applied to).

For further information about the graph browser, which
is implemented with the user interface tool kit tk/tcl,
see ${PROGRESROOT}/browser/README-TK.TCL.
@47
'ConstraintOn' enables the constraint checking mechanism. If a 
precondition, postcondition or constraint is hurt then the
execution will terminate and mark the condition resp. constraint.
@48
'ConstraintOff' disables the constraint checking mechanism.
@49
'LoadSession' loads a previously saved session and resumes it.
@50
'FFBrowser' opens a graphical view of the manipulated
host graph (i.e. the graph, the productions are applied to).

This graph browser is still under construction and not yet
available for public use.
@51
'RandomOn' enables the "random choice selection" mode of the runtime system.
Element extraction from sets, substatement selection of or- and
and-statements as well as graph pattern matching are no longer deterministic 
reproducable operations.
@52
'RandomOff' disables the "random choice selection" mode of the runtime system.
Substatements of or/and-statements are processed from left to right,
node sets are processed such that the number of database page access
operations is minimized, and elements are extracted from integer sets,
etc. with respect to their order (minimal element firsts).