A slightly extended version does not show the line and column,
but requires the user to count elements:
program nml_quotes_bug
implicit none
integer :: unit = 10
character(8) :: c1, c2
namelist /tovs_obs_chan/ c1, c2
open (unit ,file="nml-quotes-bug.nml")
write(unit,*) "&tovs_obs_chan"
write(unit,*) " c1 = '1', c1 = '1',"
write(unit,*) " c1 = '1', c1 = '1', c2 = 2 ,"
write(unit,*) "/"
rewind(unit)
read (unit ,nml=tovs_obs_chan)
close(unit ,status="delete")
end program nml_quotes_bug
This gives - with or without your patch:
At line 12 of file namelist_101.f90 (unit = 10, file = 'nml-quotes-
bug.nml')
Fortran runtime error: Missing quote while reading item 5
Error termination. Backtrace:
...
Cheers,
Harald
Am 24.06.26 um 3:40 AM schrieb Jerry D:
The attached patch is fairly self explanatory.
I added and check on the message length to not exceed 128 bytes to
avoid potential problems with excessively long namelist input lines.
Two existing test cases are updated to match the dg-output expected
for those tests. I do not think a new test case is needd. Even so,
with the original test case given in the PR we would give:
$ $FC pr118793.f90
$ ./a.out
<ERROR>FILE: namelist read: misplaced = sign
<ERROR>INTERNAL: namelist read: misplaced = sign
<ERROR>SCRATCH: namelist read: misplaced = sign
STOP 1
With the change we now give:
$ $FC pr118793.f90
$ ./a.out
<ERROR>FILE: namelist read: misplaced = sign at line 3, column 12
in file _config.nml
param2 === 0.5 ! problematic line
^
<ERROR>INTERNAL: namelist read: misplaced = sign at line 3, column 12
param2 === 0.5 ! problematic line
^
<ERROR>SCRATCH: namelist read: misplaced = sign at line 3, column
12 in file /tmp/gfortrantmpU5c3Ib
param2 === 0.5 ! problematic line
^
STOP 1