FORALL 构造

FORALL 构造对子对象组 (尤其是数组元素) 执行赋值。

WHERE 构造不同, FORALL 对数组元素,数组部分和子串执行赋值。 此外, FORALL 构造中的每个赋值都不需要符合先前的赋值。 FORALL 构造可以包含嵌套的 FORALL 语句, FORALL 构造, WHERE 语句和 WHERE 构造。

-qxlf2003=autorealloc 不适用于 FORALL 构造。 在 FORALL 构造内的赋值语句期间,不会发生可分配变量的重新分配。

IBM 扩展开始 指令规定,任务中的左右两侧必须位于 INDEPENDENT指令规定,一个结构内左右两侧的分配 FORALL结构中的左右两侧不能重叠。 IBM 扩展结束

读取语法图跳过可视语法图FORALL_construct_statement

读取语法图跳过可视语法图forall_body

读取语法图跳过可视语法图END_FORALL_statement
FORALL_construct_statement
请参阅 FORALL (构造) 以获取语法详细信息。
END_FORALL_statement
请参阅 END (构造) 以获取语法详细信息。
forall_body
是下列一个或多个语句或构造:
  • forall_assignment
  • WHERE 语句 (请参阅 WHERE)
  • WHERE 构造 (请参阅 WHERE 构造)
  • FORALL 语句 (请参阅 FORALL)
  • FORALL 构造
forall_assignment
assignment_statementpointer_assignment_statement

forall_body 中引用的任何过程,包括由定义的操作,定义的分配或最终化所引用的过程都必须是纯粹的。

如果 FORALL 语句或构造嵌套在 FORALL 构造中,那么内部 FORALL 语句或构造无法重新定义外部 FORALL 构造中使用的任何 index_name

虽然不能多次将原子对象分配给同一语句或在同一语句中更改其关联状态,但同一 FORALL 构造中的不同赋值语句可以重新定义或重新关联原子对象。 此外, WHERE 构造中的每个 WHERE 语句和赋值语句都必须遵循以下限制。

如果指定了 FORALL_construct_name ,那么它必须同时出现在 FORALL 语句和 END FORALL 语句中。 END FORALL 语句和 FORALL 构造中的任何语句都不能是分支目标语句。