## FORALL statement

### Standard: F77 F90 F95 F2003 F2008 F2018 Example program

### ＜Syntax＞

FORALL *forall-spec* *forall-asgn-stmt*

*forall-spec* ::= ( [ *integer-type-spec* :: ] *triplet-spec-list* [ , *mask-expr* ] )

*triplet-spec-list* ::= *triplet* [ , *triplet* ]...

*triplet* ::= *name* = *expr* : *expr* [ : *expr* ]

forall-asgn-stmt | ::= | variable = expr |

| | variable => expr |

### ＜Semantics＞

The FORALL statement is equivalent to a FORALL construct containing only a single Forall Assignment statement, i.e.

FORALL *forall-spec* *forall-asgn-stmt*

is exactly the same as

FORALL *forall-spec*

*forall-asgn-stmt*

END FORALL

Like the FORALL construct, the FORALL statement is not recommended for normal use. Whenever possible, use normal DO loops (or a DO CONCURRENT construct), array assignment or a WHERE construct instead.

The FORALL statement is considered obsolescent in Fortran 2018.

### ＜Related＞

Array assignment, DO CONCURRENT construct, FORALL construct, INTEGER type, WHERE statement, WHERE construct