Next: Interpretation of the Up: The FORALL Construct Previous: The FORALL Construct
Rule R215 of the Fortran 90 standard for executable-construct is extended to include the forall-construct.
XBNF forall-construct -to -rule to to is FORALL forall-header forall-body-stmt [ forall-body-stmt ] ... END FORALL
forall-body-stmt -to -rule to to is forall-assignment -to or where-stmt -to or where-construct -to or forall-stmt -to or forall-construct XBNF
To determine the set of permitted values for an index-name, we introduce some simplifying notation. In the forall-triplet-spec, let
If stride is missing, it is as if it were present with the value 1. The set of permitted values is determined on entry to the construct and is , . The expression stride must not have the value 0. If for some index-name , no forall-body-stmt is executed.
Each assignment nested within a FORALL construct assigns to memory locations specified by the forall-assignment for permitted values of the index-name variables. A program that causes multiple values to be assigned to the same location by a single statement is not HPF-conforming and therefore has no defined meaning. An HPF-conforming program may, however, assign to the same location in syntactically different assignment statements. This is a semantic constraint rather than a syntactic constraint, however; in general, it cannot be checked during compilation.