?? RIGHT := 110 ??
?? NEWTITLE := '  NOS/VE Store and Fetch Tape Attachment.' ??
MODULE fmm$store_fetch_tape_attachment;

?? NEWTITLE := 'Global Declarations Referenced by This Module.', EJECT ??
?? PUSH (LISTEXT := ON) ??
*copyc bat$tape_descriptor
*copyc fst$attachment_options
*copyc fst$file_attachment_choices
*copyc fst$tape_attachment_information
*copyc ost$status
?? POP ??
*copyc osv$task_private_heap

?? NEWTITLE := 'fmp$store_tape_attachment', EJECT ??
  PROCEDURE [XDCL, #GATE] fmp$store_tape_attachment (
        tape_attachments: fst$attachment_options;
        tape_attachment_info_source: fst$tape_attach_info_source;
        tape_attachment_info: ^fst$tape_attachment_information;
    VAR status: ost$status);

    VAR
      index: integer;

    status.normal := TRUE;

    FOR index := LOWERBOUND (tape_attachments) TO UPPERBOUND (tape_attachments) DO
      IF (tape_attachments [index].selector = fsc$tape_attachment) THEN
        CASE tape_attachments [index].tape_attachment.selector OF

        = fsc$tape_block_type =
          tape_attachment_info^.block_type :=
               tape_attachments [index].tape_attachment.tape_block_type;
          tape_attachment_info^.block_type_source := tape_attachment_info_source;

        = fsc$tape_buffer_offset =
          tape_attachment_info^.buffer_offset :=
               tape_attachments [index].tape_attachment.tape_buffer_offset;
          tape_attachment_info^.buffer_offset_source := tape_attachment_info_source;

        = fsc$tape_character_conversion =
          tape_attachment_info^.character_conversion :=
               tape_attachments [index].tape_attachment.tape_character_conversion;
          tape_attachment_info^.character_conversion_source := tape_attachment_info_source;

        = fsc$tape_character_set =
          tape_attachment_info^.character_set :=
               tape_attachments [index].tape_attachment.tape_character_set;
          tape_attachment_info^.character_set_source := tape_attachment_info_source;

        = fsc$tape_creation_date =
          tape_attachment_info^.creation_date :=
               tape_attachments [index].tape_attachment.tape_creation_date;
          tape_attachment_info^.creation_date_source := tape_attachment_info_source;

        = fsc$tape_expiration_date =
          tape_attachment_info^.expiration_date :=
               tape_attachments [index].tape_attachment.tape_expiration_date;
          tape_attachment_info^.expiration_date_source := tape_attachment_info_source;

        = fsc$tape_file_accessibility =
          tape_attachment_info^.file_accessibility :=
               tape_attachments [index].tape_attachment.tape_file_accessibility;
          tape_attachment_info^.file_accessibility_source := tape_attachment_info_source;

        = fsc$tape_file_identifier =
          tape_attachment_info^.file_identifier :=
               tape_attachments [index].tape_attachment.tape_file_identifier;
          tape_attachment_info^.file_identifier_source := tape_attachment_info_source;

        = fsc$tape_file_sequence_number =
          tape_attachment_info^.file_sequence_number :=
               tape_attachments [index].tape_attachment.tape_file_sequence_number;
          tape_attachment_info^.file_sequence_number_source := tape_attachment_info_source;

        = fsc$tape_file_set_identifier =
          tape_attachment_info^.file_set_identifier :=
               tape_attachments [index].tape_attachment.tape_file_set_identifier;
          tape_attachment_info^.file_set_identifier_source := tape_attachment_info_source;

        = fsc$tape_file_set_position =
          tape_attachment_info^.file_set_position :=
               tape_attachments [index].tape_attachment.tape_file_set_position;
          tape_attachment_info^.file_set_position_source := tape_attachment_info_source;

        = fsc$tape_generation_number =
          tape_attachment_info^.generation_number :=
               tape_attachments [index].tape_attachment.tape_generation_number;
          tape_attachment_info^.generation_number_source := tape_attachment_info_source;

        = fsc$tape_generation_version_num =
          tape_attachment_info^.generation_version_number :=
               tape_attachments [index].tape_attachment.tape_generation_version_num;
          tape_attachment_info^.generation_version_num_source := tape_attachment_info_source;

        = fsc$tape_max_block_length =
          tape_attachment_info^.max_block_length :=
               tape_attachments [index].tape_attachment.tape_max_block_length;
          tape_attachment_info^.max_block_length_source := tape_attachment_info_source;

        = fsc$tape_max_record_length =
          tape_attachment_info^.max_record_length :=
               tape_attachments [index].tape_attachment.tape_max_record_length;
          tape_attachment_info^.max_record_length_source := tape_attachment_info_source;

        = fsc$tape_owner_identification =
          tape_attachment_info^.owner_identifier :=
               tape_attachments [index].tape_attachment.tape_owner_identification;
          tape_attachment_info^.owner_identifier_source := tape_attachment_info_source;

        = fsc$tape_padding_character =
          tape_attachment_info^.padding_character :=
               tape_attachments [index].tape_attachment.tape_padding_character;
          tape_attachment_info^.padding_character_source := tape_attachment_info_source;

        = fsc$tape_record_type =
          tape_attachment_info^.record_type :=
               tape_attachments [index].tape_attachment.tape_record_type;
          tape_attachment_info^.record_type_source := tape_attachment_info_source;

        = fsc$tape_removable_media_group =
          tape_attachment_info^.removable_media_group :=
               tape_attachments [index].tape_attachment.tape_removable_media_group;
          tape_attachment_info^.removable_media_group_source := tape_attachment_info_source;

        = fsc$tape_rewrite_labels =
          tape_attachment_info^.rewrite_labels :=
               tape_attachments [index].tape_attachment.tape_rewrite_labels;
          tape_attachment_info^.rewrite_labels_source := tape_attachment_info_source;

        = fsc$tape_volume_accessibility =
          tape_attachment_info^.volume_accessibility :=
               tape_attachments [index].tape_attachment.tape_volume_accessibility;
          tape_attachment_info^.volume_accessibility_source := tape_attachment_info_source;

        = fsc$tape_volume_initialization =
          tape_attachment_info^.volume_initialization := TRUE;
          tape_attachment_info^.tape_volume_initialization :=
                tape_attachments [index].tape_attachment.tape_volume_initialization^;
          IF tape_attachment_info^.tape_volume_initialization.blank_label_group <> NIL THEN
            ALLOCATE tape_attachment_info^.tape_volume_initialization.blank_label_group:
                  [[REP #SIZE (tape_attachments [index].tape_attachment.tape_volume_initialization^.
                  blank_label_group^) OF cell]] IN osv$task_private_heap^;
            tape_attachment_info^.tape_volume_initialization.blank_label_group^ := tape_attachments [index].
                  tape_attachment.tape_volume_initialization^.blank_label_group^;
          IFEND;

        = fsc$tape_null_attachment_option =
          ;

        ELSE
          ;

        CASEND;

      IFEND;
    FOREND;

  PROCEND fmp$store_tape_attachment;
?? OLDTITLE ??
?? NEWTITLE := 'fmp$fetch_tape_attachment', EJECT ??
  PROCEDURE [XDCL, #GATE] fmp$fetch_tape_attachment (
        tape_attachment_info: ^fst$tape_attachment_information;
    VAR tape_attachments: fst$tape_attachment_information;
    VAR status: ost$status);

    status.normal := TRUE;

    tape_attachments := tape_attachment_info^;

  PROCEND fmp$fetch_tape_attachment;
?? OLDTITLE ??
MODEND fmm$store_fetch_tape_attachment;
