1! { dg-do run } 2program main 3 implicit none 4 integer, parameter :: n=5 5 character(len=6), dimension(n,n) :: a 6 integer, dimension(n,n) :: v 7 character(len=6), dimension(n) :: r1, r2 8 character(len=6), dimension(:,:), allocatable :: a_alloc 9 integer, dimension(:,:), allocatable :: v_alloc 10 character(len=6), parameter :: zero = achar(0) // achar(0) // achar(0) // achar(0) // achar(0) // achar(0) 11 integer :: i 12 character(len=6),dimension(1) :: ret 13 logical, dimension(n,n) :: mask 14 logical :: smask 15 16 v = reshape([(i*i+200-17*i,i=1,n*n)],shape(v)) 17 write (unit=a,fmt='(I6.6)') (i*i+200-17*i,i=1,n*n) 18 19 r1 = maxval(a,dim=1) 20 write (unit=r2,fmt='(I6.6)') maxval(v,dim=1) 21 if (any (r1 /= r2)) STOP 1 22 r1 = 'x' 23 write (unit=r1,fmt='(I6.6)') maxval(v,dim=1) 24 if (any (r1 /= r2)) STOP 2 25 26 r1 = 'y' 27 r1 = maxval(a,dim=2) 28 write (unit=r2,fmt='(I6.6)') maxval(v,dim=2) 29 if (any (r1 /= r2)) STOP 3 30 r1 = 'z' 31 write (unit=r1,fmt='(I6.6)') maxval(v,dim=2) 32 if (any (r1 /= r2)) STOP 4 33 34 allocate (a_alloc(0,1), v_alloc(0,1)) 35 ret = 'what' 36 ret = maxval(a_alloc,dim=1) 37 if (ret(1) /= zero) STOP 5 38 39 r1 = 'qq' 40 r1 = maxval(a, dim=1, mask=a>"000200"); 41 if (any(r1 /= zero .neqv. maxval(v,dim=1, mask=v>200) > 0)) STOP 6 42 if (any(maxval(a, dim=1, mask=a>"000200") /= zero .neqv. maxval(v,dim=1, mask=v>200) > 0)) STOP 7 43 44 r1 = 'rr' 45 r1 = maxval(a, dim=2, mask=a>"000200"); 46 if (any(r1 /= zero .neqv. maxval(v,dim=2, mask=v>200) > 0)) STOP 8 47 if (any(maxval(a, dim=2, mask=a>"000200") /= zero .neqv. maxval(v,dim=2, mask=v>200) > 0)) STOP 9 48 49 mask = .true. 50 forall (i=1:n) 51 mask(i,i) = .false. 52 end forall 53 54 r1 = 'aa' 55 r1 = maxval(a, dim=1, mask=mask) 56 write(unit=r2,fmt='(I6.6)') maxval(v,dim=1, mask=mask) 57 if (any(r1 /= r2)) STOP 10 58 59 r1 = 'xyz' 60 smask = .true. 61 r1 = maxval(a, dim=1, mask=smask) 62 write (unit=r2,fmt='(I6.6)') maxval(v,dim=1) 63 if (any (r1 /= r2)) STOP 11 64 65 smask = .false. 66 r1 = 'foobar' 67 r1 = maxval(a, dim=1, mask=smask) 68 if (any(r1 /= zero)) STOP 12 69end program main 70