Image control statements
Standard: F77 F90 F95 F2003 F2008 F2018
<Semantics>
Execution on each image is divided into segments, by “image control statements”. The segments on a single image are ordered: each segment follows the preceding segment. Segments on diffrrent images may be ordered (one following the other) by synchronisation, otherwise they are unordered. If a coarray is defined (assigned a value) in a segment on image I, another image J is only allowed to reference or define it in a segment that either follows or precedes the segment on I. That is, reference or a conflicting definition in an unordered segment is not permitted.
Note that image control statements all have side-effects, and therefore are not allowed in PURE subprograms or DO CONCURRENT constructs.
<List of image control statements>
- ALLOCATE if an object being allocated is a coarray;
- CALL MOVE_ALLOC, if the FROM and TO arguments are coarrays;
- CHANGE TEAM;
- CRITICAL;
- DEALLOCATE if an object being deallocated is a coarray;
- END BLOCK, END FUNCTION, or END SUBROUTINE if that causes automatic deallocation of an allocatable coarray;
- END CRITICAL;
- END TEAM;
- EVENT POST;
- EVENT WAIT;
- FORM TEAM;
- LOCK;
- STOP;
- SYNC ALL;
- SYNC IMAGES;
- SYNC MEMORY;
- UNLOCK.
<Related>
ALLOCATE statement, CHANGE TEAM construct, CODIMENSION attribute, CRITICAL construct, DEALLOCATE statement, END TEAM statement, EVENT POST statement, EVENT WAIT statement, FORM TEAM statement, MOVE_ALLOC intrinsic subroutine, STOP statement, SYNC ALL statement, SYNC IMAGES statement, SYNC MEMORY statement, UNLOCK statement