{ Common Deck OFT$DESIGNER_SCREENS_TYPES

  TYPE
    oft$display_kind = (ofc$dt_initiated_job_display,
          ofc$dt_unit_statistic_display),
    oft$display_kinds = set of oft$display_kind;

  CONST
    ofc$max_display_fields = 100,
    ofc$max_display_width = 130,
    ofc$max_incremental_fields = 6;

  TYPE
    oft$mass_storage_display_screen = (ofc$ved_ms, ofc$ved_mss, ofc$ved_msu);

  TYPE
    oft$msdi_display_option_value = (ofc$msdi_total,
          ofc$msdi_volume_status_summary, ofc$msdi_classes_out_of_space,
          ofc$msdi_crit_class_added_count),
    oft$msdi_display_option_values = set of oft$msdi_display_option_value,
    oft$msdi_display_options = record
      default: boolean,
      values: oft$msdi_display_option_values,
    recend;

  TYPE
    oft$msdi_sort_option_key = (ofc$msdi_avt, ofc$msdi_lut, ofc$msdi_vsn,
          ofc$msdi_user_defined),
    oft$msdi_sort_option_entries = array [1 .. * ] of
          oft$msdi_sort_option_entry,

    oft$msdi_sort_option_entry = record
      vsn: rmt$recorded_vsn,
      avt_index: dmt$active_volume_table_index,
    recend,

    oft$msdi_sort_option = record
      saved_sort_option: boolean,
      case key: oft$msdi_sort_option_key of
      = ofc$msdi_avt =
        ,
      = ofc$msdi_lut =
        ,
      = ofc$msdi_vsn =
        ,
      = ofc$msdi_user_defined =
        display_omitted_units: boolean,
        sorted_by_vsn: boolean,
        entries_p: ^oft$msdi_sort_option_entries,
      casend,
    recend;

  TYPE
    oft$msdi_volume_access_control = record
      last_used_index: integer,
      avt_entries_displayed_p: ^array [ * ] of boolean,
      sort_option_p: ^oft$msdi_sort_option,
    recend;

  TYPE
    oft$msdi_space_quantity = (ofc$msdi_default_space_quantity, ofc$msdi_dau,
          ofc$msdi_mbytes),
    oft$msdi_space_selection = (ofc$msdi_default_space_select,
          ofc$msdi_mat_dat, ofc$msdi_capacity_available);

  TYPE
    oft$mass_storage_display_infos = array [oft$mass_storage_display_screen] of
          oft$mass_storage_display_info,
    oft$mass_storage_display_info = record
      display_options: oft$msdi_display_options,
      sort_option: oft$msdi_sort_option,
      space_quantity: oft$msdi_space_quantity,
      space_selection: oft$msdi_space_selection,
    recend;

  TYPE
    oft$access_display_request_code = (ofc$adrc_get, ofc$adrc_create,
          ofc$adrc_change, ofc$adrc_delete, ofc$adrc_reset),

    oft$display_descriptions_p = ^oft$display_description,

    oft$max_display_descriptions_p = ^oft$max_display_description,

    oft$display_description_header = record
      display_name: ost$name,
      display_name_abbrev: ost$name,
      next_description_p: oft$display_descriptions_p,
      incremental_data_p: ^oft$save_incremental_data,
      title: string (ofc$max_display_width + 1),
      jobs_per_line: 1 .. ofc$max_display_width,
      column_width: 1 .. ofc$max_display_width,
      job_selection: oft$job_selection,
      display_blank_lines: boolean,
      display_system_line: boolean,
      system_line_info: oft$system_line_info,
      field_count: oft$field_count,
    recend,

    oft$display_description = record
      header: oft$display_description_header,
      fields: oft$field_descriptions,
    recend,

    oft$max_display_description = record
      header: oft$display_description_header,
      fields: oft$max_field_descriptions,
    recend,

    oft$job_selection = (ofc$js_active, ofc$js_initiated),

    oft$field_descriptions = array [1 .. * ] of oft$field_description,
    oft$max_field_descriptions = array [1 .. 100] of oft$field_description,

    oft$field_description = record
      field_id: oft$field_id,
      field_title: ost$name,
      width: 1 .. ofc$max_display_width,
      scale: oft$scale_divisor,
      field_overflow_action: oft$field_overflow_action,
      incremental: boolean,
      field_selection: oft$field_selection,
      non_selection_action: oft$non_selection_action,
      pack: oft$packed_field_attributes,
    recend,

    oft$packed_field_attributes = packed record
      field_id: oft$field_id,
      width: 1 .. ofc$max_display_width,
      scale: oft$scale_divisor,
      field_overflow_action: oft$field_overflow_action,
      incremental: boolean,
      field_selection: oft$field_selection,
      non_selection_action: oft$non_selection_action,
    recend,

    oft$scale_divisor = 0 .. 1000000000,

    oft$numeric_display_mode_kind = (ofc$ndm_total, ofc$ndm_interval),

    oft$numeric_display_mode = record
      case kind: oft$numeric_display_mode_kind of
      = ofc$ndm_total =
        ,
      = ofc$ndm_interval =
        interval: ost$free_running_clock,
      casend,
    recend,

    oft$numeric_selection_mode = (ofc$nsm_total, ofc$nsm_incremental),

    oft$field_selection = (ofc$fs_unconditional, ofc$fs_active,
          ofc$fs_swapped),

    oft$field_overflow_action = (ofc$foa_scale, ofc$foa_maximum,
          ofc$foa_asterisk),

    oft$non_selection_action = (ofc$nsa_skip, ofc$nsa_blank),

    oft$field_count = 0 .. ofc$max_display_fields,

    oft$field_index = 1 .. ofc$max_display_fields,

    oft$save_incremental_data = array [0 .. * ] of
          oft$save_incremental_data_entry,

    oft$save_incremental_data_entry = record
      ssn_id: string (8),
      last_clock: ost$free_running_clock,
      int: array [0 .. ofc$max_incremental_fields - 1] of integer,
    recend;

?? FMT (FORMAT := OFF) ??
    TYPE
      oft$field_id = (
        ofc$fi_active_io_pages,
        ofc$fi_active_io_requests,
        ofc$fi_ajl_ordinal,
        ofc$fi_cp_time_increment,
        ofc$fi_cp_time_job,
        ofc$fi_cp_time_monitor,
        ofc$fi_cp_time_total,
        ofc$fi_dispatching_priority,
        ofc$fi_dispatching_priority_act,
        ofc$fi_display_message,
        ofc$fi_fill,
        ofc$fi_guaranteed_service_rem,
        ofc$fi_hung_task_in_job_flag,
        ofc$fi_ijl_ordinal,
        ofc$fi_job_abort_disposition,
        ofc$fi_job_class,
        ofc$fi_job_entry_status,
        ofc$fi_job_mode,
        ofc$fi_job_priority,
        ofc$fi_job_recovery_disposition,
        ofc$fi_job_status,
        ofc$fi_job_swap_count,
        ofc$fi_last_think_time,
        ofc$fi_memory_pages,
        ofc$fi_page_fault_count,
        ofc$fi_percent_cp_usage,
        ofc$fi_permanent_file_space,
        ofc$fi_ps_pages_assigned,
        ofc$fi_ps_pages_from_server,
        ofc$fi_ps_pages_reclaimed,
        ofc$fi_ps_page_in,
        ofc$fi_ready_task_count,
        ofc$fi_service_accumulator,
        ofc$fi_service_class,
        ofc$fi_service_since_swap,
        ofc$fi_ssn_full,
        ofc$fi_ssn_long,
        ofc$fi_ssn_short,
        ofc$fi_swap_entry_status,
        ofc$fi_swap_in_wait_time,
        ofc$fi_swap_reason,
        ofc$fi_swap_status,
        ofc$fi_temporary_file_space,
        ofc$fi_terminal_name,
        ofc$fi_think_time,
        ofc$fi_thrashing_flag,
        ofc$fi_time_in_swap_state,
        ofc$fi_user_job_name,
        ofc$fi_working_set_size);

?? FMT (FORMAT := ON) ??

{Unit Statistic Display Types

  CONST
    ofc$max_uf_or_selections = 5,
    ofc$max_uf_and_selections = 3;

  TYPE
    oft$us_or_selections_count = 0 .. ofc$max_uf_or_selections,
    oft$us_or_selections_index = 1 .. ofc$max_uf_or_selections,
    oft$us_and_selections_count = 0 .. ofc$max_uf_and_selections,
    oft$us_and_selections_index = 1 .. ofc$max_uf_and_selections;

  TYPE
    oft$unit_stat_display_desc = record
      header: oft$us_display_descript_header,
      fields: oft$us_field_descriptions,
    recend;

  TYPE
    oft$max_unit_stat_display_desc = record
      header: oft$us_display_descript_header,
      fields: oft$max_us_field_descriptions,
    recend;

  TYPE
    oft$us_display_descript_header = record
      display_name: ost$name,
      display_name_abbrev: ost$name,
      next_description_p: ^oft$unit_stat_display_desc,
      incremental_data_p: ^oft$us_incremental_unit_stats,
      title: string (ofc$max_display_width + 1),
      units_per_line: 1 .. ofc$max_display_width,
      column_width: 1 .. ofc$max_display_width,
      unit_selection: oft$us_unit_stat_selections,
      display_blank_lines: boolean,
      display_system_line: boolean,
      incremental_data_last_reset: ost$free_running_clock,
      incremental_data_reset_freq: integer,
      incremental_data_required: boolean,
      system_line_info: oft$system_line_info,
      field_sources: oft$us_field_sources,
      field_count: oft$field_count,
    recend,

    oft$us_field_descriptions = array [1 .. * ] of oft$us_field_description,
    oft$max_us_field_descriptions = array [1 .. 100] of
          oft$us_field_description,

    oft$us_field_description = record
      field_id: oft$us_unit_statistic_key,
      field_title: ost$name,
      width: 1 .. ofc$max_display_width,
      display_option: integer,
      fraction_width: 1 .. ofc$max_display_width,
      scale: oft$scale_divisor,
      field_overflow_action: oft$field_overflow_action,
      numeric_display_mode: oft$numeric_display_mode,
      numeric_selection_mode: oft$numeric_selection_mode,
      field_selections: oft$us_field_selections,
      non_selection_action: oft$non_selection_action,
    recend,

    oft$us_field_selections = record
      parity_protect_enabled_selector: oft$us_boolean_selector,
      parity_protected_device_select: oft$us_boolean_selector,
      unit_disabled_selector: oft$us_boolean_selector,
    recend,

    oft$us_field_sources = set of oft$us_field_source,
    oft$us_field_source = (ofc$us_vsn, ofc$us_statistic_data,
          ofc$us_extended_statistic_data, ofc$us_product_identification,
          ofc$us_logical_unit_table, ofc$us_unit_interface_table,
          ofc$us_active_volume_table, ofc$us_physical_device_attrib,
          ofc$us_logical_device_attribute),

    oft$us_incremental_unit_stats = array [1 .. * ] of
          oft$unit_statistic_data_item,

    oft$us_unit_stat_selection = record
      incremental: boolean,
      case key: oft$us_unit_statistic_key of
      = ofc$us_fill =
        ,
      = ofc$us_bytes_per_mau =
        bytes_per_mau_selector: oft$us_integer_selector,
      = ofc$us_channel =
        channel_selector: oft$us_channel_selector,
      = ofc$us_current_cylinder =
        current_cylinder_selector: oft$us_integer_selector,
      = ofc$us_element_name =
        element_name_selector: oft$us_name_selector,
      = ofc$us_equipment =
        equipment_selector: oft$us_integer_selector,
      = ofc$us_force_format =
        force_format_selector: oft$us_boolean_selector,
      = ofc$us_intermediate_errors =
        intermediate_errors_selector: oft$us_integer_selector,
      = ofc$us_iou_number =
        iou_number_selector: oft$us_integer_selector,
      = ofc$us_last_request_good =
        last_request_good_selector: oft$us_boolean_selector,
      = ofc$us_logical_unit_number =
        logical_unit_number_selector: oft$us_integer_selector,
      = ofc$us_off_line_drive_number =
        off_line_drive_number_selector: oft$us_integer_selector,
      = ofc$us_parity_protect_enabled =
        parity_protect_enabled_selector: oft$us_boolean_selector,
      = ofc$us_parity_protected_device =
        parity_protected_device_select: oft$us_boolean_selector,
      = ofc$us_read_mau_count =
        read_mau_count_selector: oft$us_integer_selector,
      = ofc$us_read_qtime =
        read_qtime_selector: oft$us_integer_selector,
      = ofc$us_read_requests =
        read_requests_selector: oft$us_integer_selector,
      = ofc$us_recorded_vsn =
        recorded_vsn_selector: oft$us_name_selector,
      = ofc$us_recovered_errors =
        recovered_errors_selector: oft$us_integer_selector,
      = ofc$us_requests_cause_skip_cyl =
        requests_cause_skip_cyl_select: oft$us_integer_selector,
      = ofc$us_restoring_drive =
        restoring_drive_selector: oft$us_boolean_selector,
      = ofc$us_strm_req_count_read =
        strm_req_count_read_selector: oft$us_integer_selector,
      = ofc$us_strm_req_count_write =
        strm_req_count_write_selector: oft$us_integer_selector,
      = ofc$us_strm_req_fail_cnt_read =
        strm_req_fail_cnt_read_selector: oft$us_integer_selector,
      = ofc$us_strm_req_fail_cnt_wrt =
        strm_req_fail_cnt_wrt_selector: oft$us_integer_selector,
      = ofc$us_strm_request_possible =
        strm_request_possible_selector: oft$us_boolean_selector,
      = ofc$us_swap_in_mau_count =
        swap_in_mau_count_selector: oft$us_integer_selector,
      = ofc$us_swap_in_qtime =
        swap_in_qtime_selector: oft$us_integer_selector,
      = ofc$us_swap_in_requests =
        swap_in_requests_selector: oft$us_integer_selector,
      = ofc$us_swap_out_data_mau_count =
        swap_out_data_mau_count_select: oft$us_integer_selector,
      = ofc$us_swap_out_datapres_maus =
        swap_out_datapres_maus_selector: oft$us_integer_selector,
      = ofc$us_swap_out_qtime =
        swap_out_qtime_selector: oft$us_integer_selector,
      = ofc$us_swap_out_requests =
        swap_out_requests_selector: oft$us_integer_selector,
      = ofc$us_total_cylinders_skipped =
        total_cylinders_skipped_select: oft$us_integer_selector,
      = ofc$us_total_errors =
        total_errors_selector: oft$us_integer_selector,
      = ofc$us_unit_configured =
        unit_configured_selector: oft$us_boolean_selector,
      = ofc$us_unit_disabled =
        unit_disabled_selector: oft$us_boolean_selector,
      = ofc$us_unit_type =
        unit_type_selector: oft$us_disk_unit_selector,
      = ofc$us_unit_used =
        unit_used_selector: oft$us_boolean_selector,
      = ofc$us_unrecovered_errors =
        unrecovered_errors_selector: oft$us_integer_selector,
      = ofc$us_write_data_mau_count =
        write_data_mau_count_selector: oft$us_integer_selector,
      = ofc$us_write_datapres_maus =
        write_datapres_maus_selector: oft$us_integer_selector,
      = ofc$us_write_qtime =
        write_qtime_selector: oft$us_integer_selector,
      = ofc$us_write_requests =
        write_requests_selector: oft$us_integer_selector,
      casend,
    recend;

  TYPE
    oft$us_unit_stat_selections = record
      number_of_or_selections: oft$us_or_selections_count,
      or_selections: oft$us_or_unit_stat_selections,
    recend;

  TYPE
    oft$us_or_unit_stat_selections = array [oft$us_or_selections_index] of
          oft$us_or_unit_stat_selection;

  TYPE
    oft$us_or_unit_stat_selection = record
      number_of_and_selections: oft$us_and_selections_count,
      and_selections: oft$us_and_unit_stat_selections,
    recend;

  TYPE
    oft$us_and_unit_stat_selections = array [oft$us_and_selections_index] of
          oft$us_unit_stat_selection;

?? FMT (TAB := '=', 40) ??

  CONST
    ofc$us_unit_stat_key_min           = 0,
    ofc$us_unit_stat_key_max           = ofc$us_remaining_bytes,

    ofc$us_fill                        = ofc$us_unit_stat_key_min + 000,

    ofc$us_avrg_byte_count_per_req     = ofc$us_unit_stat_key_min + 001,
    ofc$us_bytes_per_mau               = ofc$us_unit_stat_key_min + 002,
    ofc$us_channel                     = ofc$us_unit_stat_key_min + 003,
    ofc$us_current_cylinder            = ofc$us_unit_stat_key_min + 004,
    ofc$us_element_name                = ofc$us_unit_stat_key_min + 005,
    ofc$us_equipment                   = ofc$us_unit_stat_key_min + 006,
    ofc$us_force_format                = ofc$us_unit_stat_key_min + 007,
    ofc$us_intermediate_errors         = ofc$us_unit_stat_key_min + 008,
    ofc$us_iou_number                  = ofc$us_unit_stat_key_min + 009,
    ofc$us_last_request_good           = ofc$us_unit_stat_key_min + 010,
    ofc$us_logical_unit_number         = ofc$us_unit_stat_key_min + 011,
    ofc$us_off_line_drive_number       = ofc$us_unit_stat_key_min + 012,
    ofc$us_parity_protect_enabled      = ofc$us_unit_stat_key_min + 013,
    ofc$us_parity_protected_device     = ofc$us_unit_stat_key_min + 014,
    ofc$us_qtime_per_read_request      = ofc$us_unit_stat_key_min + 015,
    ofc$us_qtime_per_swap_in_req       = ofc$us_unit_stat_key_min + 016,
    ofc$us_qtime_per_swap_out_req      = ofc$us_unit_stat_key_min + 017,
    ofc$us_qtime_per_total_request     = ofc$us_unit_stat_key_min + 018,
    ofc$us_qtime_per_write_request     = ofc$us_unit_stat_key_min + 019,
    ofc$us_read_mau_count              = ofc$us_unit_stat_key_min + 020,
    ofc$us_read_qtime                  = ofc$us_unit_stat_key_min + 021,
    ofc$us_read_requests               = ofc$us_unit_stat_key_min + 022,
    ofc$us_recorded_vsn                = ofc$us_unit_stat_key_min + 023,
    ofc$us_recovered_errors            = ofc$us_unit_stat_key_min + 024,
    ofc$us_requests_cause_skip_cyl     = ofc$us_unit_stat_key_min + 025,
    ofc$us_restoring_drive             = ofc$us_unit_stat_key_min + 026,
    ofc$us_seeks                       = ofc$us_unit_stat_key_min + 027,
    ofc$us_stream_req_attempt_total    = ofc$us_unit_stat_key_min + 028,
    ofc$us_stream_req_count_total      = ofc$us_unit_stat_key_min + 029,
    ofc$us_stream_req_failed_total     = ofc$us_unit_stat_key_min + 030,
    ofc$us_streamed_success            = ofc$us_unit_stat_key_min + 031,
    ofc$us_strm_req_count_read         = ofc$us_unit_stat_key_min + 032,
    ofc$us_strm_req_count_write        = ofc$us_unit_stat_key_min + 033,
    ofc$us_strm_req_fail_cnt_read      = ofc$us_unit_stat_key_min + 034,
    ofc$us_strm_req_fail_cnt_wrt       = ofc$us_unit_stat_key_min + 035,
    ofc$us_strm_request_possible       = ofc$us_unit_stat_key_min + 036,
    ofc$us_swap_in_mau_count           = ofc$us_unit_stat_key_min + 037,
    ofc$us_swap_in_qtime               = ofc$us_unit_stat_key_min + 038,
    ofc$us_swap_in_requests            = ofc$us_unit_stat_key_min + 039,
    ofc$us_swap_out_data_mau_count     = ofc$us_unit_stat_key_min + 040,
    ofc$us_swap_out_datapres_maus      = ofc$us_unit_stat_key_min + 041,
    ofc$us_swap_out_qtime              = ofc$us_unit_stat_key_min + 042,
    ofc$us_swap_out_requests           = ofc$us_unit_stat_key_min + 043,
    ofc$us_total_bytes                 = ofc$us_unit_stat_key_min + 044,
    ofc$us_total_cylinders_skipped     = ofc$us_unit_stat_key_min + 045,
    ofc$us_total_errors                = ofc$us_unit_stat_key_min + 046,
    ofc$us_total_input_bytes           = ofc$us_unit_stat_key_min + 047,
    ofc$us_total_output_bytes          = ofc$us_unit_stat_key_min + 048,
    ofc$us_total_qtime                 = ofc$us_unit_stat_key_min + 049,
    ofc$us_total_requests              = ofc$us_unit_stat_key_min + 050,
    ofc$us_unit_configured             = ofc$us_unit_stat_key_min + 051,
    ofc$us_unit_disabled               = ofc$us_unit_stat_key_min + 052,
    ofc$us_unit_type                   = ofc$us_unit_stat_key_min + 053,
    ofc$us_unit_used                   = ofc$us_unit_stat_key_min + 054,
    ofc$us_unrecovered_errors          = ofc$us_unit_stat_key_min + 055,
    ofc$us_write_data_mau_count        = ofc$us_unit_stat_key_min + 056,
    ofc$us_write_datapres_maus         = ofc$us_unit_stat_key_min + 057,
    ofc$us_write_qtime                 = ofc$us_unit_stat_key_min + 058,
    ofc$us_write_requests              = ofc$us_unit_stat_key_min + 059,
    ofc$us_configured                  = ofc$us_unit_stat_key_min + 060,
    ofc$us_entry_interlock             = ofc$us_unit_stat_key_min + 061,
    ofc$us_element_capabilities        = ofc$us_unit_stat_key_min + 062,
    ofc$us_logical_unit_status         = ofc$us_unit_stat_key_min + 063,
    ofc$us_element_access              = ofc$us_unit_stat_key_min + 064,
    ofc$us_queue_count                 = ofc$us_unit_stat_key_min + 065,
    ofc$us_unit_shared                 = ofc$us_unit_stat_key_min + 066,
    ofc$us_allocation_allowed          = ofc$us_unit_stat_key_min + 067,
    ofc$us_space_low                   = ofc$us_unit_stat_key_min + 068,
    ofc$us_space_gone                  = ofc$us_unit_stat_key_min + 069,
    ofc$us_disk_table_status           = ofc$us_unit_stat_key_min + 070,
    ofc$us_class                       = ofc$us_unit_stat_key_min + 071,
    ofc$us_sca_swap_file_activity      = ofc$us_unit_stat_key_min + 072,
    ofc$us_sca_crit_file_activity      = ofc$us_unit_stat_key_min + 073,
    ofc$us_sca_temp_file_activity      = ofc$us_unit_stat_key_min + 074,
    ofc$us_logged_in_for_recovery      = ofc$us_unit_stat_key_min + 075,
    ofc$us_internal_vsn                = ofc$us_unit_stat_key_min + 076,
    ofc$us_mainframe_assigned          = ofc$us_unit_stat_key_min + 077,
    ofc$us_set_name                    = ofc$us_unit_stat_key_min + 078,
    ofc$us_status                      = ofc$us_unit_stat_key_min + 079,
    ofc$us_volume_owner                = ofc$us_unit_stat_key_min + 080,
    ofc$us_current_position_n_log      = ofc$us_unit_stat_key_min + 081,
    ofc$us_allocated_log_size          = ofc$us_unit_stat_key_min + 082,
    ofc$us_device_log_entry_count      = ofc$us_unit_stat_key_min + 083,
    ofc$us_volume_unavailable          = ofc$us_unit_stat_key_min + 084,
    ofc$us_prev_allocation_allowed     = ofc$us_unit_stat_key_min + 085,
    ofc$us_logging_process_damaged     = ofc$us_unit_stat_key_min + 086,
    ofc$us_bytes_per_cylinder          = ofc$us_unit_stat_key_min + 087,
    ofc$us_allocation_size             = ofc$us_unit_stat_key_min + 088,
    ofc$us_transfer_size               = ofc$us_unit_stat_key_min + 089,
    ofc$us_number_dfl_entries          = ofc$us_unit_stat_key_min + 090,
    ofc$us_number_directory_entries    = ofc$us_unit_stat_key_min + 091,
    ofc$us_cylinders_per_device        = ofc$us_unit_stat_key_min + 092,
    ofc$us_maus_per_cylinder           = ofc$us_unit_stat_key_min + 093,
    ofc$us_maus_per_dau                = ofc$us_unit_stat_key_min + 094,
    ofc$us_sectors_per_mau             = ofc$us_unit_stat_key_min + 095,
    ofc$us_sectors_per_track           = ofc$us_unit_stat_key_min + 096,
    ofc$us_capacity                    = ofc$us_unit_stat_key_min + 097,
    ofc$us_available_mat_space         = ofc$us_unit_stat_key_min + 098,
    ofc$us_available_dat_space         = ofc$us_unit_stat_key_min + 099,
    ofc$us_bytes_per_dau               = ofc$us_unit_stat_key_min + 100,
    ofc$us_no_space                    = ofc$us_unit_stat_key_min + 101,
    ofc$us_no_file_entries             = ofc$us_unit_stat_key_min + 102,
    ofc$us_remaining_bytes             = ofc$us_unit_stat_key_min + 103;

?? FMT (CLEARTAB := '=', ALL) ??

  TYPE
    oft$us_unit_statistic_key = ofc$us_unit_stat_key_min ..
          ofc$us_unit_stat_key_max;

  TYPE
    oft$us_integer_selector = record
      min_value: integer,
      max_value: integer,
    recend;

  TYPE
    oft$us_boolean_selector = set of boolean;

  TYPE
    oft$us_channel_selector = record
      number_selector: oft$us_integer_selector,
      port_selector: oft$us_port_selector,
      concurrent_selector: oft$us_boolean_selector,
    recend;

  TYPE
    oft$us_disk_unit_selector = set of oft$us_disk_unit;

  TYPE
    oft$us_name_selector = record
      case kind: oft$us_name_selector_kind of
      = ofc$us_name_value =
        value: ost$name,
      = ofc$us_string_selector =
        string_selector: oft$us_string_selector,
      casend,
    recend;

  TYPE
    oft$us_name_selector_kind = (ofc$us_name_value, ofc$us_string_selector);

  TYPE
    oft$us_port_selector = set of cmt$channel_port;

  TYPE
    oft$us_string_selector = record
      upper_case: boolean,
      value: ost$name,
    recend;

  TYPE
    oft$us_disk_unit = ioc$lowest_disk_unit .. ioc$highest_disk_unit;

  TYPE
    oft$unit_statistic_data = record
      total_data: oft$unit_statistic_data_item,
      incremental_data: oft$unit_statistic_data_item,
      incremental_data_defined: boolean,
    recend;


{This data record contains all data fields from IOT$DISK_UNIT_USAGE and
{ IOT$UNIT_STATUS

  TYPE
    oft$unit_statistic_data_item = record
      logical_unit_number: iot$logical_unit,
      defined_sources: oft$us_field_sources,

      case integer of
      = 0 =
{All Data Items individually
{  iot$disk_unit_usage
        read_requests: integer,
        read_qtime: integer,
        read_mau_count: integer,
        write_requests: integer,
        write_qtime: integer,
        write_data_mau_count: integer,
        write_data_and_preset_maus: integer,
        swap_in_requests: integer,
        swap_in_qtime: integer,
        swap_in_mau_count: integer,
        swap_out_requests: integer,
        swap_out_qtime: integer,
        swap_out_data_mau_count: integer,
        swap_out_data_and_preset_maus: integer,
        streamed_request_possible: boolean,
        streamed_req_count_read: integer,
        streamed_req_failed_count_read: integer,
        streamed_req_count_write: integer,
        streamed_req_failed_count_write: integer,
        requests_causing_skipped_cyl: integer,
        total_cylinders_skipped: integer,
        current_cylinder: iot$cylinder,
        intermediate_errors: integer,
        recovered_errors: integer,
        unrecovered_errors: integer,
        iou_number: dst$iou_number,
        channel: cmt$physical_channel,
        equipment: cmt$physical_equipment_number,
        recorded_vsn: rmt$recorded_vsn, {empty, source: ofc$us_vsn
        bytes_per_mau: iot$bytes_per_mau,
        unit_type: iot$unit_type, {product_identification is displaied
        element_name: cmt$element_name,
        last_request_good: boolean,
        unit_configured: boolean,
        unit_used: boolean,
{ extensions to iot$disk_unit_usage
        average_byte_count_per_request: integer,
        parity_protected_device: boolean,
        qtime_per_read_request: real,
        qtime_per_swap_in_request: real,
        qtime_per_swap_out_request: real,
        qtime_per_total_request: real,
        qtime_per_write_request: real,
        seeks: integer,
        stream_req_count_total: integer,
        stream_req_failed_total: integer,
        stream_req_attempt_total: integer,
        streamed_success: real,
        total_bytes: integer,
        total_errors: integer,
        total_input_bytes: integer,
        total_output_bytes: integer,
        total_qtime: integer,
        total_requests: integer,

{ Product_Identification
        product_identification: record
          case boolean of
          = FALSE =
            str: string (6 + 1 + 3),
          = TRUE =
            value: cmt$product_identification,
          casend,
        recend,

{  Logical Unit Table
        logical_unit_table_index: iot$logical_unit,
        {might be the LUN or LUN - 1 ?
        configured: boolean,
        entry_interlock: boolean,
        element_capabilities: cmt$element_capabilities,
        logical_unit_status: cmt$logical_unit_status,
        element_access: cmt$element_access,

{  Unit Interface Table
{    there are other items we don't currently display (locks, buffers ..)
        unit_disabled: boolean,
        parity_protection_enabled: boolean,
        force_format: boolean,
        restoring_drive: boolean,
        off_line_drive_number: 0 .. 0ff(16),
        queue_count: 0 .. 0ffff(16),
        unit_shared: boolean,

{  Active Volume Table
        active_volume_table_index: dmt$active_volume_table_index, {??
        allocation_allowed: boolean,
        space_low: boolean,
        space_gone: boolean,
        disk_table_status: dmt$ms_volume_table_status,
        class: dmt$class,
        system_class_activity: array [dmt$system_class] of integer,
        logged_in_for_recovery: boolean,
        internal_vsn: dmt$internal_vsn,
        mainframe_assigned: dmt$mainframe_assigned,
        set_name: stt$set_name,
        status: dmt$ms_volume_system_status,
        volume_owner: ost$user_identification,
        current_position_offset_in_log: integer,
        allocated_log_size: integer,
        device_log_entry_count: integer,
        volume_unavailable: boolean,
        previous_allocation_allowed: boolean,
        logging_process_damaged: boolean,

{  Logical Device Attributes
        bytes_per_cylinder: 0 .. dmc$max_bytes_per_allocation,
        volume_default_allocation_size: dmt$allocation_size,
        volume_default_transfer_size: dmt$transfer_size,
        number_dfl_entries: dmt$device_file_list_index,
        number_directory_entries: dmt$directory_index,

{  Physical Device Attributes
        cylinders_per_device: dmt$device_position,
        maus_per_cylinder: dmt$maus_per_position,
        maus_per_dau: dmt$maus_per_dau,
        sectors_per_mau: iot$sectors_per_mau,
        sectors_per_track: iot$sectors_per_track,
{   extensions to Physical Device Attributes
        capacity: integer,

{  Allocation Info
        available_mat_space: integer,
        available_dat_space: integer,
        bytes_per_dau: integer,
        no_space: boolean,
        no_file_entries: boolean,
{   extensions to Allocation Info
        remaining_bytes: integer,

      = 1 =
        disk_unit_usage: iot$disk_unit_usage,
      casend,
    recend;

  TYPE
    oft$field_data_display_select = (ofc$fdds_selected_fields,
          ofc$fdds_defined_fields, ofc$fdds_incremental_fields,
          ofc$fdds_all_fields, ofc$fdds_all_incremental_fields,
          ofc$fdds_all_non_inc_fields);

*copyc cmt$channel_port
*copyc cmt$logical_unit_table
*copyc cmt$product_identification
*copyc dmt$active_volume_table_index
*copyc dmt$logical_device_attributes
*copyc dmt$ms_active_vol_table_entry
*copyc dmt$physical_device_attributes
*copyc iot$unit_type
*copyc oft$system_line_info
*copyc ost$data_id
*copyc ost$free_running_clock
*copyc ost$name
