  file_instance^.fap_control_information.first_fap.access_method^
        (file_identifier, call_block, fap_layer_number, bam_status);

  IF NOT bam_status.normal THEN
    IF osp$file_access_condition (bam_status) THEN
      PUSH context;
      context^ := osv$initial_exception_context;
      context^.allowed_access_conditions := file_instance^.allowed_access_conditions;
      context^.file.selector := osc$ecp_file_identifier;
      context^.file.file_identifier := file_identifier;
      context^.wait_time := file_instance^.wait_time;
      IF file_instance^.device_class = rmc$mass_storage_device THEN
        context^.externalized_info.file_segment_isolated := TRUE;
        context^.externalized_info.file_segment := #SEGMENT (file_instance^.file_pva);
      IFEND;

      CASE call_block.operation OF
      = amc$flush_req =
        context^.wait := (call_block.flush.wait = osc$wait);
      ELSE
        context^.wait := file_instance^.wait;
      CASEND;

      REPEAT
        context^.condition_status := bam_status;
        osp$enforce_exception_policies (context^);
        bam_status := context^.condition_status;
        IF context^.wait THEN
          file_instance^.fap_control_information.first_fap.access_method^
                (file_identifier, call_block, fap_layer_number, bam_status);
        IFEND;
      UNTIL bam_status.normal OR NOT (osp$file_access_condition (bam_status)) OR (NOT context^.wait);
    IFEND;
    IF NOT bam_status.normal THEN
      IF (file_instance^.instance_attributes.dynamic_label.error_exit_procedure <> NIL) THEN
        file_instance^.instance_attributes.dynamic_label.error_exit_procedure^ (file_identifier, bam_status);
      IFEND;
      IF NOT bam_status.normal THEN
        status := bam_status;
      IFEND;
    IFEND;
  IFEND;
