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

Forms of I/O Statements

Each type of record I/O statement can be coded in a variety of forms. The form you select depends on the nature of your data and how you want it treated. When opening a file, specify the form using the FORM specifier.

The following are the forms of I/O statements:

  • Formatted I/O statements contain explicit format specifiers that are used to control the translation of data from internal (binary) form within a program to external (readable character) form in the records, or vice versa.

  • List-directed and namelist I/O statements are similar to formatted statements in function. However, they use different mechanisms to control the translation of data: formatted I/O statements use explicit format specifiers, and list-directed and namelist I/O statements use data types.

  • Unformatted I/O statements do not contain format specifiers and therefore do not translate the data being transferred (important when writing data that will be read later).

Formatted, list-directed, and namelist I/O forms require translation of data from internal (binary) form within a program to external (readable character) form in the records. Consider using unformatted I/O for the following reasons:

  • Unformatted data avoids the translation process, so I/O tends to be faster.

  • Unformatted data avoids the loss of precision in floating-point numbers when the output data will subsequently be used as input data.

  • Unformatted data conserves file storage space (stored in binary form).

To write data to a file using formatted, list-directed, or namelist I/O statements, specify FORM= 'FORMATTED' when opening the file. To write data to a file using unformatted I/O statements, specify FORM= 'UNFORMATTED' when opening the file.

Data written using formatted, list-directed, or namelist I/O statements is referred to as formatted data. Data written using unformatted I/O statements is referred to as unformatted data.

When reading data from a file, you should use the same I/O statement form that was used to write the data to the file. For instance, if data was written to a file with a formatted I/O statement, you should read data from that file with a formatted I/O statement.

I/O statement form is usually the same for reading and writing data in a file. However, a program can read a file containing unformatted data (using unformatted input) and write it to a separate file containing formatted data (using formatted output). Similarly, a program can read a file containing formatted data and write it to a different file containing unformatted data.

You can access records in any sequential or relative file using sequential access. For relative files and certain (fixed-length) sequential files, you can also access records using direct access.

The table below shows categories for the main record I/O statements that can be used in Intel® Fortran programs.

File Type, Access, and I/O Form

Available Statements

External file, sequential access

Formatted

READ, WRITE, PRINT, ACCEPT, TYPE, REWRITE

List-directed

READ, WRITE, PRINT, ACCEPT, TYPE

Namelist

READ, WRITE, PRINT, ACCEPT, TYPE

Unformatted

READ, WRITE, REWRITE

External file, direct access

Formatted

READ, WRITE, REWRITE

Unformatted

READ, WRITE, REWRITE

External file, stream access

Formatted

READ, WRITE

List-directed

READ, WRITE

Namelist

READ, WRITE

Unformatted

READ, WRITE

Internal file

Formatted

READ, WRITE

List-directed

READ, WRITE

Unformatted

None

NOTE:

You can use the REWRITE statement only for relative files, using direct access.