c { dg-do run { target fd_truncate } }
c This program tests: namelist comment, a blank line before the nameilist name, the namelist name,
c a scalar qualifier, various combinations of space, comma and lf delimiters, f-formats, e-formats
c a blank line within the data read, nulls, a range qualifier, a new object name before end of data
c and an integer read.  It also tests that namelist output can be re-read by namelist input.
c provided by Paul Thomas - pault@gcc.gnu.org

      program namelist_1

      REAL x(10)
      REAL(kind=8) xx
      integer ier
      namelist /mynml/ x, xx

      do i = 1 , 10
        x(i) = -1
      end do
      x(6) = 6.0
      x(10) = 10.0
      xx = 0d0

      open (10,status="scratch")
      write (10, *) "!mynml"
      write (10, *) ""
      write (10, *) "&gf /"
      write (10, *) "&mynml  x(7) =+99.0e0 x=1.0, 2.0 ,"
      write (10, *) " 2*3.0, ,, 7.0e0,+0.08e+02 !comment"
      write (10, *) ""
      write (10, *) " 9000e-3 x(4:5)=4 ,5 "
      write (10, *) " x=,,3.0, xx=10d0 /"
      rewind (10)

      read (10, nml=mynml, IOSTAT=ier)
      if (ier.ne.0) STOP 1
      rewind (10)

      do i = 1 , 10
        if ( abs( x(i) - real(i) ) .gt. 1e-8 ) STOP 2
      end do
      if ( abs( xx - 10d0 ) .gt. 1e-8 ) STOP 3

      write (10, nml=mynml, iostat=ier)
      if (ier.ne.0) STOP 4
      rewind (10)

      read (10, NML=mynml, IOSTAT=ier)
      if (ier.ne.0) STOP 5
      close (10)

      do i = 1 , 10
        if ( abs( x(i) - real(i) ) .gt. 1e-8 ) STOP 6
      end do
      if ( abs( xx - 10d0 ) .gt. 1e-8 ) STOP 7

      end program
