{
{    The purpose of this request is to restore the state of a program to what
{ was saved using the pmp$save_program_state request.  The state of a program
{ consists of the writable working storage and the stack.  The program state is
{ restored from the container provided by the caller.
{
{    If an error condition is detected in processing this request, the request
{ will return with an abnormal status.  If no error is detected, however, the
{ state of the program will be restored to what it was at the time the
{ pmp$save_program_state request was made.  This means that the program will
{ look like it just returned from making the pmp$save_program_state request.
{ The value of the original_program parameter will be false, however, to
{ indicate that the program is executing at a point following a state
{ restoration.
{
{    The p_parameter_block and parameter_block_length parameters can be used to
{ pass a parameter block to the restored program.  The parameter block must be
{ in working storage rather than the stack since the stack following the
{ restoration bears no relationship to the stack before the restoration.  The
{ parameter block amounts to a part of working storage that is not restored to
{ what it was at the time the pmp$save_program_state request was made.
{
{
{       PMP$RESTORE_PROGRAM_STATE (P_STATE_CONTAINER, P_PARAMETER,
{             PARAMETER_LENGTH, STATUS)
{
{ P_STATE_CONTAINER: (input)  This parameter specifies a container from which
{       the program state is to be restored.  The container is an adaptable
{       sequence.  The program state is taken from the sequence at the current
{       position.
{
{ P_PARAMETER: (input)  This parameter specifies a parameter block in working
{       storage that is to be passed to the program in its restored state.  The
{       parameter block amounts to a part of working storage that is not
{       restored to what it was at the time the program state was saved.  If no
{       parameter block is desired, a NIL pointer may be used.
{
{ PARAMETER_LENGTH: (input)  This parameter specifies the length of the
{       parameter block.  If no parameter block is desired, a length of zero
{       may be used.
{
{ STATUS: (output) This parameter returns the request status.
{       CONDITIONS:
{             pme$invalid_program_state
{             pme$program_mismatch
{             pme$unwritable_program_state
{
{
