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. Two extensions are permitted:
Old-style use of ‘$’ instead of ‘&’
$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’.
Querying of the namelist when inputting from stdin. After at least one space, entering ‘?’ sends to stdout the namelist name and the names of the variables in the namelist:
? &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
Expanded namelist reads are permitted. This causes an error if -std=f95 is used. In the following example, the first element of the array will be given the value 0.00 and the two succeeding elements will be given the values 1.00 and 2.00.
&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. If -std=F95, F2003,
or F2008, etc, the delim status is set to ’none’. Defaulting to
quotes ensures that namelists with character strings can be subsequently
read back in accurately.