comp.lang.idl-pvwave archive
Messages from Usenet group comp.lang.idl-pvwave, compiled by Paulo Penteado

Home » Public Forums » archive » compilation of subroutines without resetting calling sequence
Show: Today's Messages :: Show Polls :: Message Navigator
E-mail to friend 
Switch to threaded view of this topic Create a new topic Submit Reply
compilation of subroutines without resetting calling sequence [message #71568] Mon, 05 July 2010 11:43 Go to next message
MarioIncandenza is currently offline  MarioIncandenza
Messages: 231
Registered: February 2005
Senior Member
OK, compiled procedure 'A' calls function 'B', but spends most of its
time in functions 'C-Z'.

Function 'B' has a math error somewhere, which I am trying various
things to get rid of. By setting !EXCEPT=2, I have lots of information
on where the screwup is occurring.

Once I get the spew from !EXCEPT=2, I manually interrupt the program,
which is at that point working through functions 'C-Z'. I make changes
to subroutine 'B', recompile it, and then '.continue' to see if the
changes worked next time through subroutine 'B'.

Except that doesn't work. '.compile' returns no exception, and
'.continue' works like one expects, but it won't actually recompile
the routine.

So, evidently it's the top-level routine that must be recompiled in
order to get changes to subroutines into effect, but if someone wants
to provide a more coherent explanation of what IDL is doing here, I'd
love to hear it.
Re: compilation of subroutines without resetting calling sequence [message #71664 is a reply to message #71568] Mon, 05 July 2010 13:21 Go to previous message
Kenneth P. Bowman is currently offline  Kenneth P. Bowman
Messages: 585
Registered: May 2000
Senior Member
In article
<5a442a1b-8386-4d8e-807e-cb2890f75907@7g2000prh.googlegroups.com>,
Ed Hyer <ejhyer@gmail.com> wrote:

> OK, compiled procedure 'A' calls function 'B', but spends most of its
> time in functions 'C-Z'.
>
> Function 'B' has a math error somewhere, which I am trying various
> things to get rid of. By setting !EXCEPT=2, I have lots of information
> on where the screwup is occurring.
>
> Once I get the spew from !EXCEPT=2, I manually interrupt the program,
> which is at that point working through functions 'C-Z'. I make changes
> to subroutine 'B', recompile it, and then '.continue' to see if the
> changes worked next time through subroutine 'B'.
>
> Except that doesn't work. '.compile' returns no exception, and
> '.continue' works like one expects, but it won't actually recompile
> the routine.
>
> So, evidently it's the top-level routine that must be recompiled in
> order to get changes to subroutines into effect, but if someone wants
> to provide a more coherent explanation of what IDL is doing here, I'd
> love to hear it.

Instead of just setting !EXCEPT (which is often all that is needed
in simple cases), use CHECK_MATH in B to check the math error status and
stop execution inside function B. (Don't forget to read the notes
at the bottom or the CHECK_MATH help page.)

Then, if you recompile B, IDL will return to the top level and you
can run the program again.

Ken Bowman
  Switch to threaded view of this topic Create a new topic Submit Reply
Previous Topic: Re: FDL for IA64/linux architecture?
Next Topic: Reprojecting TIFF Images with Map_Proj_Image

-=] Back to Top [=-
[ Syndicate this forum (XML) ] [ RSS ] [ PDF ]

Current Time: Wed Oct 08 13:40:01 PDT 2025

Total time taken to generate the page: 0.00450 seconds