?? RIGHT := 110 ??
*copyc OSD$DEFAULT_PRAGMATS
?? NEWTITLE := 'NOS/VE REMOTE HOST' ??
{
{ REMOTE_HOST_OUTPUT_FILE_EXEC_PGM
{
{     The purpose of this module is to initialize, invoke, and
{ monitor the process which sends output queue files from C180
{ to A170.  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_OUTPUT_FILE_EXEC_PGM will sign off the process
{ from the MLI and "shut itself down completely".
{

MODULE rhm$output_file_exec_pgm;

?? NEWTITLE := 'GLOBAL TYPE DECLARATIONS' ??
?? SET (LIST := ON) ??
?? EJECT ??
*copyc osc$remote_host_output
*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 RHP$MLI_LINK
*copyc CLP$PUT_JOB_OUTPUT
*copyc jmp$register_output_application
*copyc PMP$LOG
*copyc PMP$LONG_TERM_WAIT
*copyc RHP$QUEUE_FILE_TRANSMIT_EXEC
?? SET (LIST := ON) ??
?? TITLE := 'REMOTE_HOST_OUTPUT_FILE_EXEC_PGM' ??
?? EJECT ??

  PROCEDURE [XDCL] rhp$output;

    VAR
      application_names: [STATIC] rht$mli_application_names := [[c180_id, [0, rhc$send_output_to_remote, 0]],
        [c180_id, [0, rhc$receive_remote_output, 0]]],
      data_buffer: rht$file_data_buffer,
      data_buffer_pointer: rht$file_data_buffer_pointer,
      files_processed: boolean,
      queue_file_password: jmt$queue_file_password,
      status: ost$status;

    data_buffer_pointer := ^data_buffer;
    mli_link (on, application_names, status);
    IF status.normal THEN

        jmp$register_output_application (osc$remote_host_output, jmc$dual_state_usage, queue_file_password,
               status);
        IF status.normal THEN
          REPEAT
            rhp$queue_file_transmit_exec (queue_file_password, application_names, data_buffer_pointer,
                files_processed);
            IF NOT files_processed THEN
              pmp$long_term_wait (tmc$infinite_wait, 5000);
            IFEND;
          UNTIL FALSE;
        IFEND;
    IFEND;
    mli_link (off, application_names, status);

  PROCEND rhp$output;

MODEND rhm$output_file_exec_pgm;



