fortran_2003_status

Fortran 2003 Status

  1. Compiler Support for the Fortran 2003 Standard

The table below documents features from the Fortran 2003 standard that are supported by several available compilers. A similar table is also availble for Fortran 2008 status and Fortran 2018 status.

Note that the versions described below may be out of date and that the development versions of some compilers support many support additional features. Please check with the compiler vendor for the most up-to-date information on support for specific features. See Compiler Support for Modern Fortran for a summary, caveats, and links to compiler-specific status pages and see Fortran 2003 status discussion for a discussion of the merits of maintaining this page.

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: <ftp://ftp.nag.co.uk/sc22wg5/N1601-N1650/N1648.pdf>.

**Legend:**

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

Fortran 2003 features

 Compiler Version Number
 14
 8.4.0
 
 9.x 
 
 15.1.5
 19.0
 6.2
 8.8
 6.0
 18.10
</tr>

<tr>

 ISO TR 15580 IEEE Arithmetic
 Y
 Y
 P
 Y
 Y
 Y
 Y
 Y
 Y
 Y
 Y
</tr>

<tr>

 ISO TR 15581 Allocatable Enhancements
 Y
 Y
 Y
 Y
 Y
 Y
 Y
 Y
 Y (33)
 Y
 Y
</tr>

<tr>

 Data enhancements and object orientation
 Absoft
 Cray
 g95
 GNU
 HP
 IBM
 Intel
 NAG
 Oracle
 PathScale
 PGI
</tr>

<tr>

 Parameterized derived types
 N
 Y
 N
 Y (36)
 N
 Y
 Y
 Y
 Y
 N
 Y
</tr>

<tr>

 Procedure pointers
 Y
 Y
 Y
 Y
 Y
 Y
 Y
 Y
 Y
 Y
 Y
</tr>

<tr>

 Finalization
 N
 Y
 N
 Y
 N
 Y
 Y
 Y
 Y
 N
 Y
</tr>

<tr>

 Procedures bound by name to a type
 N
 Y
 N
 Y
 N
 Y
 Y
 Y
 Y
 N
 Y
</tr>

<tr>

 The PASS attribute
 Y
 Y
 N
 Y
 Y
 Y
 Y
 Y
 Y
 N
 Y
</tr>

<tr>

 Procedures bound to a type as operators
 N
 Y
 N
 Y
 N
 Y
 Y
 Y
 Y
 N
 Y
</tr>

<tr>

 Type extension
 N
 Y
 N
 Y
 N
 Y
 Y
 Y
 Y
 Y
 Y
</tr>

<tr>

 Overriding a type-bound procedure
 N
 Y
 N
 Y
 N
 Y
 Y
 Y
 Y
 N
 Y
</tr>

<tr>

 Enumerations
 Y
 Y
 Y
 Y
 N
 Y
 Y
 Y
 Y
 N
 Y
</tr>

<tr>

 ASSOCIATE construct
 N
 Y
 N
 Y
 N
 Y
 Y
 Y
 N
 N
 Y
</tr>

<tr>

 Polymorphic entities
 N
 Y
 N
 Y
 N
 Y
 Y
 Y
 Y
 N
 Y
</tr>

<tr>

 SELECT TYPE construct
 N
 Y
 N
 Y
 N
 Y
 Y
 Y
 Y
 N
 Y
</tr>

<tr>

 Deferred bindings and abstract types
 Y
 Y
 N
 Y
 N
 Y
 Y
 Y
 Y
 N
 Y
</tr>

<tr>

 Allocatable scalars (12)
 ?
 Y
 P
 Y
 N
 Y
 Y
 Y
 Y
 N
 Y
</tr>

<tr>

 Allocatable character length (12)
 ?
 Y
 N
 Y
 N
 Y
 Y
 Y
 Y
 N
 Y
</tr>

<tr>

 Miscellaneous enhancements
 Absoft
 Cray
 g95
 GNU
 HP
 IBM
 Intel
 NAG
 Oracle
 PathScale
 PGI
</tr>

<tr>

 Structure constructor changes
 Y
 Y
 Y
 Y
 N
 Y
 Y
 Y
 Y
 Y
 Y
</tr>

<tr>

 Generic procedure interfaces with the same name as a type (32)
 ?
 Y
 ?
 Y
 ?
 Y
 Y
 Y
 Y
 N
 Y
</tr>

<tr>

 The allocate statement
 P
 Y
 P
 Y
 N
 Y
 Y
 Y
 Y
 Y
 Y
</tr>

<tr>

 Assignment to an allocatable array
 N
 Y (3)
 N
 Y
 Y
 Y
 Y (2)
 Y
 Y
 Y
 Y (3)
</tr>

<tr>

 Transferring an allocation
 N
 Y
 N
 Y
 N
 Y
 Y
 Y
 Y
 Y
 Y
</tr>

<tr>

 More control of access from a module
 Y
 Y
 N
 Y
 N
 Y
 Y
 Y
 Y
 N
 Y
</tr>

<tr>

 Renaming operators on the USE statement
 Y
 Y
 Y
 Y
 N
 Y
 Y
 Y
 Y
 N
 Y
</tr>

<tr>

 Pointer assignment
 Y
 Y
 Y
 Y
 N
 Y
 Y
 Y
 Y
 Y
 Y
</tr>

<tr>

 Pointer INTENT
 Y
 Y
 Y
 Y
 Y
 Y
 Y
 Y
 Y
 Y
 Y
</tr>

<tr>

 The VOLATILE attribute
 Y
 Y
 Y
 Y
 Y
 Y
 Y
 Y
 Y
 Y
 Y
</tr>

<tr>

 The IMPORT statement
 Y
 Y
 Y
 Y
 Y
 Y
 Y
 Y
 Y
 Y
 Y
</tr>

<tr>

 Intrinsic modules
 Y
 Y
 Y
 Y
 Y
 Y
 Y
 Y
 Y
 Y
 Y
</tr>

<tr>

 Access to the computing environment
 Y
 Y
 Y
 Y
 Y
 Y
 Y
 Y
 Y
 Y
 Y
</tr>

<tr>

 Support for international character sets
 P (19)
 P (19)
 Y
 Y
 N
 P
 P (19)
 Y
 N
 N
 P (19)
</tr>

<tr>

 Lengths of names and statements
 Y
 Y
 ?
 Y
 Y
 Y
 Y
 Y
 Y
 Y
 Y
</tr>

<tr>

 Binary, octal and hex constants
 Y
 Y
 Y
 Y
 Y
 Y
 Y
 Y
 Y
 Y
 Y
</tr>

<tr>

 Array constructor syntax
 Y
 Y
 Y
 Y
 Y
 Y
 Y
 Y
 Y
 Y
 Y
</tr>

<tr>

 Specification and initialization expressions
 Y
 Y
 Y
 Y
 Y
 Y
 Y
 Y
 Y
 Y
 Y
</tr>

<tr>

 Complex constants
 Y
 Y
 Y
 Y
 Y
 Y
 Y
 Y
 Y
 Y
 Y
</tr>

<tr>

 Changes to intrinsic functions
 Y
 Y
 Y
 Y
 Y
 Y
 Y
 Y
 Y
 ?
 Y
</tr>

<tr>

 Controlling IEEE underflow
 Y
 Y
 N
 Y
 Y
 Y
 Y
 Y
 Y
 Y
 Y
</tr>

<tr>

 Another IEEE class value
 Y
 Y
 N
 Y
 Y
 Y
 Y
 Y
 Y
 Y
 Y
</tr>

<tr>

 I/O enhancements
 Absoft
 Cray
 g95
 GNU
 HP
 IBM
 Intel
 NAG
 Oracle
 PathScale
 PGI
</tr>

<tr>

 Derived type I/O
 N
 Y
 N
 Y
 N
 Y
 Y
 Y
 N
 Y
 Y
</tr>

<tr>

 Asynchronous I/O
 Y
 Y
 Y
 Y
 N
 Y
 Y
 Y
 Y (10)
 Y
 Y
</tr>

<tr>

 FLUSH statement
 Y
 Y
 Y
 Y
 N
 Y
 Y
 Y
 Y
 Y
 Y
</tr>

<tr>

 IOMSG= specifier
 Y
 Y
 Y
 Y
 Y
 Y
 Y
 Y
 Y
 N
 Y
</tr>

<tr>

 Stream access input/output
 N
 Y
 Y
 Y
 N
 Y
 Y
 Y
 Y
 Y
 Y
</tr>

<tr>

 ROUND= specifier
 Y
 Y
 P
 Y
 Y
 Y
 Y (20)
 Y
 Y
 N
 Y
</tr>

<tr>

 DECIMAL= specifier
 Y
 Y
 Y
 Y
 Y
 Y
 Y (22)
 Y
 Y
 N
 Y
</tr>

<tr>

 SIGN= specifier
 Y
 Y
 Y
 Y
 Y
 Y
 Y (21)
 Y
 Y
 N
 Y
</tr>

<tr>

 Kind type parameters of integer specifiers
 N
 Y
 ?
 Y
 N
 Y
 Y
 Y
 Y
 N
 Y
</tr>

<tr>

 Recursive input/output
 N
 Y
 Y
 Y
 N
 Y
 Y
 Y
 Y
 Y
 Y
</tr>

<tr>

 Intrinsic function for newline character
 N
 Y
 Y
 Y
 Y
 Y
 Y
 Y
 Y
 Y
 Y
</tr>

<tr>

 Input and output of IEEE exceptional values
 Y
 Y
 Y
 Y
 Y
 Y
 Y
 Y
 Y
 Y
 Y
</tr>

<tr>

 Comma after a P edit descriptor
 Y
 Y
 Y
 Y
 Y
 Y
 Y
 Y
 Y
 Y
 Y
</tr>

<tr>

 Interoperability with C
 Absoft
 Cray
 g95
 GNU
 HP
 IBM
 Intel
 NAG
 Oracle
 PathScale
 PGI
</tr>

<tr>

 Interoperability of intrinsic types
 Y
 Y
 Y
 Y
 Y
 Y
 Y
 Y
 Y
 Y
 Y
</tr>

<tr>

 Interoperability with C pointers
 Y
 Y
 Y
 Y
 Y
 Y
 Y
 Y
 Y
 Y
 Y
</tr>

<tr>

 Interoperability of derived types
 Y
 Y
 Y
 Y
 Y
 Y
 Y
 Y
 Y
 Y
 Y
</tr>

<tr>

 Interoperability of variables
 Y
 Y
 Y
 Y
 Y
 Y
 Y
 Y
 Y
 Y
 Y
</tr>

<tr>

 Interoperability of procedures
 Y
 Y
 Y
 Y
 Y
 Y
 Y
 Y
 Y
 Y
 Y
</tr>

<tr>

 Interoperability of global data
 Y
 Y
 Y
 Y
 Y
 Y
 Y
 Y
 Y
 N
 Y
</tr>

</tbody> </table>

**Footnotes:**

(2) Optional under flag;

(3) Can be disabled by an optional flag;

(9) `kind=` of maxloc, minloc, shape missing;

(10) implemented as synchronous I/O;

(18) move_alloc;

(19) selected_char_kind only;

(20) plus RC, RD, RN, RP, RU, RZ;

(21) plus BLANK=, DELIM=, PAD=, SIZE=;

(22) plus DC,DP;

(32) These user-defined functions are not to be confused with a type's structure constructor, which is generated automatically. Structure constructors have also changed in Fortran 2003, e.g. by treating components with default initialization as optional arguments.

(33) Implemented as specified in the Fortran 2003 standard, not as in ISO TR 15581.

(34) Kind type parameters for derived types only.


  1. Changes

Changes July 2019:

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

Changes April 2019:

  • Updated table based on latest results from the December 2018 Fortran Forum article (Revision 25).

Changes between December 2015 and August 2016:

- Updated table based on latest results from the August 2016

 [[Fortran Forum]] article (Revision 19).

- Updated table based on latest results from the April 2016

 [[Fortran Forum]] article (Revision 18).

Changes between April 2011 and December 2015:

- Updated table based on latest results from the December 2015

 [[Fortran Forum]] article (Revision 17).

Changes November 2014:

- Intel added parameterized derived types

Changes between December 2010 and April 2011:

* Cray supports ISO TR 15580 IEEE arithmetic, renaming operators
  on the USE statement, controlling IEEE underflow, another IEEE
  class value, and the ROUND= specifier.
* GNU supports allocatable character length and partially
  supports assignment to an allocatable array.
* HP supports ISO TR 15580 IEEE arithmetic and lengths of names
  and statements.
* IBM supports more control of access from a module, renaming
  operators on the USE statement, and lengths of names and
  statements.
* Intel added finalization, pointer assignment and other items.
* Added new columns for Absoft and PGI compilers.

No changes between August 2010 and December 2010.

Changes between April 2010 and August 2010:

* Cray added partial support for international character sets.
* [[GFortran]] added partial support for the ASSOCIATE construct.
* IBM added support for parameterized derived types.
* Intel added partial support for procedures bound to a type as operators
  and full support for SELECT TYPE.

Changes between December 2009 and April 2010:

* [[GFortran]] implemented recursive input/output.


  1. Source

“Compiler Support for the Fortran 2003 and 2008 Standards” is a series of articles in the ACM Fortran Forum by Ian D. Chivers and Jane Sleightholme. Links to previous revisions are given below:

  • Fortran Forum 35(1), 9-29, April 2016
     ([doi:10.1145/2922512.2922513](http://dx.doi.org/10.1145/2922512.2922513))
  • Fortran Forum 34(4), 7-27, December 2015
     ([doi:10.1145/2851087.2851088](http://dx.doi.org/10.1145/2851087.2851088))
  • Fortran Forum 32(2), 14-26, August 2013
     ([doi:10.1145/2502932.2502934](http://dx.doi.org/10.1145/2502932.2502934))
  • Fortran Forum 30(1), 16-24, April 2011
     ([doi:10.1145/1961363.1961365](http://dx.doi.org/10.1145/1961363.1961365))

 ([doi:10.1145/1883575.1883578](http://dx.doi.org/10.1145/1883575.1883578))

  • Fortran Forum 29(2), 28-35, August 2010
     ([doi:10.1145/1837137.1837139](http://dx.doi.org/10.1145/1837137.1837139))
  • Fortran Forum 29(1), 29-34, April 2010
     ([doi:10.1145/1753166.1753169](http://dx.doi.org/10.1145/1753166.1753169))

 ([doi:10.1145/1667140.1667145](http://dx.doi.org/10.1145/1667140.1667145))

  • Fortran Forum 28(2), 15-20, August 2009
     ([doi:10.1145/1570522.1570525](http://dx.doi.org/10.1145/1570522.1570525))
  • Fortran Forum 28(1), 26-28, April 2009
     ([doi:10.1145/1520752.1520755](http://dx.doi.org/10.1145/1520752.1520755))
  • Fortran Forum 26(3), 20-22, December 2007
     ([doi:10.1145/1330585.1330587](http://dx.doi.org/10.1145/1330585.1330587))
  • Fortran Forum 26(2), Front matter, August 2007
     ([frontmatter.pdf](http://portalparts.acm.org/1280000/1279941/fm/frontmatter.pdf))
  • Fortran Forum 26(1), 7-9, April 2007
     ([doi:10.1145/1243413.1243414](http://dx.doi.org/10.1145/1243413.1243414))

  1. See Also

fortran_2003_status.txt · Last modified: 2024/04/28 03:37 (external edit)