CMARG_PRESENT 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