Fortran Fortran 90: Alternative to flush() for f90 Compiler

  • Thread starter Thread starter natski
  • Start date Start date
  • Tags Tags
    Fortran
Click For Summary
The discussion centers on the use of the flush statement in Fortran 90, specifically in the context of code compiled with gfortran. The user is seeking an alternative to the flush(1) command, as it is not recognized in Fortran 90. One suggested method is to close the file and then re-open it, but concerns arise regarding maintaining the file position, especially when the file is opened with the append attribute. It is noted that while closing and reopening can flush buffers, it may disrupt the current file position unless handled correctly. Additionally, some Fortran 90 dialects may support a flush command without specifying a unit number, which could serve as a potential solution. The discussion emphasizes the need to determine the current file position before deciding on the best approach to replace the flush command.
natski
Messages
262
Reaction score
2
Hi all,

I've recently obtained some code in Fortran 90 that was compiled with gfortran. I am compiling with f90 and one of the called statements is not recognised.

I have call flush(1) where 1 is the filename that the code is flushing.

Since flush is not a part of f90, is there an alternative statement which will do the same job in f90?

Thanks,

Natski
 
Technology news on Phys.org
Without looking too deeply into whether there is a direct replacement, one method that should achieve the same result would be to close the file and then immediately re-open it.
 
Hmm, the open command has position='append', so presumably this is why one cannot simply close then open?
 
natski said:
Hmm, the open command has position='append', so presumably this is why one cannot simply close then open?

Yes close and re-open will definitely have the effect of flushing any buffers but as you point out it will be necessary to be able to get back to the same point in the file somehow.
 
Flush is a C command really, but it seems that there must be a Fortran version of this command, without opening and closing?
 
Can you determine (by reading the code) exactly where the current file position is when it's flushed? I mean if it's somewhere convenient like right at the beginning or end then it would be easy enough to just "close/re-open/reposition", but if it's some arbitraty position then yes it would be much better to try and find a replacement for flush.
 
If the file was opened with the append attribute, closing and reopening it with the same append attribute should get the file pointer to point to the same place, as long as we are dealing with a sequential text file and there are no concurrent processes.
Do a little test to confirm it.

Also, some f90 dialects support flush without the unit number, as in flush().
 

Similar threads

  • · Replies 3 ·
Replies
3
Views
4K
  • · Replies 2 ·
Replies
2
Views
2K
  • · Replies 34 ·
2
Replies
34
Views
4K
  • · Replies 1 ·
Replies
1
Views
3K
  • · Replies 2 ·
Replies
2
Views
3K
  • · Replies 1 ·
Replies
1
Views
8K
  • · Replies 21 ·
Replies
21
Views
3K
  • · Replies 2 ·
Replies
2
Views
3K
  • · Replies 1 ·
Replies
1
Views
5K
  • · Replies 3 ·
Replies
3
Views
2K