For Programmers: Free Programming Magazines  


Home > Archive > Fortran > April 2007 > file open and close









You are viewing an archived Text-only version of the thread. To view this thread in it's original format and/or if you want to reply to this thread please [click here]

 

Author file open and close
Magician

2007-04-20, 4:07 am

tried a small program:

open(1,file='test.txt')
close(2)
end

compiled well & ran with g95 & gfortran without errors. one way to
avoid that would be:

integer funit
funit=1
open(funit,file='test.txt')
close(funit)
end

what are expers comments ?

robert.corbett@sun.com

2007-04-20, 4:07 am

On Apr 19, 10:20 pm, Magician <jadoo.d...@gmail.com> wrote:
> tried a small program:
>
> open(1,file='test.txt')
> close(2)
> end
>
> compiled well & ran with g95 & gfortran without errors. one way to
> avoid that would be:
>
> integer funit
> funit=1
> open(funit,file='test.txt')
> close(funit)
> end
>
> what are expers comments ?


You might want to use a named constant instead. For example,

IMPLICIT NONE
INTEGER UNITNO
PARAMETER (UNITNO=1)
OPEN(UNITNO, FILE='test.txt')
CLOSE(UNITNO)
END

Bob Corbett

Richard Maine

2007-04-20, 4:07 am

Magician <jadoo.dost@gmail.com> wrote:

> tried a small program:
>
> open(1,file='test.txt')
> close(2)
> end
>
> compiled well & ran with g95 & gfortran without errors.


That's because it is valid. Not exactly as intended, perhaps, but valid.
It is ok to close a unit that isn't opened (which does nothing), and it
is ok to end the program without closing a file (it is implicitly
closed). I recommend explicitly closing files, but it isn't an error to
not do so.

> one way to
> avoid that would be:
>
> integer funit
> funit=1
> open(funit,file='test.txt')
> close(funit)
> end
>
> what are expers comments ?


Well, there are many reasons to use variables for unit numbers anyway.
Yes, one of those reasons is that you are less likely to miss some cases
if you need to change the number for some reason. There are quite a
large host of other reasons as well. Too late for me to try to elaborate
much. But the summary is that, yes, that's an improvement.

While you are on the subject, it is usually recommended to avoid unit
numbers less than about 10. The single-digit unit numbers are sometimes
reserved for system-dependent purposes. They might work fine on some
compilers, but not on others.

Of course, if you are using variables for your unit numbers, it is easy
to change; you only have to change it in one place.

--
Richard Maine | Good judgement comes from experience;
email: last name at domain . net | experience comes from bad judgement.
domain: summertriangle | -- Mark Twain
Beliavsky

2007-04-20, 7:04 pm

On Apr 20, 1:20 am, Magician <jadoo.d...@gmail.com> wrote:
> tried a small program:
>
> open(1,file='test.txt')
> close(2)
> end
>
> compiled well & ran with g95 & gfortran without errors. one way to
> avoid that would be:
>
> integer funit
> funit=1
> open(funit,file='test.txt')
> close(funit)
> end
>
> what are expers comments ?


In an OPEN statement I suggest always specifying the ACTION, for
example "read" or "write", in order to
(1) clarify the intent of the code
(2) prevent unintended actions later in the program, for example
writing to a file that was intended to be read (and therefore
overwriting it).


Sponsored Links







Also available: Server administration forum archive | Web Design forum archive | Software forum archive | Hardware reviews archive

Copyright 2008 codecomments.com