
  PROCEDURE dfp$send_message_to_operator
    (    message: string ( * <= 125);
         server_to_client: boolean;
         mainframe_name: pmt$mainframe_id);

    PROCEDURE scan_backwards_for_non_blank
      (    line_image: string ( * <= 255);
       VAR non_blank_found: boolean;
       VAR character_position: integer;
       VAR character_found: char);

      non_blank_found := FALSE;

    /search_backwards/
      FOR character_position := STRLENGTH (line_image) DOWNTO 1 DO
        IF line_image (character_position) <> ' ' THEN
          non_blank_found := TRUE;
          character_found := line_image (character_position);
          RETURN;
        IFEND;
      FOREND /search_backwards/;
    PROCEND scan_backwards_for_non_blank;

    VAR
      destination_log: pmt$ascii_logset,
      ignore_boolean: boolean,
      ignore_character: char,
      ignore_status: ost$status,
      message_length: integer,
      operator_message: string (125);

    destination_log := $pmt$ascii_logset [pmc$system_log, pmc$job_log];
    IF server_to_client THEN
      STRINGREP (operator_message, message_length, ' Client ', mainframe_name,
            ':');
    ELSE
      STRINGREP (operator_message, message_length, ' Server ', mainframe_name,
            ':');
    IFEND;
    dpp$put_next_line (dpv$system_core_display,
          operator_message (1, message_length), ignore_status);
    pmp$log_ascii (operator_message (1, message_length), destination_log,
          pmc$msg_origin_system, ignore_status);
    scan_backwards_for_non_blank (message, ignore_boolean, message_length,
          ignore_character);
    dpp$put_next_line (dpv$system_core_display, message (1, message_length),
          ignore_status);
    pmp$log_ascii (message (1, message_length), destination_log,
          pmc$msg_origin_program, ignore_status);

  PROCEND dfp$send_message_to_operator;

?? PUSH (LISTEXT := ON) ??
*copyc dpp$put_next_line
*copyc dpv$system_core_display
*copyc pmp$log_ascii
*copyc pmt$mainframe_id
?? POP ??
