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