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) call abort 15 write (line, 9000) sum(a) 16 if (line .ne. ' 45 ') call abort 17 b = sum (a, 1) 18 if (b(1) .ne. 6) call abort 19 if (b(2) .ne. 15) call abort 20 if (b(3) .ne. 24) call abort 21 write (line, 9000) sum (a, 1) 22 if (line .ne. ' 6 15 24') call abort 23 24 m = .true. 25 m(1, 1) = .false. 26 m(2, 1) = .false. 27 28 if (sum (a, mask=m) .ne. 42) call abort 29 if (sum (a, mask=m .and. tr) .ne. 42) call abort 30 31 write(line, 9000) sum (a, mask=m) 32 if (line .ne. ' 42 ') call abort 33 34 b = sum (a, 2, m) 35 if (b(1) .ne. 11) call abort 36 if (b(2) .ne. 13) call abort 37 if (b(3) .ne. 18) call abort 38 39 b = sum (a, 2, m .and. tr) 40 if (b(1) .ne. 11) call abort 41 if (b(2) .ne. 13) call abort 42 if (b(3) .ne. 18) call abort 43 write (line, 9000) sum (a, 2, m) 44 if (line .ne. ' 11 13 18') call abort 45 469000 format(3I3) 47end program 48