PROCEDURE (ram$disfsa) display_file_set_attributes, disfsa (
  file, f: file = $required
  display_options, display_option, do: any of
      key
        all
      keyend
      list of key
        (block_count, bc)
        (block_type, bt)
        (buffer_offset, bo)
        (character_conversion, cc)
        (character_set, cs)
        (creation_date, cd)
        (expiration_date, ed)
        (file_identifier, fi)
        (file_sequence_number, fsn)
        (file_set_identifier, fsi)
        (file_set_position, fsp)
        (generation_number, gn)
        (generation_version_number, gvn)
        (header_labels, hl)
        (maximum_block_length, maxbl)
        (maximum_record_length, maxrl)
        (padding_character, pc)
        (record_type, rt)
        (rewrite_labels, rl)
        (trailer_labels, tl)
      advanced_key
        (file_accessibility, file_accessibility_code, fa, fac)
        (file_section_number, fsen)
        (implementation_identifier, ii)
        (label_standard_version, lsv)
        (owner_identifier, oi)
        (removable_media_group, rmg)
        (volume_accessibility, va)
      keyend
    anyend = osd$distla_display_options, (header_labels trailer_labels)
  output, o: file = $output
  ending_sequence_number, esn: (BY_NAME) integer 1..9999 = 9999
  starting_sequence_number, ssn: (BY_NAME) integer 1..9999 = 1
  status)

  VAR
    display_list: list of any = ()
    displayable_exit_conditions: list of name =(ame$blank_volume_read ame$tape_end_of_volume_list)
    ignore_status: status
    local_status: status
    normal_exit_conditions: list of name =(ame$file_not_in_volume_set ..
    ame$spec_fsn_out_of_seq )
  VAREND

  WHEN any_fault, terminate DO
    EXIT display_file_set_attributes WITH osv$status
  WHENEND

  set_file_attributes output file_contents=list pf=burstable
  change_tape_label_attributes file record_type=u block_type=user_specified

for_loop: ..
  FOR i = starting_sequence_number TO ending_sequence_number DO
    change_tape_label_attributes file file_set_position=( ..
          file_sequence_position i)
    copy_file input=file output=$null status=local_status
    IF local_status.normal THEN
      display_list = $add(..
            $tape_label_attributes(file last_accessed display_options) ..
            display_list)
    ELSE
      FOR EACH condition IN normal_exit_conditions DO
        IF condition = $status_code_name(local_status.condition) THEN
          "Status expected and no additional ANSI files found"
          local_status.normal = true
          EXIT for_loop
        IFEND
      FOREND

      FOR EACH condition IN displayable_exit_conditions DO
        IF condition = $status_code_name(local_status.condition) THEN
          "Status unexpected; it is returned along with the ANSI file
          "attributes"
          display_list = $add(..
                $tape_label_attributes(file last_accessed display_options) ..
                display_list)
          EXIT for_loop
        IFEND
      FOREND

      EXIT for_loop

    IFEND
  FOREND for_loop
  IF NOT $nil(display_list) THEN
    put_line ('1 Display_file_set_attributes for file '//file, '0') ..
          output=output
    display_value $reverse(display_list) output=output.$eoi ..
          display_option=labeled_elements status=ignore_status
  IFEND
  EXIT_PROC WITH local_status

PROCEND display_file_set_attributes
