2 ! Really test forall with temporary
8 integer, dimension(:), pointer :: p
10 type (t
), dimension (5) :: v
19 v(:)%valid
= (/.true
., .true
., .false
., .true
., .true
./)
20 v(:)%s
= (/1, 8, 999, 6, 2/)
22 v(2)%p(:) = (/1, 2, 3, 4, 5, 6, 7, 8/)
23 v(4)%p(:) = (/13, 14, 15, 16, 17, 18, 19, 20/)
24 v(5)%p(:) = (/11, 12/)
27 forall (i
=1:5,v(i
)%valid
)
28 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
. (/13, 14, 15, 16, 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
36 ! I should really free the memory I've allocated.