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


Reply via email to