
*copyc OSD$DEFAULT_PRAGMATS
?? NEWTITLE := 'NOS/VE REMOTE HOST' ??
{ REMOTE_HOST_INPUT_FILE_EXEC_PGM
{
{     The purpose of this module is to initialize, invoke, and
{ monitor the process which receives input files from A170 and
{ routes them to the C180 input queue.  As part of the
{ initialization, the process is signed on to the MLI (see
{ MLI_LINK).
{     If a fatal error is detected during processing,
{ REMOTE_HOST_INPUT_FILE_EXEC_PGM will sign off the process
{ from the MLI and "shut itself down completely".

MODULE rhm$input_file_exec_pgm;

?? NEWTITLE := 'GLOBAL TYPE DECLARATIONS' ??
?? SET (LIST := ON) ??
?? EJECT ??
*copyc OST$STATUS
*copyc RHC$CONSTANTS
*copyc TMC$WAIT_TIMES
*copyc rhd$nos_ve_types

?? TITLE := 'PROCEDURES REFERENCED BY THIS MODULE' ??
?? SET (LIST := ON) ??
?? EJECT ??
*copyc CLP$PUT_JOB_OUTPUT
*copyc PMP$LOG
*copyc RHP$MLI_LINK
*copyc PMP$LONG_TERM_WAIT
*copyc RHP$QUEUE_FILE_RECEIVE_EXEC
?? SET (LIST := ON) ??
?? TITLE := 'REMOTE_HOST_INPUT_FILE_EXEC_PGM' ??
?? EJECT ??


  PROCEDURE [XDCL] rhp$input;

    VAR
      application_names: [STATIC] rht$mli_application_names := [[c180_id, [0,
        rhc$receive_remote_input, 0]], [c180_id, [0, rhc$send_input_to_remote,
        0]]],
      status: ost$status,
      exec_status: [STATIC] rht$exec_status := beginning;

    VAR
      data_buffer: rht$file_data_buffer,
      data_buffer_pointer: rht$file_data_buffer_pointer;


    data_buffer_pointer := ^data_buffer;
    mli_link (on, application_names, status);
    IF status.normal THEN
      REPEAT
        rhp$queue_file_receive_exec (application_names, data_buffer_pointer,
          exec_status);
        IF exec_status = beginning THEN
          pmp$long_term_wait (tmc$infinite_wait, 1000000);
        IFEND;
        IF exec_status = unrecoverable_error THEN
          exec_status := beginning;
        IFEND;
      UNTIL exec_status = unrecoverable_error;
    IFEND;
    mli_link (off, application_names, status);

  PROCEND rhp$input;

MODEND rhm$input_file_exec_pgm;



