 TYPE
    fst$file_cycle_attribute = record
{
{ The caller of the interfaces which use this record must initialize
{ all the relevant fields of this record prior to making the request.
{
{ When a file_attribute of type pmt$entry_point_reference or fst$path
{ is selected, the caller of the request must provide a program variable
{ of the necessary type and initialize this record to point
{ to the initialized program variable.  The value of the attribute will be
{ obtained from or stored into the address provided, depending upon the
{ program request used.  A NIL pointer will be ignored.
{
{ Several of the attributes have components which are defined by the type
{ pmt$entry_point_reference.  When osc$null_name is specified for the
{ entry_point field of pmt$entry_point_reference in the context of attribute
{ definition, its presence implies that no name has been specified and that
{ no processing of the corresponding attribute will occur.  When osc$null_name
{ is specified for the entry_point field of pmt$entry_point_reference in the
{ context of attribute validation, its presence implies that no non-null value
{ of the attribute is permitted.  Similarly, a null string ('') will have the
{ same effect for the object_library field of pmt$entry_point_reference as
{ osc$null_name does for the entry_point field.

      case selector: fst$cycle_attribute_choices of

      = fsc$average_record_length {Advanced Access Method files only} =
        average_record_length: amt$average_record_length,
      = fsc$block_type =
        block_type: amt$block_type,
      = fsc$character_conversion =
        character_conversion: boolean,
      = fsc$collate_table_name {Advanced Access Method files only} =
        collate_table_name: ^pmt$entry_point_reference,
      = fsc$compression_procedure_name {Advanced Access Method files only} =
        compression_procedure_name: ^amt$compression_procedure_name,
      = fsc$data_padding {Advanced Access Method files only} =
        data_padding: amt$data_padding,
      = fsc$dynamic_home_block_space {Advanced Access Method files only} =
        dynamic_home_block_space: amt$dynamic_home_block_space,
      = fsc$embedded_key {Advanced Access Method files only} =
        embedded_key: boolean,
      = fsc$erase_at_deletion =
        erase_at_deletion: boolean,
      = fsc$estimated_record_count {Advanced Access Method files only} =
        estimated_record_count: amt$estimated_record_count,
      = fsc$file_access_procedure_name =
        file_access_procedure_name: ^pmt$entry_point_reference,
      = fsc$file_contents_and_processor =
        { The file_contents and file_processor specifications have been
        { grouped to facilitate attribute validation which may involve
        { allowing only certain pairs of content and processor.  The
        { value osc$null_name may be used in either the attribute definition
        { or validation context to indicate a "don't care" state.

        file_contents: amt$file_contents,
        file_processor: amt$file_processor,
      = fsc$file_label_type =
        file_label_type: amt$file_label_type,
      = fsc$file_limit =
        file_limit: amt$file_limit,
      = fsc$file_organization =
        file_organization: amt$file_organization,
      = fsc$forced_write =
        forced_write: amt$forced_write,
      = fsc$hashing_procedure_name {Advanced Access Method files only} =
        hashing_procedure_name: ^amt$hashing_procedure_name,
      = fsc$index_levels {Advanced Access Method files only} =
        index_levels: amt$index_levels,
      = fsc$index_padding {Advanced Access Method files only} =
        index_padding: amt$index_padding,
      = fsc$initial_home_block_count {Advanced Access Method files only} =
        initial_home_block_count: amt$initial_home_block_count,
      = fsc$internal_code =
        internal_code: amt$internal_code,
      = fsc$key_length {Advanced Access Method files only} =
        key_length: amt$key_length,
      = fsc$key_position {Advanced Access Method files only} =
        key_position: amt$key_position,
      = fsc$key_type {Advanced Access Method files only} =
        key_type: amt$key_type,
      = fsc$line_number =
        line_number: amt$line_number,
      = fsc$loading_factor {Advanced Access Method files only} =
        loading_factor: amt$loading_factor,
      = fsc$lock_expiration_time {Advanced Access Method files only} =
        lock_expiration_time: amt$lock_expiration_time,
      = fsc$log_residence {Advanced Access Method files only} =
        log_residence: ^amt$log_residence,
      = fsc$logging_options {Advanced Access Method files only} =
        logging_options: amt$logging_options,
      = fsc$max_block_length =
        max_block_length: amt$max_block_length,
      = fsc$max_record_length =
        max_record_length: amt$max_record_length,
      = fsc$min_block_length =
        min_block_length: amt$min_block_length,
      = fsc$min_record_length =
        min_record_length: amt$min_record_length,
      = fsc$null_attribute =
        ,
      = fsc$padding_character =
        padding_character: amt$padding_character,
      = fsc$page_format =
        page_format: amt$page_format,
      = fsc$page_length =
        page_length: amt$page_length,
      = fsc$page_width =
        page_width: amt$page_width,
      = fsc$preset_value =
        preset_value: amt$preset_value,
      = fsc$record_delimiting_character =
        record_delimiting_character: char,
      = fsc$record_limit {Advanced Access Method files only} =
        record_limit: amt$record_limit,
      = fsc$record_type =
        record_type: amt$record_type,
      = fsc$records_per_block {Advanced Access Method files only} =
        records_per_block: amt$records_per_block,
      = fsc$ring_attributes =
        ring_attributes: amt$ring_attributes,
      = fsc$statement_identifier =
        statement_identifier: amt$statement_identifier,
      = fsc$user_attribute =
        user_attribute: fst$user_defined_attribute,
      = fsc$user_information =
        user_information: amt$user_info,
      = fsc$vertical_print_density =
        vertical_print_density: amt$vertical_print_density,
      = fsc$retention =
        retention: fst$retention,
      = fsc$retrieve_option =
        retrieve_option: pft$retrieve_option,
      = fsc$site_backup_option =
        site_backup_option: pft$site_backup_option,
      = fsc$site_archive_option =
        site_archive_option: pft$site_archive_option,
      = fsc$site_release_option =
        site_release_option: pft$site_release_option,
      casend,
    recend;

*copyc amt$file_contents
*copyc amt$file_processor
*copyc amt$average_record_length
*copyc amt$block_type
*copyc amt$collate_table
*copyc amt$compression_procedure_name
*copyc amt$data_padding
*copyc amt$dynamic_home_block_space
*copyc amt$estimated_record_count
*copyc amt$file_label_type
*copyc amt$file_limit
*copyc amt$file_organization
*copyc amt$forced_write
*copyc amt$hashing_procedure_name
*copyc amt$index_levels
*copyc amt$index_padding
*copyc amt$initial_home_block_count
*copyc amt$internal_code
*copyc amt$key_length
*copyc amt$key_position
*copyc amt$key_type
*copyc amt$line_number
*copyc amt$loading_factor
*copyc amt$lock_expiration_time
*copyc amt$log_residence
*copyc amt$logging_options
*copyc amt$max_block_length
*copyc amt$max_record_length
*copyc amt$min_block_length
*copyc amt$min_record_length
*copyc amt$padding_character
*copyc amt$page_format
*copyc amt$page_length
*copyc amt$page_width
*copyc amt$preset_value
*copyc amt$record_limit
*copyc amt$record_type
*copyc amt$records_per_block
*copyc amt$ring_attributes
*copyc amt$statement_identifier
*copyc amt$user_info
*copyc amt$vertical_print_density
*copyc fsc$file_contents
*copyc fsc$file_processor
*copyc fst$cycle_attribute_choices
*copyc fst$retention
*copyc fst$user_defined_attribute
*copyc pft$retrieve_option
*copyc pft$site_archive_option
*copyc pft$site_backup_option
*copyc pft$site_release_option
*copyc pmt$entry_point_reference
