[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: get variables name



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

IDL> foo
       1
IDL> help
% At  $MAIN$                 
GV              INT       =       12

Cool!  This is the symmetric form of fetch, and I guess just returns 1 on
success.  Finally I can create variables for later storage on the command line
within widget apps!  Or what I mean to say... hmmph... I mean... don't play with
matches... bad dog...

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                       |*|