# 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 = 8

The size of a character storage unit in bits.

      INTEGER,PARAMETER :: current_team = -3

Argument value for the intrinsic function `GET_TEAM`, specifying that it should return a team value identifying the current team.

      INTEGER,PARAMETER :: error_unit = 0

The standard error reporting unit number.

      INTEGER,PARAMETER :: file_storage_size = 8

The size of a file storage unit (used by `RECL=` in `OPEN` and `INQUIRE`) in bits.

      INTEGER,PARAMETER :: initial_team = -1

Argument value for the intrinsic function `GET_TEAM`, specifying that it should return a team value identifying the initial team.

      INTEGER,PARAMETER :: input_unit = 5

The 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 = -1

The `IOSTAT=` return value for end of file.

      INTEGER,PARAMETER :: iostat_eor = -2

The `IOSTAT=` return value for end of record.

      INTEGER,PARAMETER :: iostat_inquire_internal_unit = 242

The `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_kinds

Array 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 = 6

The standard output unit number. This is the one used by `PRINT`, and by `WRITE` with an asterisk ('`*`') unit.

      INTEGER,PARAMETER :: parent_team = -2

Argument 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 = 314

The `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 = 310

The `STAT=` value returned from the `LOCK` statement when the lock was already locked by the executing image.

      INTEGER,PARAMETER :: stat_locked_other_image = 312

The `STAT=` value returned from the `UNLOCK` statement when the lock was locked by another image.

      INTEGER,PARAMETER :: stat_stopped_image = 315

The `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 = 311

The `STAT=` value returned from the `UNLOCK` statement when the lock was already unlocked.

      INTEGER,PARAMETER :: stat_unlocked_failed_image = 313

The `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 TYPE

Type 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 TYPE

Type 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 TYPE

Type 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.