
  PROCEDURE [INLINE] fsp$evaluate_file_reference
    (    file: fst$file_reference;
         command_file_reference_allowed: boolean;
     VAR evaluated_file_reference: fst$evaluated_file_reference;
     VAR status: ost$status);

?? PUSH (LISTEXT := ON) ??
    VAR
      file_reference_parsing_options: clt$file_ref_parsing_options,
      ignore_process_pt_results: bat$process_pt_results;

    status.normal := TRUE;

    IF command_file_reference_allowed THEN
      file_reference_parsing_options := $clt$file_ref_parsing_options
            [clc$use_$local_as_working_cat, clc$command_file_ref_allowed];
    ELSE
      file_reference_parsing_options := $clt$file_ref_parsing_options
            [clc$use_$local_as_working_cat];
    IFEND;
    clp$evaluate_file_reference (file, file_reference_parsing_options,
          {resolve_cycle_number=} FALSE, evaluated_file_reference, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

{ Return permanent file path if alias and resolve if registered.
    IF (fsp$path_element (^evaluated_file_reference, 1) ^ = fsc$local) THEN
      bap$process_pt_request ($bat$process_pt_work_list [bac$resolve_path],
            osc$null_name, evaluated_file_reference, ignore_process_pt_results,
            status);
    IFEND;

  PROCEND fsp$evaluate_file_reference;

*copyc fsc$local
*copyc fst$evaluated_file_reference
*copyc fst$file_reference
*copyc ost$status

*copyc bap$process_pt_request
*copyc clp$evaluate_file_reference
*copyc fsp$path_element
?? POP ??
