Hi Jerry,
the patch looks fine. However, I wonder if it should also
improve the diagnostics for testcase namelist_101.f90.
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