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

ID 767251
Date 3/31/2023
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 following table shows the forms and I/O statements that can be used for sequential access external files:

I/O Form

Available Statements

Formatted

READ, WRITE, PRINT, ACCEPT, TYPE, REWRITE

List-directed

READ, WRITE, PRINT, ACCEPT, TYPE

Namelist

READ, WRITE, PRINT, ACCEPT, TYPE

Unformatted

READ, WRITE, REWRITE

The following table shows the forms and I/O statements that can be used for direct access external files:

I/O Form

Available Statements

Formatted

READ, WRITE, REWRITE

Unformatted

READ, WRITE, REWRITE

The following table shows the forms and I/O statements that can be used for stream access external files:

I/O Form

Available Statements

Formatted

READ, WRITE

List-directed

READ, WRITE

Namelist

READ, WRITE

Unformatted

READ, WRITE

The following table shows the forms and I/O statements that can be used for internal files:

I/O Form

Available Statements

Formatted

READ, WRITE

List-directed

READ, WRITE

Unformatted

None

NOTE:

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