
  FUNCTION [INLINE] fmf$ring_attributes_valid
    (    cycle_formerly_opened_info: fmt$cycle_formerly_opened_info;
         usage_selections: pft$usage_selections;
         validation_ring: ost$valid_ring): boolean;

?? PUSH (LISTEXT := ON) ??
    IF cycle_formerly_opened_info.cycle_previously_opened AND
          (cycle_formerly_opened_info.ring_attributes_source <>
          amc$undefined_attribute) THEN
      IF ($pft$usage_selections [pfc$append, pfc$modify,
            pfc$shorten] * usage_selections) <> $pft$usage_selections [] THEN
        fmf$ring_attributes_valid := (validation_ring <=
              cycle_formerly_opened_info.ring_attributes.r1);
      ELSEIF pfc$read IN usage_selections THEN
        fmf$ring_attributes_valid := (validation_ring <=
              cycle_formerly_opened_info.ring_attributes.r2);
      ELSEIF pfc$execute IN usage_selections THEN
        fmf$ring_attributes_valid := (validation_ring <=
              cycle_formerly_opened_info.ring_attributes.r3);
      ELSE {null access requested}
        fmf$ring_attributes_valid := TRUE;
      IFEND;
    ELSE
      fmf$ring_attributes_valid := TRUE;
    IFEND;

  FUNCEND fmf$ring_attributes_valid;

*copyc fmt$cycle_formerly_opened_info
*copyc osd$virtual_address
*copyc pft$usage_selections
?? POP ??
