Date: Wed, 12 Jan 2000 14:24:42 -0500 Original-Sender: Michael Metcalf <[log in to unmask]> MIME-Version: 1.0 Content-Disposition: inline Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from quoted-printable to 8bit by naga.mailbase.ac.uk id TAA00885 Subject: Qustion on the WHERE statement From: Michael Metcalf <[log in to unmask]> To: "Rector, David" <[log in to unmask]> Cc: "[log in to unmask]" <[log in to unmask]> X-List: [log in to unmask] X-Unsub: To leave, send text 'leave comp-fortran-90' to [log in to unmask] X-List-Unsubscribe: <mailto:[log in to unmask]> Content-Transfer-Encoding: 8bit where (ltest(1:nx,1:ny,1:nz)) a(1:nx,1:ny,1:nz) = b(1:nx,1:ny,1:nz) + c(1:nx,1:ny,1:nz) is the only way to do it. The logical array expression and the array variables must all be conformable (of the same rank and shape). See also "Fortran 90/95 Explained", section 6.8. Regards, Mike Metcalf Note that for Fortran 95 compilers, or any Fortran compiler supporting the FORALL statement, this array assignment can also be expressed as forall (i=1:nx,j=1:ny,k=1:nz, ltest(i,j,k)) a(i,j,k) = b(i,j,k) + c(i,j,k) allowing you to express the range of subscripts in each dimension only once, but requiring the use of explicit index variables such as i, j, k. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%