Extensions to namelist (The GNU Fortran Compiler)

#### 5.1.3 Extensions to namelist ¶

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:

- 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 is given the value 0.00 and the two succeeding elements are 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. 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.