
{ DECK: IOT$TAPE_FAILURE_STATISTIC_DATA

  CONST
    ioc$undetermined = 1,
    ioc$recovered = 2,
    ioc$unrecovered = 3,
    ioc$intermediate = 4,
    ioc$informative = 5;

  TYPE
    iot$tape_failure_type = 1 .. ioc$informative;

  CONST
    ioc$max_failure_counters = 62,
    ioc$max_ccc_cart_counters = 36,
    ioc$min_ipi_counters = 31,
    ioc$max_ipi_error_text = 39,
    ioc$max_ccc_cart_error_text = 30,
    ioc$tape_failure_counters = 1,
    ioc$tape_failure_statistic_data = 2,
    ioc$tape_failure_array = 3;

  TYPE
    iot$tape_failure_data_selector = ioc$tape_failure_counters ..
          ioc$tape_failure_array;

  TYPE
    iot$tape_failure_data = record
      case iot$tape_failure_data_selector of

      = ioc$tape_failure_counters =
        counters: seq (rep ioc$max_failure_counters of integer),
      = ioc$tape_failure_statistic_data =
        package: iot$tape_failure_statistic_data,
      = ioc$tape_failure_array =
        counters_array: array [1 .. ioc$max_failure_counters] of integer,

      casend
    recend;

  TYPE
    iot$tape_failure_statistic_data = record
      pp_number: iot$iou_resource_counter,
      channel_number: iot$iou_resource_counter,
      equipment_number: integer,
      physical_unit_number: integer,
      unit_type: integer,
      operation_code: integer,
      failure_severity: integer,
      failure_symptom_code: integer,
      blocks_written: integer,
      blocks_read: integer,
      single_double_track_corrections: integer,
      unused_fill1: integer,
      block_count: integer,
      tapemark_count: integer,
      tape_format_parameters: integer,
      density: integer,
      recovery_type: integer,
      recovery_retry_count: integer,
      last_requested_function: integer,
      initial_hardware_status: array [1 .. 16] of 0 .. 0ffff(16),
      initial_extended_status: array [1 .. 20] of 0 .. 0ffff(16),
      final_hardware_status: array [1 .. 16] of 0 .. 0ffff(16),
      final_extended_status: array [1 .. 20] of 0 .. 0ffff(16),
      historical_bid_index: 0 .. 0ffff(16),
      historical_limit:  0 .. 0ffff(16),
      historical_reserved_area: 0 .. 0ffffffff(16),
      historical_bid_window: iot$bid_window,
      current_bid_index: 0 .. 0ffff(16),
      current_limit:  0 .. 0ffff(16),
      current_reserved_area: 0 .. 0ffffffff(16),
      current_bid_window: iot$bid_window,
    recend;

  TYPE
    iot$iou_resource_counter = packed record
      initial_error_status_register: 0 .. 0ffff(16),
      final_error_status_register: 0 .. 0ffff(16),
      fill1: 0 .. 3fff(16),
      iou: 0 .. 3f(16),
      fill2: 0 .. 7,
      i4_port_a: 0 .. 1,
      i4_port_b: 0 .. 1,
      concurrent: 0 .. 1,
      resource_number: 0 .. 3f(16),
    recend;

  TYPE
    iot$ipi_failure_data_selector = ioc$tape_failure_counters ..
          ioc$tape_failure_statistic_data;

  TYPE
    iot$ipi_tape_failure_data = record
      case iot$ipi_failure_data_selector of

      = ioc$tape_failure_counters =
        counters: seq (rep ioc$max_failure_counters of integer),
      = ioc$tape_failure_statistic_data =
        package: iot$ipi_statistic_data,

      casend
    recend;

  TYPE
    iot$ipi_statistic_data = record
{1}   pp_number: iot$iou_resource_counter,
{2}   channel_number: iot$iou_resource_counter,
{3}   equipment_number: integer,
{4}   physical_unit_number: integer,
{5}   unit_type: integer,
{6}   operation_code: integer,
{7}   failure_severity: integer,
{8}   failure_symptom_code: integer,
{9}   blocks_written: integer,
{10}  blocks_read: integer,
{11}  single_double_track_corrections: integer,
{12}  unused_fill1: integer,
{13}  block_count: integer,
{14}  tapemark_count: integer,
{15}  tape_format_parameters: integer,
{16}  density: integer,
{17}  unused_fill2: integer,
{18}  recovery_retry_count: integer,
{19}  last_requested_function: integer,
{20}  ipi_status_register: integer,
{21}  ipi_error_register: integer,
{22}  i4_error_register: integer,
{23}  i4_operation_register: integer,
{24}  i4_control_register: integer,
{25}  interface_error_code: integer,
{26}  unused_fill3: integer,
{27}  unused_fill4: integer,
{28}  unused_fill5: integer,
{29}  unused_fill6: integer,
{30}  unused_fill7: integer,
{31}  ipi_status: array [1 .. ioc$ipi_max_status_size] of 0 .. 0ff(16),
    recend;

  TYPE
    iot$ccc_cart_failure_selector = ioc$tape_failure_counters ..
          ioc$tape_failure_statistic_data;

  TYPE
    iot$ccc_cart_tape_failure_data = RECORD
      CASE iot$ccc_cart_failure_selector OF

      = ioc$tape_failure_counters =
        counters: seq (rep ioc$max_ccc_cart_counters of integer),
      = ioc$tape_failure_statistic_data =
        package: iot$ccc_cart_statistic_data,

      CASEND
    RECEND;

  TYPE
    iot$ccc_cart_statistic_data = RECORD
{1}   pp_number: iot$iou_resource_counter,
{2}   channel_number: iot$iou_resource_counter,
{3}   equipment_number: integer,
{4}   physical_unit_number: integer,
{5}   unit_type: integer,
{6}   operation_code: integer,
{7}   failure_severity: integer,
{8}   failure_symptom_code: integer,
{9}   blocks_written: integer,
{10}  blocks_read: integer,
{11}  on_the_fly_read_corrections: integer,
{12}  on_the_fly_write_corrections: integer,
{13}  block_count: integer,
{14}  tapemark_count: integer,
{15}  read_recovery_count: integer,
{16}  write_recovery_count: integer,
{17}  last_function: iot$last_ccc_cart_function,
{18}  recovery_retry_count: integer,
{19}  first_error_status_register: integer,
{20}  final_error_status_register: integer,
{21}  initial_status: array [1 .. 8] of 0 .. 0ff(16),
{22}  initial_sense_bytes: array [1 .. 40] of 0 .. 0ff(16),
{27}  final_status: array [1 .. 8] of 0 .. 0ff(16),
{28}  final_sense_bytes: array [1 .. 40] of 0 .. 0ff(16),
{33}  density: integer,
{34}  buffer_underruns: integer,
{35}  res2: integer,
{36}  last_failure_info: iot$ccc_cart_last_failure_info,
    RECEND,

    iot$last_ccc_cart_function = PACKED RECORD
      fill: 0 .. 0ffffffff(16),
      last_not_status: 0 .. 0ffff(16),
      last: 0 .. 0ffff(16),
    RECEND,

    iot$ccc_cart_last_failure_info = PACKED RECORD
      fill: 0 .. 0ffff(16),
      error_id: 0 .. 0ffff(16),
      last_non_status_function: 0 .. 0ffff(16),
      last_function: 0 .. 0ffff(16),
    RECEND;

?? PUSH (LISTEXT := ON) ??
*copyc iot$tape_block_id_area
?? POP ??
