! Program to test WHERE inside FORALL and the WHERE assignment need temporary program where_6 integer :: A(5,5) A(1,:) = (/1,0,0,0,0/) A(2,:) = (/2,1,1,1,0/) A(3,:) = (/1,2,2,0,2/) A(4,:) = (/2,1,0,2,3/) A(5,:) = (/1,0,0,0,0/) ! Where inside FORALL. ! WHERE masks must be evaluated before executing the assignments m=5 forall (I=1:4) where (A(I,:) .EQ. 0) A(1:m,I) = A(1:m,I+1) + I elsewhere (A(I,:) >2) A(I,1:m) = 6 endwhere end forall if (any (A .ne. reshape ((/1,2,6,2,1,0,1,2,1,2,0,1,2,5,0,0,1,6,2,0,0,0,2,& 6,0/), (/5, 5/)))) call abort end