GNU Fortran supports several Fortran 2003 features; an incomplete list can be found below. See also the wiki page about Fortran 2003.
PASS
attribute.
PASS
, PROCEDURE
and GENERIC
, and
operators bound to a type.
CLASS
”) for derived types – including
SAME_TYPE_AS
, EXTENDS_TYPE_OF
and SELECT TYPE
.
Note that unlimited polymorphism is currently not supported.
ASSOCIATE
construct.
ALLOCATE
statement, allowing for a
type-specification with type parameter and for allocation and initialization
from a SOURCE=
expression; ALLOCATE
and DEALLOCATE
optionally return an error message string via ERRMSG=
.
MOVE_ALLOC
.
PRIVATE
and PUBLIC
attributes may be given individually
to derived-type components.
INTENT
may be specified which affect the
association status not the value of the pointer target.
command_argument_count
, get_command
,
get_command_argument
, and get_environment_variable
.
SELECTED_CHAR_KIND
and NEW_LINE
intrinsic functions.
INT
, REAL
, CMPLX
and DBLE
.
[...]
rather
than (/.../)
. Type-specification for array constructors like
(/ some-type :: ... /)
.
FLUSH
statement.
IOMSG=
specifier for I/O statements.
ENUM
and ENUMERATOR
statements. Interoperability with
gcc is guaranteed also for the case where the
-fshort-enums command line option is given.
OPEN
statement supports the ACCESS='STREAM'
specifier,
allowing I/O without any record structure.
PROTECTED
statement and attribute.
VALUE
statement and attribute.
VOLATILE
statement and attribute.
IMPORT
statement, allowing to import
host-associated derived types.
ISO_FORTRAN_ENVIRONMENT
is supported,
which contains parameters of the I/O units, storage sizes. Additionally,
procedures for C interoperability are available in the ISO_C_BINDING
module.
USE
statement with INTRINSIC
and NON_INTRINSIC
attribute; supported intrinsic modules: ISO_FORTRAN_ENV
,
ISO_C_BINDING
, OMP_LIB
and OMP_LIB_KINDS
.
USE
statement.