解释 FORALL 语句

  1. 按任意顺序对每个 forall_triplet_spec下标stride 表达式进行求值。 index_name 值的所有可能的配对构成组合集。 例如,给定以下语句:
    FORALL (I=1:3,J=4:5) A(I,J) = A(J,I)
    IJ 的组合集为:
        {(1,4),(1,5),(2,4),(2,5),(3,4),(3,5)}

    -1-qnozerosize 编译器选项不会影响此步骤。

  2. 按任意顺序对 scalar_mask_expr 中的组合集进行求值,生成一组活动组合 ( scalar_mask_expr 求值为 .TRUE.的组合)。 例如,如果掩码 (I+J.NE.6) 应用于上述集合,那么活动组合的集合为:
        {(1,4),(2,5),(3,4),(3,5)}
  3. 对于 assignment_statement,请按任意顺序对右侧 表达式 中的所有值以及左侧 变量 中的所有下标,条带和子串界限进行求值,以获取 index_name 值的所有活动组合。

    对于 pointer_assignment,以任何顺序确定将作为指针赋值的目标的内容,并对指针中所有活动组合的 index_name 值的所有下标,条带和子串界限进行求值。 无论目标是否为指针,目标的确定都不包括对其值的求值。

  4. 对于 assignment_statement,按任意顺序将计算的 表达式 值分配给 index_name 值的所有活动组合的相应 变量 实体。

    对于 pointer_assignment,请按任意顺序将所有目标与 index_name 值的所有活动组合的相应指针实体相关联。