J3/16-208 To: J3 From: John Reid & Bill Long Subject: UTI 25 Date: 2016 May 28 Discussion ---------- It was intended that ALLOCATE, DEALLOCATE, and the synchronization statements continue to work on active images in the presence of failed images. This is in the hope that the user can arrange for the calculation to continue in this case. It is confusing to describe such executions as successful. The solution seems to be to describe these as erroneous but nevertheless to specify that when STAT_FAILED_IMAGE is returned the expected actions will have occurred on the active images. Edits for the STAT= specifier in an ALLOCATE or DEALLOCATE statement are given in J3/16-180. Edits for the STAT= specifier in a synchronization statement are given here. Edits to J3/16-007r1 -------------------- [209:1-] In 8.6.11 STAT= and ERRMSG= specifiers in image control statements, before para 1, delete UTI 25. [209:1-9] In 8.6.11 STAT= and ERRMSG= specifiers in image control statements, replace paras 1 and 2 by "If the STAT= specifier appears in an EVENT WAIT or a SYNC MEMORY statement and its execution is successful, the specified variable is assigned the value zero. Otherwise, the specified variable is assigned a processor-dependent positive value that is different from the values of the named constants STAT_FAILED_IMAGE (13.10.2.26) or STAT_STOPPED_IMAGE (13.10.2.29) in the intrinsic module ISO_FORTRAN_ENV (13.10.2). The set of images involved in execution of an END TEAM, FORM TEAM, or SYNC ALL statement is that of the current team. The set of images involved in execution of a CHANGE TEAM or SYNC TEAM statement is that of the team specified by the value of the specified team variable. The set of images involved in execution of a SYNC IMAGES statement is the union of its image set and the executing image. The set of images involved in execution of a LOCK or UNLOCK statement are the image on which the referenced lock variable is located and the executing image. The set of images involved in execution of an EVENT POST statement are the image on which the referenced event variable is located and the executing image. If the STAT= specifier appears in a CHANGE TEAM, END TEAM, EVENT POST, FORM TEAM, LOCK, SYNC ALL, SYNC IMAGES, SYNC TEAM, or UNLOCK statement and its execution is successful, the specified variable is assigned the value zero. Otherwise, if the set of images involved includes a stopped image, the specified variable is assigned the value STAT_STOPPED_IMAGE. Otherwise, if the set of images involved includes a failed image and no other error condition occurs, the intended action shall be performed on the active images involved and the specified variable is assigned the value STAT_FAILED_IMAGE. Otherwise, the specified variable is assigned a processor-dependent positive value that is different from the values of the named constants STAT_STOPPED_IMAGE or STAT_FAILED_IMAGE. If the STAT= specifier appears in a CHANGE TEAM, END TEAM, SYNC ALL, SYNC IMAGES, or SYNC TEAM statement and an error condition occurs that does not result in the specified variable being assigned the value of the named constant STAT_FAILED_IMAGE, the effect is the same as that of executing the SYNC MEMORY statement, except for defining the STAT= variable." [209:20-26] In 8.6.11 STAT= and ERRMSG= specifiers in image control statements, replace paras 4 and 5 by "If the STAT= specifier does not appear in a CHANGE TEAM, END TEAM, or UNLOCK statement and its execution is not successful or an image involved in execution of the statement has failed, error termination is initiated. If the processor has the ability to detect that an image has failed, when an image completes execution of a CRITICAL statement that has a STAT= specifier and the previous image to have entered the construct failed while executing it, the specified variable becomes defined with the value STAT_FAILED_IMAGE and execution of the construct continues normally. Otherwise, when an image completes execution of a CRITICAL statement that has a STAT= specifier, the specified variable becomes defined with the value zero. If an ERRMSG= specifier appears in a CHANGE TEAM, CRITICAL, END TEAM, EVENT POST, EVENT WAIT, FORM TEAM, LOCK, SYNC ALL, SYNC IMAGES, SYNC MEMORY, SYNC TEAM, or UNLOCK statement and its execution is not successful, the processor shall assign an explanatory message to the specified variable. If the execution is successful, the processor shall not change the value of the variable."