To: J3 J3/14-102 From: John Reid Subject: FAIL_IMAGE Date: 2014 January 14 References: N1996, N1999 Discussion ---------- We need an intrinsic whose effect is to cause the executing image to become a failed image. This is needed for the testing of a program that is intended to continue execution in the presence of failed images. Edits to N1996: --------------- [17:5] Before "TEAM_DEPTH" add "FAIL_IMAGE,". [25:7+] After 7.4.13 add new subclause 7.4.13+ FAIL_IMAGE [(STRING)] <> Make the executing become a failed image. <> Subroutine. <> STRING (optional) shall be of type character. It is an INTENT (IN) argument. It it is present, its value is made available in a processor-dependent manner. If the processor has the ability to detect that an image has failed, referencing this subroutine makes the executing image become a failed image. Otherwise, a STOP statement is executed. <> In a piece of code that each image executes about once a second, invoking the subroutine SUBROUTINE FAIL REAL :: X CALL RANDOM_NUMBER(X) IF(X<0.001) CALL FAIL_IMAGE END SUBROUTINE FAIL will randomly cause the executing image to become a failed image, on average after about 1000 seconds. NOTE 7.4 On a processor that does not have the ability to detect that an image has failed, there is no reqirement that a STOP statement be executed immediately. A processor that is particularly good at diagnostic messages might provide a simulated failure environment that would cause the call to appear to work as expected. [32:1-] Before the entry for GET_TEAM in the table, add "FAIL_IMAGE[(STRING)] S Make executing image become a failed image." [33] In 8.11, add new bullet point: "the manner in which the value of the STRING argument of the FAIL_IMAGE intrinsic subroutine is made available."