{
{ dmt$stored_ms_fmd_header
{

  CONST
    dmc$current_fmd_version = 0;

  TYPE
    dmt$stored_ms_fmd_header = bound record
      case fmd_version_number: dmt$stored_ms_version_number of
      = 0 =
        version_0_0: record
          clear_space: ost$clear_file_space,
          file_hash: dmt$file_hash,
          file_limit: amt$file_limit,
          file_kind: gft$file_kind,
          locked_file: dmt$locked_file,
          number_fmds: dmt$fmd_index,
          overflow_allowed: boolean,
          preset_value: amt$preset_value,
          requested_allocation_size: dmt$allocation_size,
          requested_class: dmt$class_member,
          requested_class_ordinal: dmt$class_ordinal,
          requested_transfer_size: dmt$transfer_size,
          requested_volume: dmt$requested_volume,
        recend,
      = 1 =
        version_1_0: record
          number_fmds: dmt$fmd_index,
        recend,
      casend,
    recend;

  TYPE
    dmt$stored_ms_fmd_subfile = bound record
      case fmd_version_number: dmt$stored_ms_version_number of
      = 0 =
        version_0_0: record
          stored_byte_address: dmt$stored_byte_address,
          device_file_list_index: dmt$device_file_list_index,
          internal_vsn: dmt$internal_vsn,
          recorded_vsn: rmt$recorded_vsn,
        recend,
      = 1 =
        version_1_0: record
          recorded_vsn: rmt$recorded_vsn,
        recend,
      casend,
    recend;

  TYPE
    dmt$stored_ms_version_number = 0 .. 255;

  { dmt$stored_byte_address is one byte shorter than amt$file_byte_address
  { to allow expansion of the dfl index while providing file compatibility.
  { Since stored FMDs always start on allocation unit boundaries (at least
  { 16384), the low byte is always zero and need not be stored.
  {
  { The constant dmc$byte_address_converter is used to convert back and
  { forth between the two versions of a file byte address.

  TYPE
    dmt$stored_byte_address = 0 .. 0ffffffffff(16);

  CONST
    dmc$byte_address_converter = 100(16);

*copyc osd$virtual_address
*copyc rmd$volume_declarations
*copyc amt$access_level
*copyc amt$attribute_source
*copyc amt$average_record_length
*copyc amt$block_type
*copyc amt$collate_table
*copyc amt$collation_value
*copyc amt$data_padding
*copyc amt$error_exit_procedure
*copyc amt$error_limit
*copyc amt$estimated_record_count
*copyc amt$file_access_selections
*copyc amt$file_attribute_keys
*copyc amt$file_attributes
*copyc amt$file_byte_address
*copyc amt$file_identifier
*copyc amt$file_length
*copyc amt$file_limit
*copyc amt$file_organization
*copyc amt$file_position
*copyc amt$forced_write
*copyc amt$global_file_position
*copyc amt$index_padding
*copyc amt$internal_code
*copyc amt$key_length
*copyc amt$key_position
*copyc amt$key_type
*copyc amt$label_exit_procedure
*copyc amt$label_options
*copyc amt$label_type
*copyc amt$local_file_name
*copyc amc$mau_length
*copyc amt$max_block_length
*copyc amt$max_record_length
*copyc amt$message_control
*copyc amt$min_block_length
*copyc amt$min_record_length
*copyc amt$padding_character
*copyc amt$preset_value
*copyc amt$record_limit
*copyc amt$record_type
*copyc amt$records_per_block
*copyc amt$return_option
*copyc amt$user_info
*copyc amt$vertical_print_density
*copyc dmt$class
*copyc dmt$device_file_list_index
*copyc dmt$file_hash
*copyc dmt$fmd_index
*copyc dmt$global_file_name
*copyc dmt$internal_vsn
*copyc dmt$locked_file
*copyc dmt$overflow_allowed
*copyc dmt$requested_volume_attributes
*copyc dmt$transfer_size
*copyc gft$file_kind
*copyc ost$clear_file_space
*copyc ost$status
