Re: get variables name [message #19536 is a reply to message #19535] |
Wed, 05 April 2000 00:00   |
John-David T. Smith
Messages: 384 Registered: January 2000
|
Senior Member |
|
|
"J.D. Smith" wrote:
>
> David Fanning wrote:
>>
>> R.Bauer (R.Bauer@fz-juelich.de) writes:
>>
>>> I like to know the name of a variable which is submitted as input to a
>>> procedure
>>>
>>> e.g
>>>
>>> pro test,var
>>> help,var
>>> end
>>>
>>> a=1
>>> test,a
>>>
>>> Is it possible to get inside test the information that test was called
>>> with a.
>>
>> My life is totally out of control at the moment, so I haven't
>> had the opportunity to write this up for my web page, but
>> here is part of a correspondence I recently received from
>> Paul Woodford, an IDL user, concerning the undocumented
>> ROUTINE_NAMES function:
>>
>> routine_names(variables=0) - variable names at current level
>> routine_names(variables=1) - variable names at main level
>> routine_names(variables=2) - variable names at one level down from main
>> routine_names(variables=-1) - variable names at one level up from current
>> routine_names(variables=-2) - variable names at two levels up from current
>>
>> But wait, that's not all... Take a look at how routine_names is used in
>> gethelp - you can use routine_names to actually fetch a variable from a
>> different level. For instance, if you have a variable named 'blah' one
>> level up from your current level, you can get it using
>>
>> blah_here = routine_names('blah', fetch=-1)
>>
> < wise cautionary matter clipped>
>
> But wait... that'still not all!
>
> By poking around in the library, I found:
>
> pro foo,a
> print,routine_names(a,/ARG_NAME)
> end
>
> IDL> foo,x
> X
>
> pretty cool. And this is the coolest... I've been asking for this for years...
> easy to abuse, but oh so useful for sending variables to the command-line and
> widget program...
>
> Try this:
>
> pro foo,a
> g=12
> print,routine_names("gvar",g,STORE=1)
> end
>
By the way, I once (two years ago!) made the comment in this context:
"This presumably is the very reason Insight chooses to do real
importing/exporting from the $MAIN$ level: it is attempting to be a general
purpose analysis tool that is not tied to any one specific format of the data it
deals with. As David, I also don't know the details of how Insight was written,
but it is apparently written in IDL (and is restored from a save file). I am
uncertain how they could achieve this flexibility without special built-in
functions which they're not telling us about."
I took a look inside that .sav file, and what do I find??? "ROUTINE_NAMES", of
course. Sometimes things just come together.
JD
--
J.D. Smith |*| WORK: (607) 255-5842
Cornell University Dept. of Astronomy |*| (607) 255-6263
304 Space Sciences Bldg. |*| FAX: (607) 255-5875
Ithaca, NY 14853 |*|
|
|
|