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

Re: openr and /get_lun



"Robert S. Mallozzi" wrote:
> 
> In article <onitxkz7p7.fsf@cow.physics.wisc.edu>,
>         Craig Markwardt <craigmnet@cow.physics.wisc.edu> writes:
> >
> > I have noticed that the use of /GET_LUN and ERROR keywords to openr is
> > not as helpful as I would have hoped.  Do other have this experience?
> > The problem is that when an error occurs, it is hard to know whether
> > the file unit was "gotten" or not.
> >
> > For example:
> >
> > pro test1
> >   openr, unit, filename, /get_lun, error=err
> >   free_lun, unit
> > end
> >
> > If there was an error, then it is possible that UNIT was never set,
> > and is hence undefined.  FREE_LUN doesn't take undefined variables.
> 
> I guess I never thought about it too much, because if
> there is an error with the OPEN, then I should handle
> it somehow:
> 
>     OPENR, fl, 'nofile', /GET_LUN, ERROR = error
>     IF (error NE 0) THEN BEGIN
>        MESSAGE, /CONTINUE, 'Could not open file.'
>        RETURN
>     ENDIF
>       .
>       .
>       .
>     FREE_LUN, fl
> 
> Otherwise, if you don't want to handle the error, you can just
> free the unit number conditionally, as I am sure you know:
> 
>     IF (error EQ 0) THEN FREE_LUN, fl
> 
> 
> I sure wish we had a boolean datatype - the mistake of
> using something like "IF (NOT error) THEN" is one that
> is really a pain to find, although it certainly makes
> your code much more readable.

We don't need a boolean data type... we need IF to examine not just the first
bit of the value, but the whole thing, and use C's 0=false, anything else =true
paradigm.  Here's hoping.

if NOT 2 then print,"this isn't right!"

JD


-- 
 J.D. Smith                             |*|      WORK: (607) 255-5842    
 Cornell University Dept. of Astronomy  |*|            (607) 255-6263
 304 Space Sciences Bldg.               |*|       FAX: (607) 255-5875 
 Ithaca, NY 14853                       |*|