;+ ; NAME: ; ARG_PRESENT ; ; AUTHOR: ; Craig B. Markwardt, NASA/GSFC Code 662, Greenbelt, MD 20770 ; craigm@lheamail.gsfc.nasa.gov ; ; PURPOSE: ; Determine whether output parameter has been passed (IDL4 compatibility) ; ; CALLING SEQUENCE: ; PRESENT = ARG_PRESENT(ARG) ; ; DESCRIPTION: ; ; ARG_PRESENT tests whether an argument to a function or procedure ; can be used as an output parameter. The behavior of this function ; is identical to that of the built-in ARG_PRESENT function in IDL ; version 5 or greater, and is meant to give the same functionality ; to programs in IDL 4. ; ; An IDL procedure or function can use ARG_PRESENT to decide whether ; the value of a positional or keyword parameter will be returned to ; the calling procedure. Generally, if the caller did not pass the ; parameter then there is no need to compute the value to be ; returned. ; ; To be a valid output parameter, the caller must have passed a ; named variable into which the result is stored. If the caller ; passed the parameter by value (e.g., an expression or a ; subscripted array) the value cannot be returned and ARG_PRESENT ; returns 0. ; ; INPUTS: ; ; ARG - the parameter to be tested. It can be either a positional ; or a keyword parameter. Passing a normal local variable ; (i.e., not a passed parameter) will cause ARG_PRESENT to ; return zero. ; ; RETURNS: ; ; Returns a value of 1 if ARG is a valid output parameter, and a ; value of 0 otherwise. ; ; ; EXAMPLE: ; ; Consider the following procedure: ; PRO TESTARG, ARG1 ; print, ARG_PRESENT(ARG1) ; END ; ; This procedure will print 1 when an ARG1 can be used as an output ; parameter. Here are some examples of the results of TESTARG. ; ; IDL> testarg ; 0 ; IDL> testarg, x ; 1 ; IDL> testarg, findgen(10) ; 0 ; ; In the first case, no argument is passed, so ARG1 cannot be a ; return variable. In the second case, X is undefined, but it is ; still a legal named variable capable of receiving an output ; parameter. In the third case, FINDGEN(10) is an expression which ; cannot receive an output parameter. ; ; SEE ALSO: ; ; ARG_PRESENT in IDL version 5 ; ; MODIFICATION HISTORY: ; Written, CM, 13 May 2000 ; Small documentation and bug fixes, CM, 04 Jul 2000 ; ;- ; Copyright (C) 2000, Craig Markwardt ; This software is provided as is without any warranty whatsoever. ; Permission to use, copy, modify, and distribute modified or ; unmodified copies is granted, provided this copyright and disclaimer ; are included unchanged. ;-