Next: Extensions to namelist, Previous: Old-style kind specifications, Up: Extensions implemented in GNU Fortran

GNU Fortran allows old-style initialization of variables of the form:

INTEGER i/1/,j/2/ REAL x(2,2) /3*0.,1./

The syntax for the initializers is as for the `DATA`

statement, but
unlike in a `DATA`

statement, an initializer only applies to the
variable immediately preceding the initialization. In other words,
something like `INTEGER I,J/2,3/`

is not valid. This style of
initialization is only allowed in declarations without double colons
(`::`

); the double colons were introduced in Fortran 90, which also
introduced a standard syntax for initializing variables in type
declarations.

Examples of standard-conforming code equivalent to the above example are:

! Fortran 90 INTEGER :: i = 1, j = 2 REAL :: x(2,2) = RESHAPE((/0.,0.,0.,1./),SHAPE(x)) ! Fortran 77 INTEGER i, j REAL x(2,2) DATA i/1/, j/2/, x/3*0.,1./

Note that variables which are explicitly initialized in declarations
or in `DATA`

statements automatically acquire the `SAVE`

attribute.