1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
! Check to ensure mask is calculated first in WHERE
! statements.
program where_18
integer :: a(4)
integer :: b(3)
integer :: c(3)
equivalence (a(1), b(1)), (a(2), c(1))
a = (/1, 1, 1, 1/)
where (b .eq. 1)
c = 2
elsewhere (b .eq. 2)
c = 3
endwhere
if (any (a .ne. (/1, 2, 2, 2/))) &
call abort
a = (/1, 1, 1, 1/)
where (c .eq. 1)
b = 2
elsewhere (b .eq. 2)
b = 3
endwhere
if (any (a .ne. (/2, 2, 2, 1/))) &
call abort
end program
|