
  PROCEDURE [INLINE] amp$call_fap_access_condition
    (    file_identifier: amt$file_identifier;
         fap_layer_number: amt$fap_layer_number;
         call_block: amt$call_block;
     VAR file_instance: bat$task_file_entry;
     VAR status: {input/output} ost$status);

?? PUSH (LISTEXT := ON) ??
?? RIGHT := 110 ??

    VAR
      context_p: ^ost$ecp_exception_context;

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

      IF call_block.operation = amc$flush_req THEN
        context_p^.wait := (call_block.flush.wait = osc$wait);
      ELSE
        context_p^.wait := file_instance.wait;
      IFEND;

      REPEAT
        context_p^.condition_status := status;
        osp$enforce_exception_policies (context_p^);
        status := context_p^.condition_status;
        IF context_p^.wait THEN
          file_instance.fap_control_information.first_fap.access_method^
                (file_identifier, call_block, fap_layer_number, status);
        IFEND;
      UNTIL status.normal OR NOT (osp$file_access_condition (status)) OR (NOT context_p^.wait);
    IFEND;

    IF NOT 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, status);
      IFEND;
    IFEND;

  PROCEND amp$call_fap_access_condition;

*copyc amt$call_block
*copyc amt$file_identifier
*copyc bat$task_file_table
*copyc ost$status
*copyc osp$enforce_exception_policies
*copyc osp$file_access_condition
*copyc osv$initial_exception_context
?? POP ??
