1! Program to test the FORALL construct 2program testforall 3 implicit none 4 integer, dimension (3, 3) :: a 5 integer, dimension (3) :: b 6 logical, dimension (3, 3) :: m, tr 7 integer i 8 character(len=9) line 9 10 a = reshape ((/1, 2, 3, 4, 5, 6, 7, 8, 9/), (/3, 3/)); 11 12 tr = .true. 13 14 if (sum(a) .ne. 45) STOP 1 15 write (line, 9000) sum(a) 16 if (line .ne. ' 45 ') STOP 2 17 b = sum (a, 1) 18 if (b(1) .ne. 6) STOP 3 19 if (b(2) .ne. 15) STOP 4 20 if (b(3) .ne. 24) STOP 5 21 write (line, 9000) sum (a, 1) 22 if (line .ne. ' 6 15 24') STOP 6 23 24 m = .true. 25 m(1, 1) = .false. 26 m(2, 1) = .false. 27 28 if (sum (a, mask=m) .ne. 42) STOP 7 29 if (sum (a, mask=m .and. tr) .ne. 42) STOP 8 30 31 write(line, 9000) sum (a, mask=m) 32 if (line .ne. ' 42 ') STOP 9 33 34 b = sum (a, 2, m) 35 if (b(1) .ne. 11) STOP 10 36 if (b(2) .ne. 13) STOP 11 37 if (b(3) .ne. 18) STOP 12 38 39 b = sum (a, 2, m .and. tr) 40 if (b(1) .ne. 11) STOP 13 41 if (b(2) .ne. 13) STOP 14 42 if (b(3) .ne. 18) STOP 15 43 write (line, 9000) sum (a, 2, m) 44 if (line .ne. ' 11 13 18') STOP 16 45 469000 format(3I3) 47end program 48