1! { dg-do run } 2program main 3 implicit none 4 integer, parameter :: n=5, m=3 5 character(kind=4,len=5), dimension(n) :: a 6 character(kind=4,len=5), dimension(n,m) :: b 7 character(kind=4,len=5) :: res 8 integer, dimension(n,m) :: v 9 real, dimension(n,m) :: r 10 integer :: i,j 11 logical, dimension(n,m) :: mask 12 character(kind=4,len=5), dimension(:,:), allocatable :: empty 13 character(kind=4,len=5) , parameter :: all_zero = achar(0) // achar(0) // achar(0) // achar(0) // achar(0) 14 logical :: smask 15 16 write (unit=a,fmt='(I5.5)') (21-i*i+6*i,i=1,n) 17 res = maxval(a) 18 if (res /= 4_'00030') STOP 1 19 do 20 call random_number(r) 21 v = int(r * 100) 22 if (count(v > 20) > 1) exit 23 end do 24 write (unit=b,fmt='(I5.5)') v 25 write (unit=res,fmt='(I5.5)') maxval(v) 26 if (res /= maxval(b)) STOP 2 27 smask = .true. 28 if (res /= maxval(b, smask)) STOP 3 29 smask = .false. 30 if (all_zero /= maxval(b, smask)) STOP 4 31 32 mask = v > 20 33 write (unit=res,fmt='(I5.5)') maxval(v,mask) 34 if (res /= maxval(b, mask)) STOP 5 35 mask = .false. 36 if (maxval(b, mask) /= all_zero) STOP 6 37 allocate (empty(0:3,0)) 38 res = maxval(empty) 39 if (res /= all_zero) STOP 7 40end program main 41