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

Re: get variables name



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