
*copyc OSD$DEFAULT_PRAGMATS
MODULE iim$direct_store_trm_conn_atts;

?? TITLE := '  [XDCL] IIP$DIRECT_STORE_TRM_CONN_ATTS' ??
?? PUSH (LISTEXT := ON) ??
*copyc amc$condition_code_limits
*copyc ame$improper_file_id
*copyc bap$validate_file_identifier
*copyc ife$error_codes
*copyc iip$store_term_conn_attributes
*copyc iip$store_terminal
*copyc iiv$interactive_terminated
*copyc osp$set_status_abnormal
?? EJECT ??

  PROCEDURE [XDCL, #GATE] iip$direct_store_trm_conn_atts (file_identifier:
    amt$file_identifier;
        terminal_attributes: ift$connection_attributes;
    VAR status: ost$status);

    CONST
      interface_name = 'IIP$DIRECT_STORE_TRM_CONN_ATTS';

    VAR
      file_id_is_valid: boolean,
      file_instance: ^bat$task_file_entry,
      open_file_dsc_pointer: ^iit$open_file_description,
      store_attributes: ^ift$connection_attributes,
      st_open_file_dsc_pointer: ^iit$st_open_file_description;


    status.normal := TRUE;

*copy bai$validate_file_identifier

    IF NOT file_id_is_valid THEN
      osp$set_status_abnormal (amc$access_method_id, ame$improper_file_id,
            interface_name, status);
      RETURN;
    IFEND;

    IF (file_instance <> NIL) THEN
      IF file_instance^.device_class =
        rmc$terminal_device THEN
        CASE iiv$network_identifier OF
        = iic$cdcnet_network =
          st_open_file_dsc_pointer :=
          file_instance^.st_open_file_dsc_pointer;
          iip$store_term_conn_attributes (file_identifier,
            st_open_file_dsc_pointer, ^terminal_attributes, status);
        = iic$dsiaf_network =
          open_file_dsc_pointer :=
          file_instance^.open_file_dsc_pointer;
          iip$store_terminal (file_identifier, open_file_dsc_pointer,
            ^terminal_attributes, status);
        ELSE
        CASEND;

      ELSE
        osp$set_status_abnormal (ifc$interactive_facility_id,
          ife$file_name_not_terminal,
          file_instance^.local_file_name,status);
      IFEND;
    ELSE
      osp$set_status_abnormal (ifc$interactive_facility_id,
        ife$file_name_not_terminal,
        file_instance^.local_file_name,status);
    IFEND;
  PROCEND iip$direct_store_trm_conn_atts;
MODEND iim$direct_store_trm_conn_atts;
