Intel® Fortran Compiler 16.0 User and Reference Guide
Run-Time Function: Forces the operating system to execute any pending write operations for the file associated with a specified unit to the file's physical device.
USE IFCORE
result = COMMITQQ (unit)
unit |
(Input) INTEGER(4). A Fortran logical unit attached to a file to be flushed from cache memory to a physical device. |
The result type is LOGICAL(4). If an open unit number is supplied, .TRUE. is returned and uncommitted records (if any) are written. If an unopened unit number is supplied, .FALSE. is returned.
Data written to files on physical devices is often initally written into operating-system buffers and then written to the device when the operating system is ready. Data in the buffer is automatically flushed to disk when the file is closed. However, if the program or the computer crashes before the data is transferred from buffers, the data can be lost. COMMITQQ tells the operating system to write any cached data intended for a file on a physical device to that device immediately. This is called flushing the file.
COMMITQQ is most useful when you want to be certain that no loss of data occurs at a critical point in your program; for example, after a long calculation has concluded and you have written the results to a file, or after the user has entered a group of data items, or if you are on a network with more than one program sharing the same file. Flushing a file to disk provides the benefits of closing and reopening the file without the delay.
USE IFCORE INTEGER unit / 10 / INTEGER len CHARACTER(80) stuff OPEN(unit, FILE='COMMITQQ.TST', ACCESS='Sequential') DO WHILE (.TRUE.) WRITE (*, '(A, \)') 'Enter some data (Hit RETURN to & exit): ' len = GETSTRQQ (stuff) IF (len .EQ. 0) EXIT WRITE (unit, *) stuff IF (.NOT. COMMITQQ(unit)) WRITE (*,*) 'Failed' END DO CLOSE (unit) END