1 ! Really test where inside forall with temporary
7 integer, dimension(:), pointer :: p
9 type (t
), dimension (5) :: v
18 v(:)%valid
= (/.true
., .true
., .false
., .true
., .true
./)
19 v(:)%s
= (/1, 8, 999, 6, 2/)
21 v(2)%p(:) = (/1, 2, 3, 4, 5, 6, 7, 8/)
22 v(4)%p(:) = (/13, 14, 15, 16, 17, 18, 19, 20/)
23 v(5)%p(:) = (/11, 12/)
25 forall (i
=1:5,v(i
)%valid
)
26 where (v(i
)%p(1:v(i
)%s
).gt
.4)
27 v(i
)%p(1:v(i
)%s
) = v(6-i
)%p(1:v(i
)%s
)
31 if (any(v(1)%p(:) .ne
. (/11, 10/))) call abort
32 if (any(v(2)%p(:) .ne
. (/1, 2, 3, 4, 17, 18, 19, 20/))) call abort
33 if (any(v(4)%p(:) .ne
. (/1, 2, 3, 4, 5, 6, 19, 20/))) call abort
34 if (any(v(5)%p(:) .ne
. (/9, 10/))) call abort
37 v(2)%p(:) = (/1, 2, 3, 4, 5, 6, 7, 8/)
38 v(4)%p(:) = (/13, 14, 15, 16, 17, 18, 19, 20/)
39 v(5)%p(:) = (/11, 12/)
41 forall (i
=1:5,v(i
)%valid
)
42 where (v(i
)%p(1:v(i
)%s
).le
.4)
43 v(i
)%p(1:v(i
)%s
) = v(6-i
)%p(1:v(i
)%s
)
47 if (any(v(1)%p(:) .ne
. (/9, 10/))) call abort
48 if (any(v(2)%p(:) .ne
. (/13, 14, 15, 16, 5, 6, 7, 8/))) call abort
49 if (any(v(4)%p(:) .ne
. (/13, 14, 15, 16, 17, 18, 19, 20/))) call abort
50 if (any(v(5)%p(:) .ne
. (/11, 12/))) call abort
52 ! I should really free the memory I've allocated.