WHERE 构造
在 Fortran90 以后可用的 where
构造代表一个蒙面的 do
构造。掩码语句遵循 if
语句的相同规则,但适用于给定数组的所有元素。使用 where
允许在阵列(或相同大小的多个阵列)上执行操作,其元素满足特定规则。这可用于简化对多个变量的同时操作。
句法:
[name]: where (mask)
block
[elsewhere (mask)
block]
[elsewhere
block]
end where [name]
这里,
- name - 是块的名称(如果已命名)
- mask - 是应用于所有元素的逻辑表达式
- block - 要执行的一系列命令
例子:
! 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