On Tue, Nov 15, 2022 at 05:13:19PM -0800, Steve Kargl via Fortran wrote:
>
> This patch allows the above to compile and execute.
> It has only had some light testing, and I do not know
> if nested forall and implied-do loops do work. Feel
> free to commit as I cannot.
>
Appears to work for nested forall (at least in the execution
part of a subprogram).
! From Section 6.9 of MR&C
program foo
implicit none
integer, parameter :: n = 9
integer i, j
integer k
integer a(n,n), b(n,n)
a = reshape([(i,i=1,n**2)], [n,n])
do k = 1, 9
print '(*(I3))', a(k,:)
end do
print *
b = a
forall (i = 1:n-1)
forall (j = i+1:n)
a(i,j) = a(j,i) ! a is a rank-2 array
end forall
end forall
do k = 1, 9
print '(*(I3))', a(k,:)
end do
print *
a = b
forall (integer :: ii = 1:n-1)
forall (integer :: jj = ii+1:n)
a(ii,jj) = a(jj,ii) ! a is a rank-2 array
end forall
end forall
do k = 1, 9
print '(*(I3))', a(k,:)
end do
print *
end program foo
--
Steve