>  Docs Center  >  Libraries  >  ASTROLIB  >  FINDPRO
Libraries

FINDPRO

FINDPRO

Name


    FINDPRO

Purpose


    Find all locations of a procedure in the IDL !PATH

Explanation


    FINDPRO searces for the procedure name (as a .pro or a .sav file) in all
    IDL libraries or directories given in the !PATH system variable. This
    differs from the intrinsic FILE_WHICH() function which only finds the
    first occurence of the procedure name.
             

Calling Sequence


    FINDPRO, [ Proc_Name, /NoPrint, DirList = , ProList = ]

Optional Input


    Proc_Name - Character string giving the name of the IDL procedure or
            function. Do not include the ".pro" extension. If Proc_Name is
            omitted, the program will prompt for PROC_NAME. "*" wildcards
            are permitted.

Optional Keyword Input


    /NoPrint - if set, then the file's path is not printed on the screen and
            absolutely no error messages are printed on the screen. If not
            set, then - since the MESSAGE routine is used - error messages
            will be printed but the printing of informational messages
            depends on the value of the !Quiet variable.

Optional Keyword Outputs


    DirList - The directories in which the file is located are returned in
            the keyword as a string array.
            If the procedure is an intrinsic IDL procedure, then the
            value of DirList = ['INTRINSIC'].
            If the procedure is not found, the value of DirList = [''].
    ProList - The list (full pathnames) of procedures found. Useful if you
            are looking for the name of a procedure using wildcards.
    The order of the names in DirList and ProList is identical to the order
    in which the procedure name appears in the !PATH

Procedure


    The system variable !PATH is parsed using EXPAND_PATH into individual
    directories. FILE_SEARCH() is used to search the directories for
    the procedure name. If not found in !PATH, then the name is compared
    with the list of intrinsic IDL procedures given by the ROUTINE_INFO()
    function.

Example


    (1) Find the procedure CURVEFIT. Assume for this example that the user
    also has a copy of the curvefit.pro procedure in her home directory
    on a Unix machine.
      IDL> findpro, 'curvefit', DIRLIST=DirList
      Procedure curvefit.pro found in directory /home/user/.
      Procedure curvefit.pro found in directory /home/idl/lib/userlib
      IDL> help, DirList
      DIRLIST STRING = Array(2)
      IDL> help, DirList[0], DirList[1]
      <Expression> STRING = '/home/user'
      <Expression> STRING = '/home/idl/lib/userlib'
    (2) Find all procedures in one's !path containing the characters "zoom"
      IDL> findpro,'*zoom*'

Restrictions


      User will be unable to find a path for a native IDL function
      or procedure, or for a FORTRAN or C routine added with CALL_EXTERNAL.
      Remember that Unix is case sensitive, and most procedures will be in
      lower case.

Procedures Used


      FDECOMP -- Decompose file name

Revision History


      Based on code extracted from the GETPRO procedure, J. Parker 1994
      Use the intrinsic EXPAND_PATH function W. Landsman Nov. 1994
      Use ROUTINE_NAMES() to check for intrinsic procs W. Landsman Jul 95
      Added Macintosh, WINDOWS compatibility W. Landsman Sep. 95
      Removed spurious first element in PROLIST W. Landsman March 1997
      Don't include duplicate directories in !PATH WL May 1997
      Use ROUTINE_INFO instead of undocumented ROUTINE_NAMES W.L. October 1998
      Also check for save sets W. Landsman October 1999
      Force lower case check for VMS W. Landsman January 2000
      Only return .pro or .sav files in PROLIST W. Landsman January 2002
      Force lower case check for .pro and .sav D. Swain September 2002
      Use FILE_SEARCH() if V5.5 or later W. Landsman June 2006
      Assume since V55, remove VMS support W. Landsman Sep. 2006
      Assume since V6.0, use file_basename() W.Landsman Feb 2009



© 2024 NV5 Geospatial Solutions, Inc. |  Legal
   Contact Us