The FLUSH statement makes data written to an external file available to other processes, or causes data placed in an external file by means other than Fortran to be available to a READ statement.
Inclusion of the IOSTAT specifier suppresses error messages. If the program encounters a severe error, the value of ios is 200.
If you do not specify ERR or IOSTAT, the program terminates on encountering a severe error.
The FLUSH statement must not appear in a pure subprogram.
A FLUSH statement has no effect on file position.
The buffering run-time option does not affect the execution of the FLUSH statement.
Example 1: In the following example a data file written by a Fortran program is read by a C routine. The program specifies a FLUSH statement for the buffered I/O.
! The following Fortran program writes data to an external file.
subroutine process_data()
integer data(10)
external read_data
data = (/(i,i=1,10)/)
open(50, file="data_file")
write(50, *) data ! write data to an external file
flush(50) ! since Fortran I/O is buffered, a FLUSH
! statement is needed for the C routine to
! to read the data
call read_data(10) ! call C routine to read the file
end subroutine
/* The following C routine reads data from the external file. */
void read_data(int *sz) {
#include < stdio.h>
#include < stdlib.h>
int *data, i;
FILE *fp;
data = (int *) malloc((*sz)*sizeof(int));
fp = fopen("data_file", "r");
for (i=0; i<*sz-1; i++) {
fscanf(fp, "%d", &dat5[i]);
}
}