GNU Fortran fully supports the Fortran 95 standard for namelist I/O including array qualifiers, substrings and fully qualified derived types. The output from a namelist write is compatible with namelist read. The output has all names in upper case and indentation to column 1 after the namelist name. The following extensions are permitted:
$MYNML X(:)%Y(2) = 1.0 2.0 3.0 CH(1:4) = "abcd" $END
It should be noted that the default terminator is ‘/’ rather than ‘&END’.
? &mynml x x%y ch &end
Entering ‘=?’ outputs the namelist to stdout, as if
WRITE(*,NML = mynml)
had been called:
=? &MYNML X(1)%Y= 0.000000 , 1.000000 , 0.000000 , X(2)%Y= 0.000000 , 2.000000 , 0.000000 , X(3)%Y= 0.000000 , 3.000000 , 0.000000 , CH=abcd, /
To aid this dialog, when input is from stdin, errors send their
messages to stderr and execution continues, even if IOSTAT
is set.
PRINT
namelist is permitted. This causes an error if
-std=f95 is used.
PROGRAM test_print REAL, dimension (4) :: x = (/1.0, 2.0, 3.0, 4.0/) NAMELIST /mynml/ x PRINT mynml END PROGRAM test_print
&MYNML X(1,1) = 0.00 , 1.00 , 2.00 /
When writing a namelist, if no DELIM=
is specified, by default a
double quote is used to delimit character strings. With -std=f95
or later, the delim status is set to 'none'
. Defaulting to
quotes ensures that namelists with character strings can be subsequently
read back in accurately.