1 ! Program to test the FORALL construct
4 integer, dimension (3, 3) :: a
5 integer, dimension (3) :: b
6 logical, dimension (3, 3) :: m
, tr
10 a
= reshape ((/1, 2, 3, 4, 5, 6, 7, 8, 9/), (/3, 3/));
14 if (sum(a
) .ne
. 45) call abort
15 write (line
, 9000) sum(a
)
16 if (line
.ne
. ' 45 ') call abort
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
28 if (sum (a
, mask
=m
) .ne
. 42) call abort
29 if (sum (a
, mask
=m
.and
. tr
) .ne
. 42) call abort
31 write(line
, 9000) sum (a
, mask
=m
)
32 if (line
.ne
. ' 42 ') call abort
35 if (b(1) .ne
. 11) call abort
36 if (b(2) .ne
. 13) call abort
37 if (b(3) .ne
. 18) call abort
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