?? RIGHT := 110 ??
?? NEWTITLE := 'NOS/VE Resource Management : Mount a tape volume and assign element to the job' ??
MODULE rmm$tape_services_23d;

?? NEWTITLE := 'Global Declarations Referenced by This Module', EJECT ??
?? PUSH (LISTEXT := ON) ??
*copyc dme$tape_errors
*copyc dmt$job_tape_table
*copyc ost$status
*copyc rmc$action_messages
*copyc rmc$job_status_messages
*copyc rmc$rbt_status_message_width
*copyc rme$condition_codes
*copyc rmt$density
*copyc rmt$tape_reservation
?? POP ??
*copyc ofp$display_status_message
*copyc ofp$format_operator_message
*copyc ofp$send_formatted_operator_msg
*copyc osp$copy_local_status_to_status
*copyc osp$get_parameter_prompt
*copyc osp$set_status_abnormal
*copyc oss$task_shared
*copyc pmp$long_term_wait
*copyc rmp$clear_explicit_reserve
PROCEDURE hide_xref_from_inline;
*copyc rmv$tape_debug_mode
PROCEND hide_xref_from_inline;
*copyc rmp$log_debug_message
*copyc rmp$set_explicit_reserve

?? TITLE := 'Global Declarations Declared by this Module', EJECT ??
  VAR
    rmv$tape_debug_mode: [XDCL, #GATE, STATIC, oss$task_shared] boolean := FALSE;

?? TITLE := 'rmp$change_tape_debug_mode_23d', EJECT ??

  PROCEDURE [XDCL, #GATE] rmp$change_tape_debug_mode_23d
    (    tape_debug_mode: boolean);

    rmv$tape_debug_mode := tape_debug_mode;

  PROCEND rmp$change_tape_debug_mode_23d;

?? TITLE := 'rmp$emit_operator_message', EJECT ??

  PROCEDURE [XDCL] rmp$emit_operator_message
    (    message_name: clt$parameter_name;
         message_parameters: ^array [1 .. * ] of ^string
          ( * <= ofc$max_display_message);
         acknowledgement_allowed: boolean;
     VAR status: ost$status);

    VAR
      formatted_message: oft$formatted_operator_message,
      job_status_message: clt$parameter_name,
      line_count: oft$number_of_displayable_lines,
      local_status: ost$status,
      message: ost$status_message;

    osp$get_parameter_prompt (rmc$action_messages, message_name,
          message_parameters, rmc$rbt_status_message_width, message, local_status);

    IF local_status.normal THEN
      ofp$format_operator_message (message, 1, formatted_message, line_count);
      IF line_count >= 1 THEN
        ofp$send_formatted_operator_msg (formatted_message, ofc$removable_media_operator,
              acknowledgement_allowed, status);
        WHILE NOT local_status.normal AND (local_status.condition =
              ofe$max_job_operator_messages) DO
          pmp$long_term_wait (1000, 1000);
          ofp$send_formatted_operator_msg (formatted_message, ofc$removable_media_operator,
                acknowledgement_allowed, local_status);
        WHILEND;
        osp$copy_local_status_to_status (local_status, status);
        IF status.normal THEN
          job_status_message := 'WAIT_FOR_ACTION';
          rmp$put_job_status_display (job_status_message, NIL);
        IFEND;
      IFEND;
    IFEND;

  PROCEND rmp$emit_operator_message;
?? OLDTITLE ??
?? TITLE := 'rmp$put_job_status_display', EJECT ??

  PROCEDURE [XDCL] rmp$put_job_status_display
    (    message_name: clt$parameter_name;
         message_parameters: ^array [1 .. * ] of ^string ( * <= ofc$max_display_message));

    VAR
      line: ^ost$status_message_line,
      line_count: ^ost$status_message_line_count,
      line_size: ^ost$status_message_line_size,
      local_status: ost$status,
      message: ost$status_message,
      message_area: ^ost$status_message;

    osp$get_parameter_prompt (rmc$job_status_messages, message_name, message_parameters,
          ofc$max_display_message, message, local_status);

    IF local_status.normal THEN
      message_area := ^message;
      RESET message_area;
      NEXT line_count IN message_area;
      IF line_count^ >= 1 THEN
        NEXT line_size IN message_area;
        NEXT line: [line_size^] IN message_area;
        ofp$display_status_message (line^ (2, * ), local_status);
        rmp$log_debug_message (line^ (2, * ));
      IFEND;
    IFEND;

  PROCEND rmp$put_job_status_display;
?? OLDTITLE ??
?? NEWTITLE := 'rmp$release_resource_command', EJECT ??

  PROCEDURE [XDCL, #GATE] rmp$release_resource_command
    (    reservation: rmt$tape_reservation;
     VAR status: ost$status);

    status.normal := TRUE;
    rmp$clear_explicit_reserve (reservation, status);

  PROCEND rmp$release_resource_command;
?? OLDTITLE ??
?? NEWTITLE := 'rmp$reserve_resource_command', EJECT ??

  PROCEDURE [XDCL, #GATE] rmp$reserve_resource_command
    (    reservation: rmt$tape_reservation;
     VAR status: ost$status);

    status.normal := TRUE;
    rmp$set_explicit_reserve (reservation, status);

  PROCEND rmp$reserve_resource_command;
?? OLDTITLE ??

MODEND rmm$tape_services_23d;
