Intel® Fortran Compiler Classic and Intel® Fortran Compiler Developer Guide and Reference

ID 767251
Date 9/08/2022
Public

A newer version of this document is available. Customers should click here to go to the newest version.

Document Table of Contents

COMMITQQ

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.

Module

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.

Results

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.

Example
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

See Also