Fortran Why is My Fortran Program Only Showing Output Data After Completion?

AI Thread Summary
The discussion revolves around a write file issue in Fortran 90, where a user encounters a problem with data not appearing in the output file until the program finishes execution. The user opens a file and attempts to overwrite the first line with new data in a loop, but the file remains empty during the loop. The solution provided involves understanding that data is buffered in memory and not immediately written to disk. The recommended fix is to use the FLUSH command to force the buffer to write to the file. Alternatively, if using an older version of Fortran without FLUSH, closing and reopening the file can achieve the same result. The user successfully resolves the issue by setting the buffer option to "no" in the write command.
xxh418
Messages
9
Reaction score
0
Hi all,
I encounted a write file problem for Fortran 90. I appreciate it a lot if you can help me.

I open a file at the beginning of the program. Then everytime I rewind the unit number and write one new line to the first line of the file (the previous data on the first line is replaced).
So the total size of the file is very small ~1kb. However, I found the written file does not show the data I wrote during the simulation and only show the data when the program is finished. I do not know what is the problem. The following is the stream of the program.

program test

open(unit=10, file ='output.dat' ...)

loop i = 1, 100
rewind(10)
write(10,*)data
end loop

end program test

So during loop, the size of output.dat is always zero and no output until the end of the program. However, I want to check the output during the loop. Does anyone have any idea about this?

Thanks in advance.
 
Technology news on Phys.org
xxh418 said:
Hi all,
I encounted a write file problem for Fortran 90. I appreciate it a lot if you can help me.

I open a file at the beginning of the program. Then everytime I rewind the unit number and write one new line to the first line of the file (the previous data on the first line is replaced).
So the total size of the file is very small ~1kb. However, I found the written file does not show the data I wrote during the simulation and only show the data when the program is finished. I do not know what is the problem. The following is the stream of the program.

program test

open(unit=10, file ='output.dat' ...)

loop i = 1, 100
rewind(10)
write(10,*)data
end loop

end program test

So during loop, the size of output.dat is always zero and no output until the end of the program. However, I want to check the output during the loop. Does anyone have any idea about this?

Thanks in advance.
When you write to a file from a program, the data gets stored in a buffer in memory and doesn't get copied to disk until some time later, usually when the buffer is full or the program closes the file.

Look up the FLUSH command. That should solve your problem. (If you have an old version of Fortran with no flush, you can close and reopen the file instead.)
 
Alternatively and given that a program runs way too fast for you to monitor the open file with overwriting write statements, it is best to write without overwriting or simply write to standard output or to standard error.
 
DrGreg said:
When you write to a file from a program, the data gets stored in a buffer in memory and doesn't get copied to disk until some time later, usually when the buffer is full or the program closes the file.

Look up the FLUSH command. That should solve your problem. (If you have an old version of Fortran with no flush, you can close and reopen the file instead.)

Hi Drgreg,
Thank you very much for your answer. I setup the opinion buffer="no" in "write", then the problem is solved. Thanks again.

Xu
 
Dear Peeps I have posted a few questions about programing on this sectio of the PF forum. I want to ask you veterans how you folks learn program in assembly and about computer architecture for the x86 family. In addition to finish learning C, I am also reading the book From bits to Gates to C and Beyond. In the book, it uses the mini LC3 assembly language. I also have books on assembly programming and computer architecture. The few famous ones i have are Computer Organization and...
I have a quick questions. I am going through a book on C programming on my own. Afterwards, I plan to go through something call data structures and algorithms on my own also in C. I also need to learn C++, Matlab and for personal interest Haskell. For the two topic of data structures and algorithms, I understand there are standard ones across all programming languages. After learning it through C, what would be the biggest issue when trying to implement the same data...

Similar threads

Replies
5
Views
5K
Replies
6
Views
3K
Replies
13
Views
5K
Replies
6
Views
2K
Replies
3
Views
3K
Replies
6
Views
3K
Back
Top