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