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

Home » Public Forums » archive » Re: Logical Unit mystery; clarification
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
Re: Logical Unit mystery; clarification [message #7460] Tue, 19 November 1996 00:00
Andy Loughe is currently offline  Andy Loughe
Messages: 174
Registered: November 1995
Senior Member
David Fanning wrote:
>
> Russ Welti <rwelti@mapper.mbt.washington.edu> writes:
>
>> At one point in my IDL program, as I do one of many SAVEs and RESTOREs,
>> I get:
>>
>> RESTORE: All available logical units are currently in use.
>>
>> But a subsequent HELP,/FILES shows only my expected 1 log file open!
>>
>> IDL> help,/files
>> Unit Attributes Name
>> 100 Read, Write, Append /u/rwelti/dev/sage/log.ostrandr
>>
>>
>> And, if I do a CLOSE,/ALL at error point above, the RESTORE can be done OK.
>
> I don't know exactly why this is happening, but I wouldn't be surprised if
> the RSI programmer fell into the same trap I have fallen into numerous
> times in my own programs.
>
> There are two pools of logical unit numbers you can use. The pool of
> numbers from 1-99, which you can use directly, and the pool of numbers
> from 100-128 that IDL manages with the GET_LUN procedure or keyword.
>
> If you choose a LUN from the user pool (e.g., 4), then you are suppose
> to close the file and free up the LUN by using the CLOSE command:
>
> OPENR, 4, file
> ...
> CLOSE, 4
>
> If you let IDL choose a LUN from its pool, you are suppose to close the
> file and free the LUN to be used over again with the FREE_LUN command.
>
> OPENR, lun, file, /GET_LUN
> ...
> FREE_LUN, lun
>
> What I have been guilty of many times, is using the CLOSE command
> with a LUN from IDL's pool. Like this:
>
> OPENR, lun, file, /GET_LUN
> ...
> CLOSE, lun
>
> This closes the file, but it doesn't free up the logical unit number to
> be used over again. I think this is exactly what is happening with
> your RESTORE problem. After a time, you run out of LUNs.
>
> Fortunately, the ALL keyword to the CLOSE command closes not
> only all the files, but it does an additional *freeing* of the LUNs
> managed by IDL. That's why your program works again.
>
> David


Thanks for the useful info. Now the question...
Why this confusing functionality within IDL?
It seems this could be fixed very easily within free_lun,
just test the magnitude of the lun.

--
Andrew F. Loughe afl@cdc.noaa.gov
University of Colorado, CIRES http://cdc.noaa.gov/~afl
Campus Box 449 phn:(303)492-0707 fax:(303)497-7013
Boulder, CO 80309-0449 "He who laughs last thinks slowest!"
Re: Logical Unit mystery; clarification [message #7479 is a reply to message #7460] Sat, 16 November 1996 00:00 Go to previous message
davidf is currently offline  davidf
Messages: 2866
Registered: September 1996
Senior Member
Russ Welti <rwelti@mapper.mbt.washington.edu> writes:

> At one point in my IDL program, as I do one of many SAVEs and RESTOREs,
> I get:
>
> RESTORE: All available logical units are currently in use.
>
> But a subsequent HELP,/FILES shows only my expected 1 log file open!
>
> IDL> help,/files
> Unit Attributes Name
> 100 Read, Write, Append /u/rwelti/dev/sage/log.ostrandr
>
>
> And, if I do a CLOSE,/ALL at error point above, the RESTORE can be done OK.

I don't know exactly why this is happening, but I wouldn't be surprised if
the RSI programmer fell into the same trap I have fallen into numerous
times in my own programs.

There are two pools of logical unit numbers you can use. The pool of
numbers from 1-99, which you can use directly, and the pool of numbers
from 100-128 that IDL manages with the GET_LUN procedure or keyword.

If you choose a LUN from the user pool (e.g., 4), then you are suppose
to close the file and free up the LUN by using the CLOSE command:

OPENR, 4, file
...
CLOSE, 4

If you let IDL choose a LUN from its pool, you are suppose to close the
file and free the LUN to be used over again with the FREE_LUN command.

OPENR, lun, file, /GET_LUN
...
FREE_LUN, lun

What I have been guilty of many times, is using the CLOSE command
with a LUN from IDL's pool. Like this:

OPENR, lun, file, /GET_LUN
...
CLOSE, lun

This closes the file, but it doesn't free up the logical unit number to
be used over again. I think this is exactly what is happening with
your RESTORE problem. After a time, you run out of LUNs.

Fortunately, the ALL keyword to the CLOSE command closes not
only all the files, but it does an additional *freeing* of the LUNs
managed by IDL. That's why your program works again.

David

*************************************************
* David Fanning, Ph.D.
* 2642 Bradbury Court, Fort Collins, CO 80521
* Phone: 970-221-0438 Fax: 970-221-4762
* E-Mail: davidf@dfanning.com
*
* Sometimes I go about pitying myself, and all along my
* soul is being blown by great winds across the sky.
* -- Ojibway saying
************************************************
  Switch to threaded view of this topic Create a new topic Submit Reply
Previous Topic: Overplot on eastern US
Next Topic: >>> ARE YOU READY FOR LOVE? <<<

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

Current Time: Wed Oct 08 20:01:03 PDT 2025

Total time taken to generate the page: 0.00700 seconds