1! Program to test WHERE inside FORALL 2program where_1 3 integer :: A(5,5) 4 5 A(1,:) = (/1,0,0,0,0/) 6 A(2,:) = (/2,1,1,1,0/) 7 A(3,:) = (/1,2,2,0,2/) 8 A(4,:) = (/2,1,0,2,3/) 9 A(5,:) = (/1,0,0,0,0/) 10 11 ! Where inside FORALL. 12 ! WHERE masks must be evaluated before executing the assignments 13 forall (I=1:5) 14 where (A(I,:) .EQ. 0) 15 A(:,I) = I 16 elsewhere (A(I,:) >2) 17 A(I,:) = 6 18 endwhere 19 end forall 20 21 if (any (A .ne. reshape ((/1, 1, 1, 1, 1, 0, 1, 2, 1, 2, 0, 1, 2, 3, 0, & 22 0, 1, 4, 2, 0, 0, 5, 6, 6, 5/), (/5, 5/)))) STOP 1 23 24 ! Where inside DO 25 A(1,:) = (/1,0,0,0,0/) 26 A(2,:) = (/2,1,1,1,0/) 27 A(3,:) = (/1,2,2,0,2/) 28 A(4,:) = (/2,1,0,2,3/) 29 A(5,:) = (/1,0,0,0,0/) 30 31 do I=1,5 32 where (A(I,:) .EQ. 0) 33 A(:,I) = I 34 elsewhere (A(I,:) >2) 35 A(I,:) = 6 36 endwhere 37 enddo 38 39 if (any (A .ne. reshape ((/1, 1, 1, 1, 1, 0, 1, 2, 1, 2, 0, 1, 2, 6, 0, & 40 0, 1, 0, 2, 0, 0, 0, 5, 5, 5/), (/5, 5/)))) STOP 2 41end 42