J3/13-311 To: J3 From: Van Snyder Subject: For editorial consideration to avoid apparent contradictions Date: 2013 August 21 Reference: 13-211r1 1. The problem -------------- 5.3.4p1 says An entity with the ASYNCHRONOUS attribute is a variable....] {It would be helpful if this were a constraint in, say, 5.4.3, parallel to C559, so that processors would be required to report violations of it.} C558 says ... an entity with the VALUE attribute shall not have the VOLATILE attribute. C559 says An entity with the VALUE attribute shall be a variable.... 5.3.19p2 says Within a BLOCK construct (8.1.4), a noncoarray object may have the VOLATILE attribute even if it does not have the attribute outside the BLOCK construct. 8.1.4p2 says The appearance of the name of an object that is not a construct entity in an ASYNCHRONOUS or VOLATILE statement in a BLOCK construct specifies that the object has the attribute within the construct even if it does not have the attribute outside the construct. 16.5.1.4p1 says ... a noncoarray local entity may have the VOLATILE attribute even if the host entity does not. There is the appearance of contradictions between C558 and 5.3.19p2, 8.1.4p2, and 16.5.1.4p1, since C558 says "shall not," while the other places say "may." Further, one might construe 5.3.19p2, 8.1.4p2, and 16.5.1.4p1 to allow the VOLATILE attribute for a named constant, since they say "object may have," contradicting C559. There is no contradiction with VALUE for ASYNCHRONOUS because VALUE does not preclude ASYNCHRONOUS. However, one might construe 5.3.4p4, 8.1.4p2, and 16.5.1.4p1 to allow the ASYNCHRONOUS attribute for a named constant, contradicting 5.3.4p1. 2. Edits for VOLATILE --------------------- [10-007r1:102:2,5 5.3.19p1] Replace "object" with "variable" twice. {For consistency only; not needed to avoid a contradiction.} [10-007r1:102:15 5.3.19p2] Replace "object" with "variable that does not have the VALUE attribute" [10-007r1:108:23 5.4.17p1] Replace "objects" with "variables". {For consistency only; not needed to avoid a contradiction.} [10-007r1:172:10 8.1.4p2] Delete "or VOLATILE". [10-007r1:172:11 8.1.4p2] Append a sentence: "The appearance of the name of a variable that that does not have the VALUE attribute and is not a construct entity in a VOLATILE statement in a BLOCK construct specifies that the object has the attribute within the construct even if it does not have the attribute outside the construct." [10-007r1:443:34 16.5.1.4p1] Replace "local entity" with "local variable that does not have the VALUE attribute". 3. Edits for ASYNCHRONOUS ------------------------- [10-007r1:90:22 5.3.4p4] Replace "An object" with "A variable". {For consistency only; not needed to avoid a contradiction.} [10-007r1:90:22 5.3.4p4] Replace "an object" with "a variable". [10-007r1:90:23 5.3.4p4] Replace "an object" with "a variable". {For consistency only; not needed to avoid a contradiction.} [10-007r1:103:10 5.4.2p1] Replace "objects" with "variables". {For consistency only; not needed to avoid a contradiction.} [10-007r1:172:9 8.1.4p2] Replace "an object" with "a variable". [10-007r1:443:33 16.5.1.4p1] Replace first "entity" with "variable". 4. Simpler alternative edits for VOLATILE (see 13-211r1) -------------------------------------------------------- This is a (trivial) feature change, definitely a "wart removal," which was not added to 13-244r1, and therefore not taken up at Delft. [Introduction p2+] In the new list of new features, insert a list item: " o Data declaration: A dummy data object with the VALUE attribute is permitted to have the VOLATILE attribute " [10-007r1:101:24 C558] Replace "POINTER, or VOLATILE" with "or POINTER". [10-007r1:102:2,5 5.3.19p1] Replace "object" with "variable" twice. {For consistency only; not needed to avoid a contradiction.} [10-007r1:108:23 5.4.17p1] Replace "objects" with "variables". {For consistency only; not needed to avoid a contradiction.}