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 and unlimited
polymorphism (“CLASS(*)
”) – including SAME_TYPE_AS
,
EXTENDS_TYPE_OF
and SELECT TYPE
for scalars and arrays and
finalization.
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.
strtod
honours
the rounding mode, the rounding mode is also supported for input.
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
,
and OPENACC
.
USE
statement.