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

Re: ROUTINE_NAMES and other magic





Craig Markwardt wrote:

> One thing that ROUTINE_NAMES() (**note) cannot do is *add* variables
> to another level.  If the variable exists, then you can muck as much
> as you want with it, but if it doesn't exist, sorry.
>
> Oh, another funny thing.  Try this recursive procedure:
>
>   PRO DEEPSTOP, level
>   if level EQ 2 then stop
>   deepstop, level + 1
>   END
>
> and then run it with
>
>   deepstop, 1
>
> % Stop encountered:  DEEPSTOP            2 /dev/tty
> IDL> help
> % At  DEEPSTOP            2 /dev/tty
> %     DEEPSTOP            3 /dev/tty
> %     $MAIN$
> LEVEL           INT       =        2
> Compiled Procedures:
>     $MAIN$  DEEPSTOP
> Compiled Functions:
>
> Okay, this is fine.  We've stopped two recursive levels down.  But
> then if we try to set a variable like this:
>
> IDL> a = 1
>
> a = 1
>      ^
> % Unable to add local variable to recursively active program unit: DEEPSTOP
>
>

Dear Craig,

I have no problems.

help,!version,/str
** Structure !VERSION, 5 tags, length=40:
   ARCH            STRING    'x86'
   OS              STRING    'Win32'
   OS_FAMILY       STRING    'Windows'
   RELEASE         STRING    '5.3.1'
   BUILD_DATE      STRING    'Feb 23 2000'


deepstop,1

IDL> help
% At  DEEPSTOP            2 C:\home\icg105\idl\20000418\deepstop.pro
%     DEEPSTOP            3 C:\home\icg105\idl\20000418\deepstop.pro
%     $MAIN$
A               INT       =        1
LEVEL           INT       =        2
Compiled Procedures:
    $MAIN$  DEEPSTOP

Compiled Functions:

IDL> help,a
A               INT       =        1


R.Bauer