
  PROCEDURE [INLINE] fmi$get_ring_attributes
    (    p_file_label: {input} fmt$p_file_label;
     VAR cycle_formerly_opened_info: fmt$cycle_formerly_opened_info;
     VAR status: ost$status);

    VAR
      local_p_file_label: fmt$p_file_label,
      p_label_header: ^fmt$static_label_header;

    status.normal := TRUE;
    IF p_file_label = NIL THEN
      cycle_formerly_opened_info.cycle_previously_opened := FALSE;
      RETURN; {----->
    IFEND;

    IF #SIZE (fmt$static_label_header) > #SIZE (p_file_label^) THEN
      osp$set_status_abnormal (amc$access_method_id,
            ame$damaged_file_attributes, 'Label too small.', status);
      RETURN; {----->
    IFEND;

    local_p_file_label := p_file_label;
    RESET local_p_file_label;
    NEXT p_label_header IN local_p_file_label;

    IF (p_label_header <> NIL) AND (p_label_header^.unique_character =
          fmc$unique_label_id) THEN
      cycle_formerly_opened_info.cycle_previously_opened :=
            p_label_header^.file_previously_opened;
      IF p_label_header^.file_previously_opened THEN
        cycle_formerly_opened_info.ring_attributes :=
              p_label_header^.ring_attributes;
        cycle_formerly_opened_info.ring_attributes_source :=
              p_label_header^.ring_attributes_source;
      IFEND;
    ELSE
      osp$set_status_abnormal (amc$access_method_id,
            ame$damaged_file_attributes, 'Bad unique_character.', status);
    IFEND;

  PROCEND fmi$get_ring_attributes;

?? PUSH (LISTEXT := ON) ??
*copyc ame$attribute_validation_errors
*copyc fmc$unique_label_id
*copyc fmt$cycle_formerly_opened_info
*copyc fmt$file_label
*copyc fmt$static_label_header
*copyc osp$set_status_abnormal
*copyc ost$status
?? POP ??
