
  PROCEDURE [INLINE] rap$get_file_path_and_ref
    (    pdt_input_string: string ( * );
     VAR sequence_p: {input, output} ^SEQ ( * );
     VAR path_p: ^pft$path;
     VAR path_ref_p: ^fst$file_reference;
     VAR status: ost$status);

?? PUSH (LISTEXT := ON) ??

    VAR
      evaluated_file_reference: fst$evaluated_file_reference,
      path_string: fst$path,
      path_string_size: fst$path_size,
      value: clt$value;


    clp$get_value (pdt_input_string, 1, 1, clc$low, value, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    clp$get_fs_path_elements (value.file.local_file_name, evaluated_file_reference, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    clp$convert_file_ref_to_string (evaluated_file_reference, FALSE, path_string, path_string_size, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    NEXT path_ref_p: [path_string_size] IN sequence_p;
    path_ref_p^ := path_string (1, path_string_size);

    NEXT path_p: [1 .. evaluated_file_reference.number_of_path_elements] IN sequence_p;
    fsp$convert_fs_structure_to_pf (evaluated_file_reference, path_p);

  PROCEND rap$get_file_path_and_ref;

{ PURPOSE:
{   This procedure takes the value of a PDT file parameter and
{   returns the value using two different Cybil variable formats.
{   Both variables are used in tailored release file processing.
{
{ DESIGN:
{   The file variables must be created in a sequence, so that they will survive
{   outside the scope of this procedure.  A pointer to the sequence and the PDT file
{   parameter name are passed in.  Pointers to the two file variables are passed out.
{
{ NOTES:
{

*copyc fst$file_reference
*copyc ost$status
*copyc pft$path
*copyc clp$convert_file_ref_to_string
*copyc clp$get_fs_path_elements
*copyc clp$get_value
*copyc fsp$convert_fs_structure_to_pf
?? POP ??

