To: J3 Members J3/16-151 From: Van Snyder Subject: Unhelpful conspiracy between 8.1.3.3 and 16.5.1.6 Reference: 16-007 Date: 2016 January 27 1. Introduction =============== It is unhelpful that a subclause named "Attributes of associate names" doesn't discuss three of the important attributes, and that discussion of two important ones not discussed in that subclause is well hidden eight clauses distant. It can't discuss type (and type parameters) if we want to use it both from the specification of the ASSOCIATE construct and the SELECT TYPE construct because the type and type parameters are different in those cases. What are missing, and there's no obvious way to find or notice their absence, is whether the associate name has or does not have the ALLOCATABLE or POINTER attribute. This specification is tucked away in 16.5.1.6, for which there is a cross reference but no clue that these attributes are discussed therein. It would be more helpful if these attributes were described in 8.1.3.3 "Attributes of associate names". 2. Edits ======== [173:11 8.1.3.3p2] Before "If the selector..." insert "The associate name does not have either the ALLOCATABLE or POINTER attribute." [173:12+ 8.1.3.2p3+] Insert a paragraph: "The associating has no other attributes." {This makes it explicit, not implied by omission, that (unlike the case with host association), the associating entity does not have the INTENT or OPTIONAL attributes.} [494:9-10 16.5.1.6p2] Replace "; the associate name ... and does not have the ALLOCATABLE attribute" with a full stop. [494:11-12 16.5.1.6p3] Replace "; the associate name ...and does not have the POINTER attribute" with a full stop, and combine 16.5.1.6p3 with 16.5.1.6p2. [494:14 16.5.1.6p4] After "selector" insert "if it does not have the POINTER attribute or with the target of the selector if it has the POINTER attribute". [494:17 16.5.1.6p5] After "associate name" insert ", except that if the associate name is polymorphic it cannot be assigned a value by intrinsic assignment (7.2.1.2) because it does not have the ALLOCATABLE attribute". or at [494:18+ 16.5.1.6p5+] insert a NOTE "NOTE 16.8a A polymorphic associate name cannot be assigned a value by intrinsic assignment (7.2.1.2) because it does not have the ALLOCATABLE attribute." or insert this note as NOTE 8.2a at [173:15+ 8.1.3.3p3+] 3. Alternative edits ==================== If we absolutely must hide discussion of these attributes in 16.5.1.6, at least alert the reader that there are even more attributes discussed eight clauses distant in 16.5.1.6. [172:33 8.1.3.2p2] After "8.1.3.3" append "and 16.5.1.6". [173:12+ 8.1.3.2p3+] Insert a paragraph: "The associating has no other attributes." {This makes it explicit, not implied by omission, that (unlike the case with host association), the associating entity does not have the INTENT or OPTIONAL attributes.} [188:40 8.1.9.3p2] After "8.1.3.3" append "and 16.5.1.6". [191:19 8.1.10.2p8] After "8.1.3.3" append "and 16.5.1.6". [494:5 16.5.1.6] Append "and attributes of associate names" to the subclause title. [494:17 16.5.1.6p5] After "associate name" insert ", except that if the associate name is polymorphic it cannot be assigned a value by intrinsic assignment (7.2.1.2) because it does not have the ALLOCATABLE attribute". or at [494:18+ 16.5.1.6p5+] insert a NOTE "NOTE 16.8a A polymorphic associate name cannot be assigned a value by intrinsic assignment (7.2.1.2) because it does not have the ALLOCATABLE attribute."