Intel® Fortran Compiler 17.0 Developer Guide and Reference

ISO_FORTRAN_ENV Module

The ISO_FORTRAN_ENV intrinsic module provides information about the Fortran run-time environment. It takes the following form:

USE, INTRINSIC :: ISO_FORTRAN_ENV

This intrinsic module provides the following named constants you can use to get information on the Fortran environment. They are all scalars of type default integer.

Named Constant

Definition

ATOMIC_INT_KIND

Is the kind type parameter used when defining integer variables used in atomic operations.

ATOMIC_LOGICAL_KIND

Is the kind type parameter used when defining logical variables used in atomic operations.

CHARACTER_KINDS

Is the kind type parameter supported by the processor that is used when defining variables of type character. This is a default integer array constant. The rank of the array is one, its lower bound is one, and its size is the number of character kinds supported. In Intel® Fortran, its value is [1].

CHARACTER_STORAGE_SIZE

Is the size of the character storage unit expressed in bits.

ERROR_UNIT

Identifies the preconnected external unit used for error reporting.

FILE_STORAGE_SIZE

Is the size of the file storage unit expressed in bits. To use this constant, compiler option assume byterecl must be enabled.

INPUT_UNIT

Identifies the preconnected external unit as the one specified by an asterisk in a READ statement. To use this constant, compiler option assume noold_unit_star must be enabled.

INT8
INT16
INT32
INT64

Are the kind type parameters that specify an INTEGER type whose storage size is 8 bits, 16 bits, 32 bits, and 64 bits, respectively. If, for any of these constants, the processor supports more than one kind of that size, the kind value is determined by the processor. If the processor supports no kind of a particular size, that constant is equal to -2 if the processor supports a kind with larger size; otherwise, -1. In Intel Fortran, their respective values are 1, 2, 4, and 8.

INTEGER_KINDS

Is the kind type parameter supported by the processor that is used when defining variables of type integer. This is a default integer array constant. The rank of the array is one, its lower bound is one, and its size is the number of integer kinds supported. In Intel Fortran its value is [1, 2, 4, 8].

IOSTAT_END

Is the value assigned to the variable specified in an IOSTAT= specifier if an end-of-file condition occurs during execution of an input/output statement and no error condition occurs.

IOSTAT_EOR

Is the value assigned to the variable specified in an IOSTAT= specifier if an end-of-record condition occurs during execution of an input/output statement and no error condition occurs.

IOSTAT_INQUIRE_INTERNAL_UNIT

Is the value assigned to the variable specified in an IOSTAT= specifier in an INQUIRE statement if the unit number identifies an internal unit. This is a negative value, indicating an error condition.

LOGICAL_KINDS

Is the kind type parameter supported by the processor that is used when defining variables of type logical. This is a default integer array constant. The rank of the array is one, its lower bound is one, and its size is the number of logical kinds supported. In Intel® Fortran its value is [1, 2, 4, 8].

NUMERIC_STORAGE_SIZE

Is the size of the numeric storage unit expressed in bits.

OUTPUT_UNIT

Identifies the preconnected external unit as the one specified by an asterisk in a WRITE statement. To use this constant, compiler option assume noold_unit_star must be enabled.

REAL_KINDS

Is the kind type parameter supported by the processor that is used when defining variables of type real. This is a default integer array constant. The rank of the array is one, its lower bound is one, and its size is the number of real kinds supported. In Intel Fortran its value is [4, 8, 16].

REAL32
REAL64
REAL128

Are the kind type parameters that specify a real type whose storage size is 32 bits, 64 bits, and 128 bits, respectively. If, for any of these constants, the processor supports more than one kind of that size, the kind value is determined by the processor. If the processor supports no kind of a particular size, that constant is equal to -2 if the processor supports kinds of a larger size; otherwise, -1. In Intel Fortran, their respective values are 4, 8, and 16.

STAT_LOCKED

The value assigned to the variable specified in a STAT= specifier of a LOCK statement if the lock variable is locked by the executing image.

STAT_LOCKED_OTHER_IMAGE

The value assigned to the variable specified in a STAT= specifier of an UNLOCK statement if the lock variable is locked by another image.

STAT_STOPPED_IMAGE

The value assigned to the variable specified in a STAT= specifier of a statement if execution of the statement requires synchronization with an image that has initiated termination of execution (ALLOCATE, DEALLOCATE, LOCK, SYNC ALL, SYNC IMAGES, SYNC MEMORY, or UNLOCK.

STAT_UNLOCKED

The value assigned to the variable specified in a STAT= specifier of an UNLOCK statement if the lock variable is unlocked.

The ISO_FORTRAN_ENV intrinsic module provides the following derived type:

LOCK_TYPE

This is a derived type with private components; none of the components can be allocatable or a pointer. It is an extensible type with no type parameters. It does not have the BIND (C) attribute or type parameters, and is not a sequence type. All components have default initialization.

A scalar variable of type LOCK_TYPE is a lock variable. A lock variable can have one of two states: locked or unlocked. The unlocked state is represented by the one value that is the initial value of a LOCK_TYPE variable. The locked state is represented by all other values. The value of a lock variable can be changed with the LOCK and UNLOCK statements.

A named variable of type LOCK_TYPE must be a coarray. A named variable with a noncoarray sub-component of type LOCK_TYPE must also be a coarray.

A lock variable must not appear in a variable definition context except as the lock-variable in a LOCK or UNLOCK statement, as an allocatable object, or as an actual argument in a reference to a procedure with an explicit interface where the corresponding dummy argument has INTENT (INOUT).

A variable with a subobject of type LOCK_TYPE must not appear in a variable definition context except as an allocatable object or as an actual argument in a reference to a procedure with an explicit interface where the corresponding dummy argument has INTENT (INOUT).