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) STOP 1 27 if (any(names(:,3:5).ne."0")) STOP 2 28 if (names(2,2).ne."frogger") STOP 3 29 if (names(1,1).ne."E123") STOP 4 30 if (names(2,1).ne."E456") STOP 5 31 if (names(3,1).ne."D789") STOP 6 32 if (names(4,1).ne."P135") STOP 7 33 if (names(5,1).ne."P246") STOP 8 34 if (any(names2(:,1).ne."0")) STOP 9 35 if (any(names2(:,3:5).ne."0")) STOP 10 36 if (names2(1,2).ne."abcde") STOP 11 37 if (names2(2,2).ne."0") STOP 12 38 if (names2(3,2).ne."fghij") STOP 13 39 if (names2(4,2).ne."0") STOP 14 40 if (names2(5,2).ne."klmno") STOP 15 41 if (any(names3.ne.names)) STOP 16 42 end 43