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

Reply via email to