To: J3 Members J3/16-262 From: Van Snyder Subject: Comments on Clause 11 References: 16-007r2 Date: 2016 September 28 1. Edits -------- [183:20 11.1.3.3p5] Replace "or" with "nor" {to correspond to "neither"}. [184:9-10 R1109] Delete "" {because it's included in }. [186:2 11.1.5.2p2] Replace first "the" with "its". [186:24,28 11.1.5.2p6,7] The term "original team" might be confused with "initial team". Replace "original team" with "team that executed the CHANGE TEAM statement" or "parent team" {subgroup choice} twice. [187:7 C1120] C1120 should be a constraint on R1116, not a general constraint. Insert "(R1116)" before "A branch". [190:1 11.1.2.7.1p1(1)] Delete "with the same kind type parameter as the " because the same thing is said two lines below at [190:3]. [190:21 11.1.7.4.2p1(1)] Delete "with the same kind type parameter as the " because the same thing is said two lines below at [190:23]. [193:11 11.1.7.5p6] Append a sentence "Each input/output operation is performed completely without interference from another input/output operation on the same unit in a different iteration." {This could be a note if this is already specified somewhere in Clause 12 -- but it needs to be said here in proximity to the prohibition against ADVANCE. If the effect of a critical section within a concurrent construct were to prohibit an iteration from entering it if another one is executing it, we could simply say "as if in a critical section."} [199:12 C1150] Replace "maximum rank supported by the processor" with "fifteen minus the corank" {because we don't want constraints to bless or encourage the use of extensions}. [204:20 11.3p1] After "statement" insert "that is not an statement" {because it has an effect there}. [206:28 11.6.2p2] Replace "may take place" with "may precede, succeed, or take place". [206:37-38 11.6.2p3(2)] Replace "referenced or defined" with "referenced, defined, or its association or allocation status inquired,". Insert a comma after "on another image". [207:0+10-11 NOTE 11.33] After "provided" insert "that a reference potential reference to, or definition or potential definition of, a variable that is also referenced or defined in a call to". Replace "are not involved" with "is not moved across that call". {This covers nonlocal variables that might be referenced or defined during procedure references.} [211:5+2 NOTE 11.42] After "synchronizes" insert "an image with the images of". [211:9 R1171] Replace "scalar-variable" with "\si{scalar-variable}". [211:12- 11.6.7p2-] Insert a paragraph similar to 11.6.10p1: "The shall not depend on the value of the or ." [212:23 11.6.9p5] Replace "this team" with "the current team". [215:16 11.6.11p5(3)] After "stopped" insert "or failed". [215:23,27,30 11.6.11p7] Replace "specified variable" with "" thrice {for consistency with other list items.} [215:24-25 11.6.11p7] Replace "variable specified by the STAT= specifier" with "" {for consistency with other list items.} [535:1+ Annex A] Insert a list item: " o the value assigned to a STAT= specifier in an image control statement if an error other than a stopped image or failed image occurs (11.6.11);" 2. Optional edit ---------------- [195:19 11.1.8.2p1] Delete "At most ... is executed" because it's already said in 11.1.8.1p1. 3. Questions without edits -------------------------- [185-186 11.1.5] If a CHANGE TEAM construct is executed while a construct is executing, and that construct has a that is a coindexed object, does the CHANGE TEAM construct affect the image index of the association? I think not, because it doesn't affect the image index of an actual argument (or at least I hope it doesn't). A note might be helpful to stave off a future interp request. Something like "Execution of a CHANGE TEAM statement does not affect associations of coindexed actual arguments to dummy arguments of procedures that have not completed execution when the CHANGE TEAM statement is executed, or associations established by constructs that have not completed execution when the CHANGE TEAM statement is executed." Or this could be said in 11.1.3.3. Something like "If the is a coindexed object, the image to which it refers is not affected by executing a CHANGE TEAM statement while the construct is executing," and something like that somewhere in 15.5.2.3. [207 NOTE 11.34] Should variables that are referenced or defined by calls to atomic subroutines have the VOLATILE attribute? Otherwise, how does the processor know that some other image does not have its value in a cache? It probably isn't enough to specify explicitly that it has the attribute implicitly because an ordinary reference to it might appear in a different scoping unit from its use in a reference to an atomic subroutine. Of should every reference to an atomic subroutine be preceded and followed by SYNC MEMORY (which seems like a rather large hammer)? If they need to have the VOLATILE attribute, its description should be changed to encompass more than "means other than Fortran." [210:17 R1169] Why doesn't SYNC TEAM allow an integer to specify the team, as is allowed in an ? [213 11.6.10] What happens if an image that other images consider to have failed actually hasn't, doesn't realize they believe it's failed, and locks a lock variable? [214-215 11.6.11] Are failed or stopped images error conditions, or simply information made available using the ? This affects whether an image control statement without a STAT= specifier causes error termination if another image has failed, and the wording of "if an error other than a stopped image or failed image...."