1!{ dg-do run }
2!{ dg-options -std=gnu }
3! Tests namelist read when more data is provided then specified by
4! array qualifier in list.
5! Contributed by Jerry DeLisle  <jvdelisle@gcc.gnu.org>.
6      program pr24459
7      implicit none
8      integer nd, ier, i, j
9      parameter ( nd = 5 )
10      character*(8) names(nd,nd)
11      character*(8) names2(nd,nd)
12      character*(8) names3(nd,nd)
13      namelist / mynml /  names, names2, names3
14      open(unit=20,status='scratch', delim='apostrophe')
15      write (20, '(a)') "&MYNML"
16      write (20, '(a)') "NAMES = 25*'0'"
17      write (20, '(a)') "NAMES2 = 25*'0'"
18      write (20, '(a)') "NAMES3 = 25*'0'"
19      write (20, '(a)') "NAMES(2,2) = 'frogger'"
20      write (20, '(a)') "NAMES(1,1) = 'E123' 'E456' 'D789' 'P135' 'P246'"
21      write (20, '(a)') "NAMES2(1:5:2,2) = 'abcde' 'fghij' 'klmno'"
22      write (20, '(a)') "NAMES3 = 'E123' 'E456' 'D789' 'P135' 'P246' '0' 'frogger'"
23      write (20, '(a)') "/"
24      rewind(20)
25      read(20,nml=mynml, iostat=ier)
26      if (ier.ne.0) call abort()
27      if (any(names(:,3:5).ne."0")) call abort()
28      if (names(2,2).ne."frogger") call abort()
29      if (names(1,1).ne."E123") call abort()
30      if (names(2,1).ne."E456") call abort()
31      if (names(3,1).ne."D789") call abort()
32      if (names(4,1).ne."P135") call abort()
33      if (names(5,1).ne."P246") call abort()
34      if (any(names2(:,1).ne."0")) call abort()
35      if (any(names2(:,3:5).ne."0")) call abort()
36      if (names2(1,2).ne."abcde") call abort()
37      if (names2(2,2).ne."0") call abort()
38      if (names2(3,2).ne."fghij") call abort()
39      if (names2(4,2).ne."0") call abort()
40      if (names2(5,2).ne."klmno") call abort()
41      if (any(names3.ne.names)) call abort()
42      end
43