
  TYPE
    cst$external_interface_vector = record
      acknowledge: ^PROCEDURE
        (    ack_type: cst$audible_acknowledgement;
         VAR status: ost$status),

      allocate_field: ^PROCEDURE
        (    field_attributes: cst$field_attributes;
         VAR field_number: cst$field_number;
         VAR status: ost$status),

      change_background_color: ^PROCEDURE
        (    field_number: cst$field_number;
             color_index: cst$color_index;
         VAR status: ost$status),

      change_capability_level: ^PROCEDURE
        (    capability_level: cst$capability_level;
         VAR status: ost$status),

      change_changed_text_mode: ^PROCEDURE
        (    change_indicator: boolean;
         VAR status: ost$status),

      change_cursor_position: ^PROCEDURE
        (    field_number: cst$field_number;
             character_position: cst$character_position;
             line_number: cst$line_number;
         VAR status: ost$status),

      change_device_dimensions: ^PROCEDURE
        (    number_of_characters: cst$visible_character_position;
             number_of_lines: cst$line_number;
         VAR dimensions_accepted: boolean;
         VAR status: ost$status),

      change_field_attributes: ^PROCEDURE
        (    field_number: cst$field_number;
             field_attributes: cst$field_attributes;
         VAR status: ost$status),

      change_field_boundaries: ^PROCEDURE
        (    fixed_boundaries: boolean;
         VAR status: ost$status),

      change_field_direction: ^PROCEDURE
        (    field_number: cst$field_number;
             display_direction: cst$direction_index;
         VAR status: ost$status),

      change_foreground_color: ^PROCEDURE
        (    field_number: cst$field_number;
             color_index: cst$color_index;
         VAR status: ost$status),

      change_graphic_attributes: ^PROCEDURE
        (    graphic_identifier: cst$graphic_identifier;
             attribute_set: cst$attribute_set;
         VAR status: ost$status),

      change_input_timeout: ^PROCEDURE
        (    timeout: cst$input_timeout;
         VAR status: ost$status),

      change_interaction_style: ^PROCEDURE
        (    file_identifier: amt$file_identifier;
             interaction_style: cst$interaction_style;
         VAR status: ost$status),

      change_io_position: ^PROCEDURE
        (    field_number: cst$field_number;
             line_number: cst$line_number;
         VAR status: ost$status),

      change_line_color: ^PROCEDURE
        (    color_index: cst$color_index;
         VAR status: ost$status),

      change_line_width: ^PROCEDURE
        (    line_width: cst$line_width;
         VAR status: ost$status),

      change_logical_highlighting: ^PROCEDURE
        (    field_number: cst$field_number;
             logical_attribute: cst$logical_highlighting_style;
         VAR status: ost$status),

      change_menu_item_strings: ^PROCEDURE
        (    new_menu_item_strings: ^array [1 .. * {csc$max_menu_items}] OF
                   cst$menu_item_string;
             menu_list: cst$menu_list;
         VAR status: ost$status),

      change_model_name: ^PROCEDURE
        (    new_model_name: cst$model_name;
         VAR status: ost$status),

      change_multiple_screens: ^PROCEDURE
        (    multiple_screens_allowed: boolean;
         VAR status: ost$status),

      change_page_attributes: ^PROCEDURE
        (    page_attributes: cst$page_attributes;
         VAR status: ost$status),

      change_page_color: ^PROCEDURE
        (    color_index: cst$color_index;
         VAR status: ost$status),

      change_page_tabs: ^PROCEDURE
        (    tab_positions: cst$tab_positions;
         VAR status: ost$status),

      change_partial_screen: ^PROCEDURE
        (    file_identifier: amt$file_identifier;
             interaction_style: cst$interaction_style;
             rows: 0 .. csc$max_y_position;
         VAR old_interaction_style: {input,output} cst$interaction_style;
         VAR reserve: cst$lines_used;
         VAR status: ost$status),

      change_phys_highlighting: ^PROCEDURE
        (    field_number: cst$field_number;
             highlighting_style: cst$phys_highlighting_style;
         VAR status: ost$status),

      change_screen_identifier: ^PROCEDURE
        (    new_file_id: amt$file_identifier;
         VAR old_file_id: amt$file_identifier;
         VAR status: ost$status),

      change_text_attributes: ^PROCEDURE
        (    field_number: cst$field_number;
             attribute_set: cst$attribute_set;
         VAR status: ost$status),

      classify_field_event: ^PROCEDURE
        (    field_number: cst$field_number;
         VAR item_number: cst$menu_item_number;
         VAR status: ost$status),

      clear_field: ^PROCEDURE
        (    field_number: cst$field_number;
         VAR status: ost$status),

      clear_page: ^PROCEDURE
        (VAR status: ost$status),

      clear_page_tabs: ^PROCEDURE
        (VAR status: ost$status),

      clear_screen: ^PROCEDURE
        (VAR status: ost$status),

      create_field: ^PROCEDURE
        (    x_position: cst$x_position;
             y_position: cst$y_position;
             visible_characters: cst$visible_character_position;
             visible_lines: cst$line_number;
             characters: cst$character_position;
             lines: cst$line_number;
             input: boolean;
             output: boolean;
             justification: cst$field_justification;
             boundary_processing: cst$boundary_processing;
         VAR field_number: cst$field_number;
         VAR status: ost$status),

      delete_field: ^PROCEDURE
        (    field_number: cst$field_number;
         VAR status: ost$status),

      delete_graphic: ^PROCEDURE
        (    graphic_identifier: cst$graphic_identifier;
         VAR status: ost$status),

      disable_menu_item: ^PROCEDURE
        (    item_number: cst$menu_item_number;
         VAR status: ost$status),

      disable_page: ^PROCEDURE
        (VAR status: ost$status),

      display_menu: ^PROCEDURE
        (    menu_rows: cst$number_of_menu_rows;
             reserve_lines: cst$lines_used;
         VAR lines_used: cst$lines_used;
         VAR status: ost$status),

      enable_menu_item: ^PROCEDURE
        (    item_number: cst$menu_item_number;
         VAR status: ost$status),

      enable_page: ^PROCEDURE
        (VAR status: ost$status),

      flush_events: ^PROCEDURE
        (VAR status: ost$status),

      get_application_parameters: ^PROCEDURE
        (    application_name: cst$application_name;
             reset_to_beginning: boolean;
         VAR text: cst$string;
         VAR end_of_text: boolean;
         VAR length: 0 .. csc$max_string;
         VAR status: ost$status),

      get_dev_reverse_attr: ^PROCEDURE
        (VAR reversed_screen_mode: boolean;
         VAR reversed_field_capability: boolean;
         VAR status: ost$status),

      get_device_attributes: ^PROCEDURE
        (VAR device_attributes: cst$device_attributes;
         VAR status: ost$status),

      get_device_characteristics: ^PROCEDURE
        (VAR terminal_characteristics: cst$terminal_characteristics;
         VAR status: ost$status),

      get_device_dimensions: ^PROCEDURE
        (VAR number_of_characters: cst$visible_character_position;
         VAR number_of_lines: cst$line_number;
         VAR status: ost$status),

      get_event: ^PROCEDURE
        (VAR event_identifier: cst$event_identifier;
         VAR status: ost$status),

      get_event_label: ^PROCEDURE
        (    event_identifier: cst$event_identifier;
         VAR text: cst$string;
         VAR status: ost$status),

      get_event_mapping: ^PROCEDURE
        (    standard_function: cst$standard_functions;
         VAR application_function: cst$application_functions;
         VAR mapped: boolean;
         VAR status: ost$status),

      get_event_name: ^PROCEDURE
        (    event_identifier: cst$event_name_identifier;
         VAR name: ost$name;
         VAR length: 0 .. osc$max_name_size;
         VAR status: ost$status),

      get_field_attributes: ^PROCEDURE
        (    field_number: cst$field_number;
         VAR field_attributes: cst$field_attributes;
         VAR status: ost$status),

      get_field_direction: ^PROCEDURE
        (    field_number: cst$field_number;
         VAR display_direction: cst$direction_index;
         VAR status: ost$status),

      get_io_position: ^PROCEDURE
        (VAR field_number: cst$field_number;
         VAR line_number: cst$line_number;
         VAR end_of_text: boolean;
         VAR status: ost$status),

      get_menu_item_string: ^PROCEDURE
        (    menu_item_number: cst$menu_item_number;
         VAR menu_string: ^clt$command_line;
         VAR status: ost$status),

      get_menu_strings: ^PROCEDURE
        (    menu_strings: ^cst$menu_strings;
         VAR status: ost$status),

      get_next_application_param: ^PROCEDURE
        (    reset_to_beginning: boolean;
         VAR application_name: cst$application_name;
         VAR text: cst$string;
         VAR end_of_text: boolean;
         VAR length: 0 .. csc$max_string;
         VAR status: ost$status),

      get_page_attributes: ^PROCEDURE
        (VAR page_attributes: cst$page_attributes;
         VAR status: ost$status),

      get_screen_identifier: ^PROCEDURE
        (VAR old_file_id: amt$file_identifier;
         VAR status: ost$status),

      get_text: ^PROCEDURE
        (VAR text: cst$data_string;
         VAR length: cst$data_string_length;
         VAR end_of_line: boolean;
         VAR end_of_text: boolean;
         VAR status: ost$status),

      mark: ^PROCEDURE
        (    field_number: cst$field_number;
             start_character_position: cst$character_position;
             start_line_number: cst$line_number;
             end_character_position: cst$character_position;
             end_line_number: cst$line_number;
             mark_type: cst$marking_type;
         VAR status: ost$status),

      mark_menu_item: ^PROCEDURE
        (    item_number: cst$menu_item_number;
         VAR status: ost$status),

      poly_hv_line: ^PROCEDURE
        (    xy_coordinates: cst$xy_coordinates;
         VAR graphic_identifier: cst$graphic_identifier;
         VAR status: ost$status),

      poly_intersect: ^PROCEDURE
        (    graphic_identifier: cst$graphic_identifier;
             xy_coordinates: cst$xy_coordinates;
             intersection_types: cst$intersection_types;
         VAR status: ost$status),

      pop_page: ^PROCEDURE
        (VAR status: ost$status),

      position_cursor: ^PROCEDURE
        (    field_number: cst$field_number;
             character_position: cst$character_position;
             line_number: cst$line_number;
         VAR left_character_position: cst$character_position;
         VAR upper_line_number: cst$line_number;
         VAR status: ost$status),

      position_field_data: ^PROCEDURE
        (    field_number: cst$field_number;
             character_position: cst$character_position;
             line_number: cst$line_number;
         VAR status: ost$status),

      push_page: ^PROCEDURE
        (VAR status: ost$status),

      put_text: ^PROCEDURE
        (    text: ^cst$data_string;
             end_of_line: boolean;
         VAR end_of_text: boolean;
         VAR status: ost$status),

      reposition_field: ^PROCEDURE
        (    field_number: cst$field_number;
             x_position: cst$x_position;
             y_position: cst$y_position;
         VAR status: ost$status),

      resize_field: ^PROCEDURE
        (    field_number: cst$field_number;
             visible_characters: cst$visible_character_position;
             visible_lines: cst$line_number;
         VAR status: ost$status),

      send_line_initialization: ^PROCEDURE
        (VAR status: ost$status),

      send_screen_initialization: ^PROCEDURE
        (VAR status: ost$status),

      set_menu: ^PROCEDURE
        (    menu_classes: cst$menu_class;
             menu_list: cst$menu_list;
         VAR status: ost$status),

      set_menu_strings: ^PROCEDURE
        (    menu_strings: ^cst$menu_strings;
         VAR status: ost$status),

      set_standard_menu: ^PROCEDURE
        (    menu_classes: cst$menu_class;
             menu_list: cst$menu_list;
         VAR status: ost$status),

      shift_fields: ^PROCEDURE
        (    start_field: cst$field_number;
             end_field: cst$field_number;
             offset: cst$shift_field_offset;
         VAR status: ost$status),

      shift_lines: ^PROCEDURE
        (    field_number: cst$field_number;
             start_line: cst$line_number;
             end_line: cst$line_number;
             offset: cst$shift_line_offset;
         VAR status: ost$status),

      toggle_label: ^PROCEDURE
        (    item_number: cst$menu_item_number;
         VAR status: ost$status),

      unmark_menu_item: ^PROCEDURE
        (    item_number: cst$menu_item_number;
         VAR status: ost$status),

      update_device: ^PROCEDURE
        (VAR status: ost$status),

      accept_input: ^PROCEDURE
        (VAR control: cst$control;
         VAR x_position: cst$x_position;
         VAR y_position: cst$y_position;
         VAR status: ost$status),

      change_workspace_attributes: ^PROCEDURE
        (    x_position: cst$x_position;
             y_position: cst$y_position;
             width: cst$width;
             height: cst$height;
             attribute: cst$attribute;
         VAR status: ost$status),

      change_workspace_text: ^PROCEDURE
        (    x_position: cst$x_position;
             y_position: cst$y_position;
             text: cst$string;
             attribute: cst$attribute;
         VAR status: ost$status),

      clear_workspace_area: ^PROCEDURE
        (    x_position: cst$x_position;
             y_position: cst$y_position;
             width: cst$width;
             height: cst$height;
             attribute: cst$attribute;
         VAR status: ost$status),

      close_workstation: ^PROCEDURE
        (VAR status: ost$status),

      display_workspace: ^PROCEDURE
        (VAR status: ost$status),

      draw_lines: ^PROCEDURE
        (    xy_coordinates: cst$xy_coordinates;
             attribute: cst$attribute;
         VAR status: ost$status),

      get_changed_text: ^PROCEDURE
        (    p_change_container: ^SEQ (*);
         VAR p_changed_text: {output} ^SEQ (*);
         VAR more_changes: boolean;
         VAR status: ost$status),

      get_workspace_text: ^PROCEDURE
        (    x_position: cst$x_position;
             y_position: cst$y_position;
         VAR text: cst$string;
         VAR status: ost$status),

      open_workstation: ^PROCEDURE
        (    width: cst$width;
             height: cst$height;
             attribute: cst$attribute;
         VAR status: ost$status),

      set_workspace_cursor: ^PROCEDURE
        (    x_position: cst$x_position;
             y_position: cst$y_position;
         VAR status: ost$status),

      cdc_extension: ^SEQ (*),
      site_extension: ^SEQ (*),
      user_extension: ^SEQ (*),

    recend;

?? PUSH (LISTEXT := ON) ??
*copyc cst$audible_acknowledgement
*copyc cst$field_attributes
*copyc cst$field_number
*copyc ost$status
*copyc cst$color_index
*copyc cst$capability_level
*copyc cst$character_position
*copyc cst$line_number
*copyc cst$visible_character_position
*copyc cst$direction_index
*copyc cst$graphic_identifier
*copyc cst$attribute_set
*copyc cst$input_timeout
*copyc amt$file_identifier
*copyc cst$interaction_style
*copyc cst$line_width
*copyc cst$logical_highlighting_style
*copyc cst$model_name
*copyc cst$page_attributes
*copyc cst$tab_positions
*copyc cst$phys_highlighting_style
*copyc cst$menu_item_number
*copyc cst$x_position
*copyc cst$y_position
*copyc cst$visible_character_position
*copyc cst$character_position
*copyc cst$line_number
*copyc cst$field_justification
*copyc cst$boundary_processing
*copyc cst$number_of_menu_rows
*copyc cst$lines_used
*copyc cst$application_name
*copyc cst$string
*copyc csc$max_string
*copyc cst$device_attributes
*copyc cst$terminal_characteristics
*copyc cst$event_identifier
*copyc cst$standard_functions
*copyc cst$application_functions
*copyc cst$event_name_identifier
*copyc ost$name
*copyc cst$data_string
*copyc cst$data_string_length
*copyc cst$marking_type
*copyc cst$xy_coordinates
*copyc cst$intersection_types
*copyc cst$menu_class
*copyc cst$menu_list
*copyc cst$shift_field_offset
*copyc cst$shift_line_offset
*copyc cst$menu_item_string
*copyc clt$command_line
*copyc cst$menu_strings
*copyc cst$control
*copyc cst$height
*copyc cst$width
*copyc cst$attribute
*copyc cst$text_change_description
?? POP ??
