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

Home » Public Forums » archive » Re: Passing variables between procedures
Show: Today's Messages :: Show Polls :: Message Navigator
E-mail to friend 
Return to the default flat view Create a new topic Submit Reply
Re: Passing variables between procedures [message #80789 is a reply to message #80781] Mon, 09 July 2012 10:36 Go to previous messageGo to previous message
Michael Galloy is currently offline  Michael Galloy
Messages: 1114
Registered: April 2006
Senior Member
On 7/6/12 10:28 PM, Thesource007 wrote:
> On Friday, July 6, 2012 8:42:48 PM UTC-7, Craig Markwardt wrote:
>> On Friday, July 6, 2012 5:43:30 PM UTC-4, Thesource007 wrote:
>>> Hi all.
>>> This is my problem. I have two IDL procedures
>>> hr2altaz, hour, dec, alt, az -- which takes the HA and DEC and
>>> converts it to ALT and AZ
>>> altaz2hr, hour, dec, alt, az -- which takes ALT and AZ, and converts
>>> it to HA and DEC.
>>>
>>> What I need to do, is to begin with a certain HA and DEC, execute
>>> hr2altaz, which will give me the ALT and AZ, and then take those two
>>> outputs to execute altaz2hr, which will convert themj back to HA and
>>> DEC, and then repeat the process many times (say 100).
>>> The purpose being to compare the initial HA, DEC to the final (after
>>> 100 reps) HA, DEC.
>>> Is there a simple way to do this? Or I just have to use an input file
>>> and loops?
>>
>> Applying the function and its inverse: yes, just use a loop. The overhead of executing a loop 100 times is minimal.
>>
>> "An input file" : that's up to you. But you can always read your values into an array once at the beginning.
>>
>> Craig
>
> Ok. But now the question is... how do I "transfer" the output of one procedure to be the input of the other? I dont have a clue of how to do that.
> Thank you
>

From what I understand, you just need to do this:

for i = 0, 99 do begin
hr2altaz, orig_hour, orig_dec, alt, az
altaz2hr, hour, dec, alt, az
; compare orig_hour/orig_dec to hour/dec
endfor

IDL passes "named variables" like orig_hour, orig_dec, etc. by
reference, meaning changes to them inside the routine are passed out of
the routine. So when alt/az are modified in hr2altaz, the new values are
passed into altaz2hr.

On the other hand, expressions like orig_hour[*], alt[0], my_struct.x,
etc. are passed by value and modifications to them inside a routine are
only local to that routine.

Mike
--
Michael Galloy
www.michaelgalloy.com
Modern IDL: A Guide to IDL Programming (http://modernidl.idldev.com)
Research Mathematician
Tech-X Corporation
[Message index]
 
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Previous Topic: Most Common IDL Programming Errors
Next Topic: Re: Array Concatenation?

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

Current Time: Thu Oct 09 20:30:53 PDT 2025

Total time taken to generate the page: 1.19868 seconds