Node: Fortran 90 Features, Previous: I/O, Up: Language



Fortran 90 Features

For convenience this section collects a list (probably incomplete) of the Fortran 90 features supported by the GNU Fortran language, even if they are documented elsewhere. See Characters, Lines, and Execution Sequence, for information on additional fixed source form lexical issues. Further, the free source form is supported through the -ffree-form option. Other Fortran 90 features can be turned on by the -ff90 option; see Fortran 90. For information on the Fortran 90 intrinsics available, see Table of Intrinsic Functions.

Automatic arrays in procedures

Character assignments
In character assignments, the variable being assigned may occur on the right hand side of the assignment.
Character strings
Strings may have zero length and substrings of character constants are permitted. Character constants may be enclosed in double quotes (") as well as single quotes. See Character Type.
Construct names
(Symbolic tags on blocks.) See Construct Names.
CYCLE and EXIT
See The CYCLE and EXIT Statements.
DOUBLE COMPLEX
See DOUBLE COMPLEX Statement.
DO WHILE
See DO WHILE.
END decoration
See Statements.
END DO
See END DO.
KIND

IMPLICIT NONE

INCLUDE statements
See INCLUDE.
List-directed and namelist I/O on internal files

Binary, octal and hexadecimal constants
These are supported more generally than required by Fortran 90. See Integer Type.
O and Z edit descriptors

NAMELIST
See NAMELIST.
OPEN specifiers
STATUS='REPLACE' is supported. The FILE= specifier may be omitted in an OPEN statement if STATUS='SCRATCH' is supplied.
FORMAT edit descriptors
The Z edit descriptor is supported.
Relational operators
The operators <, <=, ==, /=, > and >= may be used instead of .LT., .LE., .EQ., .NE., .GT. and .GE. respectively.
SELECT CASE
Not fully implemented. See SELECT CASE on CHARACTER Type.
Specification statements
A limited subset of the Fortran 90 syntax and semantics for variable declarations is supported, including KIND. See Kind Notation. (KIND is of limited usefulness in the absence of the KIND-related intrinsics, since these intrinsics permit writing more widely portable code.) An example of supported KIND usage is:
          INTEGER (KIND=1) :: FOO=1, BAR=2
          CHARACTER (LEN=3) FOO
          
PARAMETER and DIMENSION attributes aren't supported.