where construct, available in Fortran90 onwards represents a masked
do construct. The masking statement follows the same rules of the
if statement, but is applied to all the elements of the given array. Using
where allows operations to be carried out on an array (or multiple arrays of the same size), the elements of which satisfy a certain rule. This can be used to simplify simultaneous operations on several variables.
[name]: where (mask) block [elsewhere (mask) block] [elsewhere block] end where [name]
! Example variables real:: A(5),B(5),C(5) A = 0.0 B = 1.0 C = [0.0, 4.0, 5.0, 10.0, 0.0] ! Simple where construct use where (C/=0) A=B/C elsewhere A=0.0 end ! Named where construct Block: where (C/=0) A=B/C elsewhere A=0.0 end where Block