?? RIGHT := 110 ??
*copyc osd$default_pragmats
MODULE ram$issue_message;
?? PUSH (LISTEXT := ON) ??
*copyc amp$open
*copyc amp$close
*copyc amp$put_next
*copyc osp$format_message
?? POP ??

*copyc rah$issue_message

  PROCEDURE [XDCL] rap$issue_message (output_file: amt$local_file_name;
    VAR message_status: ost$status;
    VAR status: ost$status);

    VAR
      byte_address: amt$file_byte_address,
      j: ost$status_message_line_count,
      message: ost$status_message,
      message_sequence: ^ost$status_message,
      msg_line_count: ^ost$status_message_line_count,
      msg_line_size: ^ost$status_message_line_size,
      msg_line_text: ^string ( * ),
      output_file_id: amt$file_identifier;

    amp$open (output_file, amc$record, NIL, output_file_id, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    osp$format_message (message_status, osc$full_message_level, osc$max_status_message_line, message, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    message_sequence := ^message;
    RESET message_sequence;
    NEXT msg_line_count IN message_sequence;

    FOR j := 1 TO msg_line_count^ DO
      NEXT msg_line_size IN message_sequence;
      NEXT msg_line_text: [msg_line_size^] IN message_sequence;
      amp$put_next (output_file_id, msg_line_text, msg_line_size^, byte_address, status);
      IF NOT status.normal THEN
        RETURN;
      IFEND;
    FOREND;
    amp$close (output_file_id, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;
  PROCEND rap$issue_message;
MODEND ram$issue_message;
