Fortran 2008 Status (CloudMonk.io)

Fortran 2008 Status




## Compiler Support for the Fortran 2008 Standard

The table below documents features from the Fortran 2008 standard
that are supported by recent versions of several available compilers.
Of course, development versions of some compilers support may
additional features. See Compiler Support for Modern Fortran
for a summary, caveats, and links to compiler-specific status pages.
A similar table is also available for Fortran 2003 status
and Fortran 2018 status

The table is based on data from a series of articles in the ACM
Fortran Forum by Ian D. Chivers and Jane Sleightholme.
For further details of the features listed, see the following report
by John Reid: .

**Legend:**

* Y = Yes
* N = No
* P = Partial
* ? = Not Known

























































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































Fortran 2008 features Absoft Cray GNU (gfortran) HP IBM Intel NAG Oracle PathScale PGI Flang
Compiler Version Number 14 8.4.0 9.x 16.1.5 19.0 6.2 8.8 6.0 18.10 5.0
Submodules N Y Y (201) N Y Y N N N Y
Coarrays N Y Y (301) N N Y N N Y N
Performance enhancements Absoft Cray GNU HP IBM Intel NAG Oracle PathScale PGI Flang
do concurrent N Y Y N Y Y Y N N Y
Contiguous attribute N Y Y N Y Y Y N N Y
Data Declaration Absoft Cray GNU HP IBM Intel NAG Oracle PathScale PGI Flang
Maximum rank + corank = 15 N Y Y (701) N Y Y Y N N N
Long integers Y (100) Y Y N Y Y Y Y ? Y
Allocatable components of recursive type N Y Y N Y Y N Y N N
Implied-shape array N Y Y N Y Y Y N N N
Pointer initialization N Y Y N Y Y N N N Y (600)
Data statement restrictions lifted ? Y N ? N Y N N N N
Kind of a forall index N Y N N Y Y Y N N N
Type statement for intrinsic types ? Y Y ? Y Y Y N N N
Declaring type-bound procedures ? Y Y ? Y Y Y N N N
Value attribute is permitted for any nonallocatable nonpointer noncoarray ? Y Y ? P (108) Y ? N ? N
In a pure procedure the intent of an argument need not be specified if it has the value attribute ? Y Y ? Y Y Y N ? N
Accessing data objects Absoft Cray GNU HP IBM Intel NAG Oracle PathScale PGI Flang
Simply contiguous arrays rank remapping to rank>1 target N Y Y N Y Y Y N N Y
Omitting an ALLOCATABLE component in a structure constructor ? Y N ? Y Y Y N N N
Multiple allocations with SOURCE= ? Y Y ? Y Y N N ? N
Copying the properties of an object in an ALLOCATE statement ? Y N (201) ? Y Y Y N N Y
MOLD= specifier for ALLOCATE ? Y Y ? Y Y Y Y N Y
Copying bounds of source array in ALLOCATE ? Y N (210) ? Y Y Y Y N Y
Polymorphic assignment N Y Y N Y Y Y Y N N
Accessing real and imaginary parts N Y Y N Y Y Y N N Y
Pointer function reference is a variable N Y P (201) N N Y N N N N
Elemental dummy argument restrictions lifted ? Y Y ? N Y N N ? Y
Input/Output Absoft Cray GNU HP IBM Intel NAG Oracle PathScale PGI Flang
Finding a unit when opening a file (newunit=u) N Y Y N Y Y Y N N Y Y
g0 edit descriptor N Y Y N N Y Y N N N
Unlimited format item N Y Y N N Y Y N N N
Recursive I/O N Y Y N N Y Y Y Y Y
Execution control Absoft Cray GNU HP IBM Intel NAG Oracle PathScale PGI Flang
The BLOCK construct N Y Y N Y Y Y N N N
Exit statement N Y Y N Y Y Y N N Y
Stop code N Y Y N Y Y Y N N Y
ERROR STOP ? ? Y ? Y Y ? ? ? N N
Intrinsic procedures for bit processsing Absoft Cray GNU HP IBM Intel NAG Oracle PathScale PGI Flang
Bit sequence comparison Y Y Y N N Y Y N N N
Combined shifting Y Y Y N Y Y Y N N N
Counting bits Y Y Y N Y Y Y N P (212) P (214)
Masking bits N Y Y N Y Y Y N N N
Shifting bits Y Y Y N Y Y Y N N N
Merging bits Y Y Y N Y Y Y N N N
Bit transformational functions N Y Y N N Y Y N N N
Intrinsic procedures and modules Absoft Cray GNU HP IBM Intel NAG Oracle PathScale PGI Flang
Storage size N Y Y N Y Y Y N N Y Y
Optional argument RADIX added to SELECTED REAL KIND N Y Y N Y Y Y N N N
Extensions to trigonometric hyperbolic intrinsics Y Y Y N Y Y Y N N Y
Bessel functions Y Y Y N N Y Y N N Y
Error and gamma functions Y Y Y N Y Y Y N P Y
Euclidean vector norms N Y Y N N Y Y N N Y
Parity N Y Y N N Y Y Y N N
Execute command line Y Y Y N Y Y Y N N Y N
Optional back argument added to maxloc and minloc N Y Y N Y Y N N N N
Find location in an array ? Y Y N Y Y N N N Y
String comparison ? Y Y ? N Y Y Y N Y
Constants N Y P (203) N Y Y Y N N Y
COMPILER_VERSION N Y Y N Y Y Y N N Y N
COMPILER_OPTIONS N Y Y N Y Y Y N N Y N
Function for C sizeof ? Y Y ? Y Y N N ? Y
Added optional argument for IEEE_SELECTED_REAL_KIND ? Y Y ? Y Y Y N ? Y
Programs and procedures Absoft Cray GNU HP IBM Intel NAG Oracle PathScale PGI Flang
Save attribute for module and submodule data ? Y Y ? Y Y Y Y N Y
Empty contains section Y Y Y N Y Y Y N N N
Form of end statement for internal and module procedures ? Y Y ? Y Y Y N N Y
Internal procedure as an actual argument N Y Y N Y Y Y N N Y
Null pointer or unallocated allocatable as absent dummy arg. N Y Y N Y Y Y N N Y
Non-pointer actual for pointer dummy argument ? Y N ? Y Y Y Y ? N
Generic resolution by procedureness N Y N N Y Y Y N N Y
Generic resolution by pointer vs. allocatable N Y Y N Y Y Y N N N
Impure elemental procedures N Y Y N Y Y Y N N Y
Entry statement becomes obsolescent Y Y Y N Y Y Y N N Y
Source form Absoft Cray GNU HP IBM Intel NAG Oracle PathScale PGI Flang
Semicolon at line start Y Y Y ? Y Y Y N Y Y


**Legend:** Y = Yes, N = No, P = Partial, U = Unconfirmed

**Footnotes**:

(100) `integer(kind=8)`;

(108) Missing `value` on dummy with non-constant type parameters.

(201) Implemented in 6.0

(203) int and real, and coarray.

(209) Implemented in 6.0.

(211) NAG has `ALLOCATE(MOLD=)`, but not polymorphic assignment

(212) Pathscale, counting bits, not `trailz`

(213) Waiting for update from IBM

(214) leadz, popent, and poppar supported. No trailz.

(300) Supported in 6.0

(301) Single image support since 4.6. Multi-image support using OpenCoarrays (including the Fortran 2015 collective subroutines) since 5.1, except allocatable or pointer components of derived type coarrays.

(701) 8.x

-----

## Changes

Changes July 2020:

* PGI, in its version 20.1, now supports execute_command_line

Changes July 2019:

* Updated table based on latest results from the August 2019 Fortran Forum article (Revision 26).

April 2019:

* Updated table based on the December 2018 Fortran Forum article (Revision 25).

June 2018:

* Began entering Flang
* Note: even PGI 18.4 is called a [Fortran 2003 compiler](https://www.pgroup.com/resources/docs/18.4/x86/pgi-release-notes/index.htm)

August 2016:

* Updated table based on the August 2016 Fortran Forum article
(Revision 19).

April 2016:

* Updated table based on the April 2016 Fortran Forum article
(Revision 18).

March 2016:

* Updated table based on latest results from the December 2015
Fortran Forum article (Revision 17).

November 2015:

* NAG

- Updated for v6.0

November 2014:

* Intel

- `BLOCK` Construct
- `EXECUTE_COMMAND_LINE`

January 2013:

* IBM

- Updated Fortran 2008 support

- Latest IBM status can always be found [here](https://ibm.biz/Fortran2008Status) on the [Fortran Cafe](https://www.ibm.com/developerworks/mydeveloperworks/groups/service/html/communityview?communityUuid=b10932b4-0edd-4e61-89f2-6e478ccba9aa).

December 2010..April 2011:

* Extended list of Fortran 2008 features.

* Absoft: first issue with available data.

* GFortran

- Full support:
Merging bits,
Bit transformational functions.

* Intel

- Partial support:
Allocatable components of recursive type.

- Full support:
Coarrays,
DO CONCURRENT,
CONTIGUOUS attribute,
Simply contiguous arrays,
Maximum rank,
Implied-shape array,
Pointer initialization,
Kind of a forall index,
Allocating a polymorphic variable,
MOLD= in ALLOCATE,
NEWUNIT= in OPEN,
G0 and G0.d edit descriptor,
Unlimited format item,
CONTAINS may be empty,
Additional intrinsic procedures,
Additional items in ISO_FORTRAN_ENV.

* PGI: first issue with available data.

August 2010..December 2010:

* GFortran

- Partial support:
pointer initialization.

- Full support:
CONTIGUOUS attribute,
simply CONTIGUOUS arrays,
implied-shape arrays,
EXIT statement,
bit sequence comparison,
combined shifting,
counting bits,
masking bits,
shifting bits,
Bessel functions
Euclidean vector norms,
parity,
execute command line,
NULL pointer as a missing dummy argument,
ELEMENTAL procedures that are not PURE,
ENTRY statement becomes obsolescent.

April 2010..August 2010:

* Cray

- Partial support:
error and gamma functions.

- Full support:
coarrays,
CONTIGUOUS attribute,
simply contiguous arrays,
allocating a polymorphic variable,
`g0` edit descriptor,
unlimited format item,
BLOCK construct,
stop code,
bit sequence comparison,
masking bits,
selecting a real kind,
arc tangent function,
location of max or min value in an array,
find location in an array,
constants,
and
entry statement becomes obsolescent.

- Errata: "null pointer as a missing dummy argument" changed
from Y to N.

* GFortran

- Partial support:
coarrays,
allocating polymorphic variables, and
constants.

- Full support:
BLOCK construct,
stop code,
hyperbolic intrinsic functions, and
arc tangent function.

* HP: first issue with available data.

* IBM: first issue with available data on Fortran 2008 features.

August 2009..April 2010:

* GFortran added *full* support for unlimited format items
and the error and gamma functions
and *partial* support for the block construct.

* Sun Studio | Sun added full support for parity.

-----

See Also



* Compiler Support for Modern Fortran
* Fortran 2008
* Fortran 2003 status
* Fortran 2018 status


https://fortranwiki.org/fortran/edit/Fortran+2008+status