Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Fortran 90 Question

  1. Oct 22, 2008 #1
    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
     
  2. jcsd
  3. Oct 22, 2008 #2

    uart

    User Avatar
    Science Advisor

    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.
     
  4. Oct 22, 2008 #3
    Hmm, the open command has position='append', so presumably this is why one cannot simply close then open?
     
  5. Oct 22, 2008 #4

    uart

    User Avatar
    Science Advisor

    Yes close and re-open will definitely have the effect of flushing any buffers but as you point out it will be neccessary to be able to get back to the same point in the file somehow.
     
  6. Oct 23, 2008 #5
    Flush is a C command really, but it seems that there must be a Fortran version of this command, without opening and closing?
     
  7. Oct 24, 2008 #6

    uart

    User Avatar
    Science Advisor

    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.
     
  8. Oct 25, 2008 #7
    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().
     
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook

Have something to add?



Similar Discussions: Fortran 90 Question
  1. Fortran 90 question (Replies: 1)

Loading...