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. Note: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 Note:Fortran 90. For
information on the Fortran 90 intrinsics available, see Note: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. Note:Character Type.
Construct names
(Symbolic tags on blocks.) Note:Construct Names.
`CYCLE' and `EXIT'
Note:The `CYCLE' and `EXIT' Statements.
`DOUBLE COMPLEX'
Note:`DOUBLE COMPLEX' Statement.
`DO WHILE'
Note:DO WHILE.
`END' decoration
Note:Statements.
`END DO'
Note:END DO.
`KIND'
`IMPLICIT NONE'
`INCLUDE' statements
Note: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.
Note:Integer Type.
`O' and `Z' edit descriptors
`NAMELIST'
Note: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. *Note `SELECT CASE' on `CHARACTER' Type:
SELECT CASE on CHARACTER Type.
Specification statements
A limited subset of the Fortran 90 syntax and semantics for
variable declarations is supported, including `KIND'. Note: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.