# Standard intrinsic module ISO_FORTRAN_ENV

## Table of Contents

- 1 Name
- 2 Usage
- 3 Synopsis
- 4 Parameter Descriptions
- 5 Derived Type Descriptions
- 6 Procedure Descriptions
- 7 Files
- 8 See Also
- 9 Bugs
- 10 Author

## 1 Name

**iso_fortran_env** — standard intrinsic module

## 2 Usage

`USE,INTRINSIC :: ISO_FORTRAN_ENV`

(The '`,INTRINSIC ::`

' part is optional, unless there is a user-defined
module with the same name.)

## 3 Synopsis

`ISO_FORTRAN_ENV`

provides named constants describing the Fortran
environment, along with some derived types for coarray programming,
and some utility procedures.
Kind parameter values for specific types are provided by `INT8`

,
`INT16`

, `INT32`

, `INT64`

, `REAL16`

, `REAL32`

, `REAL64`

and
`REAL128`

.
Arrays listing all valid kind parameter values for each type are provided by
`CHARACTER_KINDS`

, `INTEGER_KINDS`

, `LOGICAL_KINDS`

and
`REAL_KINDS`

.

Storage units are described by `CHARACTER_STORAGE_SIZE`

and
`NUMERIC_STORAGE_SIZE`

.

Input/output units are described by `ERROR_UNIT`

, `INPUT_UNIT`

and
`OUTPUT_UNIT`

.

The `RECL=`

specifier for the `INQUIRE`

and `OPEN`

statements is
described by `FILE_STORAGE_SIZE`

.

`IOSTAT=`

return values are described by `IOSTAT_END`

, `IOSTAT_EOR`

and
`IOSTAT_INQUIRE_INTERNAL_UNIT`

.
These and many other `IOSTAT=`

return values are provided by the intrinsic
module `F90_IOSTAT`

(except that it provides `IOSTAT_EOF`

instead of
`IOSTAT_END`

).

`STAT=`

(and `STAT`

argument) return values for coarray programming are described by
named constants beginning with `STAT_`

.
`KIND`

parameter values for use with atomic subroutines are described by
`ATOMIC_INT_KIND`

and `ATOMIC_LOGICAL_KIND`

.
Argument values for the intrinsic function `GET_TEAM`

are provided by
`CURRENT_TEAM`

, `INITIAL_TEAM`

and `PARENT_TEAM`

.
Types for coarray programming are provided by `EVENT_TYPE`

, `LOCK_TYPE`

and `TEAM_TYPE`

.

## 4 Parameter Descriptions

INTEGER,PARAMETER :: atomic_int_kind = ...The

`KIND`

value required for the `ATOM`

argument of an atomic subroutine that
is of type Integer.

INTEGER,PARAMETER :: atomic_logical_kind = ...The

`KIND`

value required for the `ATOM`

argument of an atomic subroutine that
is of type Logical.
INTEGER,PARAMETER :: character_kinds(4) = [ KIND('A'), & SELECTED_CHAR_KIND('JIS_0213'), & SELECTED_CHAR_KIND('UCS_2'), & SELECTED_CHAR_KIND('ISO_10646') ]Array listing all valid kind type parameter values for

`CHARACTER`

type.
INTEGER,PARAMETER :: character_storage_size = 8The size of a character storage unit in bits.

INTEGER,PARAMETER :: current_team = -3Argument value for the intrinsic function

`GET_TEAM`

, specifying that it should
return a team value identifying the current team.

INTEGER,PARAMETER :: error_unit = 0The standard error reporting unit number.

INTEGER,PARAMETER :: file_storage_size = 8The size of a file storage unit (used by

`RECL=`

in `OPEN`

and
`INQUIRE`

) in bits.

INTEGER,PARAMETER :: initial_team = -1Argument value for the intrinsic function

`GET_TEAM`

, specifying that it should
return a team value identifying the initial team.

INTEGER,PARAMETER :: input_unit = 5The standard input unit number. This is the one used by

`READ`

with an asterisk ('`*`

') unit.

INTEGER,PARAMETER :: int8 = SELECTED_INT_KIND(2)The kind parameter value for an 8-bit integer.

INTEGER,PARAMETER :: int16 = SELECTED_INT_KIND(4)The kind parameter value for a 16-bit integer.

INTEGER,PARAMETER :: int32 = SELECTED_INT_KIND(9)The kind parameter value for a 32-bit integer.

INTEGER,PARAMETER :: int64 = SELECTED_INT_KIND(18)The kind parameter value for a 64-bit integer.

INTEGER,PARAMETER :: integer_kinds(4) = [ int8,int16,int32,int64 ]Array listing all valid kind type parameter values for

`INTEGER`

type.

INTEGER,PARAMETER :: iostat_end = -1The

`IOSTAT=`

return value for end of file.

INTEGER,PARAMETER :: iostat_eor = -2The

`IOSTAT=`

return value for end of record.

INTEGER,PARAMETER :: iostat_inquire_internal_unit = 242The

`IOSTAT=`

return value for an `INQUIRE`

statement within a child
i/o procedure that references a unit number that is associated with an internal file.

INTEGER,PARAMETER :: logical_kinds(4) = integer_kindsArray listing all valid kind type parameter values for

`LOGICAL`

type.

INTEGER,PARAMETER :: numeric_storage_size = BIT_SIZE(0)The size of a numeric storage unit in bits.

INTEGER,PARAMETER :: output_unit = 6The standard output unit number. This is the one used by

`PRINT`

, and by `WRITE`

with an asterisk
('`*`

') unit.

INTEGER,PARAMETER :: parent_team = -2Argument value for the intrinsic function

`GET_TEAM`

, specifying that it should
return a team value identifying the parent team.

INTEGER,PARAMETER :: real_kinds(4) = [ real16,real32,real64,real128 ]Array listing all valid kind type parameter values for

`REAL`

type.

INTEGER,PARAMETER :: real16 = SELECTED_REAL_KIND(3)The kind parameter value for a 16-bit real.

INTEGER,PARAMETER :: real32 = SELECTED_REAL_KIND(6)The kind parameter value for a 32-bit real.

INTEGER,PARAMETER :: real64 = SELECTED_REAL_KIND(15)The kind parameter value for a 64-bit real.

INTEGER,PARAMETER :: real128 = SELECTED_REAL_KIND(30)The kind parameter value for a 128-bit real.

INTEGER,PARAMETER :: stat_failed_image = 314The

`STAT=`

value returned from an image control statement, coindexed
object access, or atomic or collective subroutine reference when an image
involved has failed.

INTEGER,PARAMETER :: stat_locked = 310The

`STAT=`

value returned from the `LOCK`

statement when the lock
was already locked by the executing image.

INTEGER,PARAMETER :: stat_locked_other_image = 312The

`STAT=`

value returned from the `UNLOCK`

statement when the lock
was locked by another image.

INTEGER,PARAMETER :: stat_stopped_image = 315The

`STAT=`

value returned from an image control statement or reference to
a collective subroutine if an image being synchronised with has stopped.

INTEGER,PARAMETER :: stat_unlocked = 311The

`STAT=`

value returned from the `UNLOCK`

statement when the lock
was already unlocked.

INTEGER,PARAMETER :: stat_unlocked_failed_image = 313The

`STAT=`

value returned from the `LOCK`

statement when the lock
became unlocked due to failure of the image previously holding the lock.
## 5 Derived Type Descriptions

TYPE event_type PRIVATE ... END TYPEType for use by the

`EVENT POST`

and `EVENT WAIT`

statements, and
the `EVENT_QUERY`

intrinsic function.
Named entities of this type must be coarrays.
Named entities that have a potential subobject component of this type must also be coarrays.
Variables of this type can only be operated on by the special statements provided.

TYPE lock_type PRIVATE ... END TYPEType for use by the

`LOCK`

and `UNLOCK`

statements.
Named entities of this type must be coarrays.
Named entities that have a potential subobject component of this type must also be coarrays.
Variables of this type can only be operated on by the special statements provided.

TYPE team_type PRIVATE ... END TYPEType for use by the

`FORM TEAM`

statement and the `CHANGE TEAM`

construct,
and as a TEAM argument for several related intrinsic functions.
Named entities of this type must not be coarrays.
## 6 Procedure Descriptions

PURE CHARACTER(...) FUNCTION compiler_options()Function that returns a character string containing the compiler options used to compile the program unit. This function may be used in constant expressions.

PURE CHARACTER(...) FUNCTION compiler_version()Function that returns a character string describing the version of the compiler that was used to compile the program unit. This function may be used in constant expressions.

## 7 Files

The source code for this module may be found in the NAG Fortran runtime library
directory (usually `/usr/local/lib/NAG_Fortran`

).

## 8 See Also

**f90_iostat**(3),
**f90_kind**(3),
**nag_modules**(3).

## 9 Bugs

Please report any bugs found to ‘support@nag.co.uk’ or ‘support@nag.com’, along with any suggestions for improvements.

## 10 Author

Malcolm Cohen, Nihon Numerical Algorithms Group KK, Tokyo, Japan.