The GET_LUN procedure allocates a file unit from a pool of free units. Instead of writing routines to assume the use of certain file units, IDL functions and procedures should use GET_LUN to reserve unit numbers in order to avoid conflicts with other routines. Use FREE_LUN to free the file units when finished.
Instead of explicitly specifying a file unit number that may already be used, use GET_LUN to obtain a free one and store the result in the variable U by entering:
Now U can be used in opening a file:
OPENR, U, 'file.dat'
Once the data from “file.dat” has been read, the file can be closed and the file unit can be freed with the command:
Note also that OPENR has a GET_LUN keyword that allows you to simultaneously obtain a free file unit and open a file. The following command performs the same tasks as the first two commands above:
OPENR, U, 'file.dat', /GET_LUN
The named variable into which GET_LUN should place the file unit number. Unit is converted into a longword integer in the process. The file unit number obtained is in the range 100 to 128.
FREE_LUN, OPENR/OPENU/OPENW, Understanding (LUNs)