09-131r2 To: J3 From: Bill Long, John Reid / Van Snyder Subject: UTI 153 Date: 2009 February 11 References: 09-007, 09-102 Discussion: UTI 153 (page 100) raises questions about [100:6-8]. The intent is that if two coarrays are associated then either both have the VOLATILE attribute or neither does, and if a pointer is associated with a coarray then either both have the VOLATILE attribute or neither does. This is best done with constraints on the VOLATILE attribute, but the text in 11.2.2 and 16.5.1.4 also needs to be modified so as not to contradict this. Once this is done, the text of the first two sentences of para. 2 of 5.3.19 is redundant. Text in 5.3.4 ASYNCHRONOUS attribute and 5.3.19 VOLATILE attribute claims that an object is in several scopes, when in fact an object in one scope might be associated with an object in a different scope. Both 5.3.4 and 5.3.19 overlook the possibility of declaring the attributes within BLOCK constructs. Edits are supplied to do all this. As far as I can see, the content of the first sentence of NOTE 5.25 is not stated in normative text. I have taken the opportunity to do this. The remainder of NOTE 5.25 should be normative. ------------ Edits to 09-007: [88:20-21 5.3.4 ASYNCHRONOUS attribute]--------------------------------- Editor: Replace the first sentence "An object ... 16.5.1.3)" by "An object with the ASYNCHRONOUS attribute may be associated with an object that does not have the ASYNCHRONOUS attribute. Within a BLOCK construct, an object may have the ASYNCHRONOUS attribute even if it does not have the attribute outside the BLOCK construct." [100:5+ 5.3.19 C559+]--------------------------------------------------- Editor: Insert two constraints. "C559a The VOLATILE attribute shall not be specified for a coarray that is accessed by use (11.2.2) or host (16.5.1.4) association. "C559b Within a BLOCK construct (8.1.4), the VOLATILE attribute shall not be specified for a coarray that is not a construct entity (16.4) of that construct." [100:6-8 VOLATILE attribute]-------------------------------------------- Editor: Replace the first two sentences of paragraph 2. "A noncoarray object that has the VOLATILE attribute may be associated with an object that does not have the VOLATILE attribute. Within a BLOCK construct, a noncoarray object may have the VOLATILE attribute even if it does not have the attribute outside the BLOCK construct. The relationship between coarrays, the VOLATILE attribute, and argument association is described in 12.5.2.8. The relationship between between coarrays, the VOLATILE attribute, and pointer association is described in 7.2.2.1. A pointer should have the VOLATILE attribute if its target has the VOLATILE attribute. All members of an EQUIVALENCE class should have the VOLATILE attribute if any member has the VOLATILE attribute." [101: NOTE 5.25]-------------------------------------------------------- Editor: After the first "attribute" insert "(16.5.2.1)". Delete the last two sentences. [160:18+ 7.2.2.1 C720+]------------------------------------------------- Editor: Insert a constraint. "C720a (R735) A coarray shall have the VOLATILE attribute if and only if the has the VOLATILE attribute." [174:2+ 8.1.4 BLOCK construct]------------------------------------------ Editor: Add a sentence at the end of 8.1.4p2. "Specifying the ASYNCHRONOUS or VOLATILE attribute for an object that is not a construct entity of the BLOCK construct means the object has that attribute within the BLOCK construct even if it does not have the attribute outside the BLOCK construct." [275:4-6 11.2.2 The USE statement and use association, para 2]---------- Editor: change the middle sentence to "The accessed entities have the attributes specified in the module, except that a local entity may have a different accessibility attribute, it may have the ASYNCHRONOUS attribute even if the associated module entity does not, and if it is not a coarray it may have the VOLATILE attribute even if the associated module entity does not." [301:9 12.5.2.8 Coarray dummy variables]-------------------------------- Editor: At the end of the sentence add "and shall have the VOLATILE attribute if and only if the dummy argument has the VOLATILE attribute." [452:5-7 16.5.1.4 Host association, para. 1]---------------------------- Editor: Change the third sentence "The accessed entities are identified by the same identifier and have the same attributes as in the host, except that a local entity may have the ASYNCHRONOUS attribute even if the host associated entity does not and a noncoarray local entity may have the VOLATILE attribute even if the host associated entity does not." [455:1 16.5.2.1 General, para 1]---------------------------------------- Editor: Add, as new third sentence "If, by means not specified by the program, the target is referenced, defined, or becomes undefined, the pointer shall have the VOLATILE attribute."