** Next:** Interpretation of the **Up:** FORALL-ELSEFORALL Construct
** Previous:** FORALL-ELSEFORALL Construct

XBNF
forall-construct -to -rule
to to **is ** FORALL (forall-triplet-spec-list
[,scalar-mask-expr ])
forall-body-stmt-list
[ELSEFORALL]
[elseforall-body-stmt-list]
END FORALL

forall-body-stmt -to -rule
to to **is ** forall-assignment
-to **or ** forall-stmt
-to **or ** forall-construct

elseforall-body-stmt -to -rule
to to **is ** forall-body-stmt
XBNF

*index-name*must be a*scalar-name*of type integer.- A
*subscript*or a*stride*in a*forall-triplet-spec*must not contain a reference to any*index-name*in the*forall-triplet-spec-list*. - Any left-hand side
*array-section*or*array-element*in any*forall-body-stmt*must reference all of the*forall-triplet-spec index-name*s. - If a
*forall-stmt*or*forall-construct*is nested within a*forall-construct*, then the inner FORALL may not redefine any*index-name*used in the outer*forall-construct*. This rule applies recursively in the event of multiple nesting levels.

For each index name in the *forall-assignment*s, the set of
permitted values is determined on entry to the construct and is
and where *m1*, *m2*, and *m3* are the values of the first
subscript, the second subscript, and the stride respectively in the
*forall-triplet-spec*. If *stride* is missing, it is as if it
were present with a value of the integer 1. The expression *stride* must not have the value 0. If for some index name
, the *forall-assignment*s are not executed.

Thu May 5 15:11:02 CDT 1994