*copyc osd$default_pragmats
MODULE iim$change_terminal_class;
?? TITLE := 'MODULE iim$change_terminal_class' ??

?? PUSH (LISTEXT := ON) ??
*copyc iit$connection_description
*copyc ost$status
?? POP ??
*copyc iip$build_super_msg_skeleton
*copyc iip$sign_on
*copyc iip$sign_off
*copyc iip$add_sender
*copyc iip$clear_lock
*copyc iip$convert_downline_term_char
*copyc iiv$interactive_terminated
*copyc iip$set_lock
*copyc iip$send_to_pass_on
*copyc mld$memory_link_declarations

?? NEWTITLE := 'PROCEDURE iip$change_terminal_class', EJECT ??

  PROCEDURE [XDCL] iip$change_terminal_class (connection_desc_pointer:
    ^iit$connection_description;
        new_terminal_class: iit$terminal_class;
    VAR status: ost$status);

    VAR
      output_supervisory_message: iit$output_supervisory_message,
      define_term_char_message: iit$output_data_message,
      term_char_message_length: mlt$message_length,
      appl: mlt$application_name,
      i: integer,
      local_status: ost$status;

  /send_define_term_char_message/
    BEGIN

{ Build a define terminal characteristics message to set the terminal class.

      iip$build_super_msg_skeleton (^output_supervisory_message,
            iic$sm_define_term_char, iic$l_define_term_char);
      output_supervisory_message.header.address := connection_desc_pointer^.
            connection_number;
      output_supervisory_message.header.character_type := iic$8_bit_characters;
      output_supervisory_message.header.block_number := 0;
      output_supervisory_message.define_term_char.term_char_string
            [1].field_number := iic$fn_terminal_class;
      output_supervisory_message.define_term_char.term_char_string
            [1].field_value := new_terminal_class;
      output_supervisory_message.header.text_length := 4;
      iip$convert_downline_term_char (#LOC (output_supervisory_message), #LOC
            (define_term_char_message), iic$l_define_term_char * 8,
            term_char_message_length);

{ Send the define terminal terminal characteristics message to Pass-On.

      iip$sign_on (appl, status);
      IF NOT status.normal THEN
        RETURN;
      IFEND;
      iip$add_sender (appl, status);
      IF NOT status.normal THEN
        iip$sign_off (appl, local_status);
        RETURN;
      IFEND;
      iip$send_to_pass_on (appl, #LOC (define_term_char_message),
            term_char_message_length, iic$output_data_message +
            iiv$job_connection, status);
      iip$sign_off (appl, local_status);
      IF NOT status.normal THEN
        EXIT /send_define_term_char_message/;
      IFEND;

    END /send_define_term_char_message/;

  PROCEND iip$change_terminal_class;

MODEND iim$change_terminal_class;
