To: J3 Members J3/16-197 From: Van Snyder Subject: Comments on clause 4, other than for kind type parameters References: 16-007r1 Date: 2016 May 23 1. Edits ======== [51:16 4.1.3p1] Replace "individual components" with "real and imaginary parts" because COMPLEX is not a derived type. [52:14 C402] Delete "or component" because a component is an entity. [53:15-16 R403] Replace "<> TYPE ( ) <> TYPE ( )" with "<> TYPE ( )" [53:24 C406] Delete C406 because its effect is identical to C403. [59:36 R423] Replace "" with "", which is the result after applying C420, which can thus be deleted. [59:39 C420] Delete C420 because after R423 is revised at [59:36] it is unnecessary. [60:9 C426] Replace "permitted only if no" with "shall not appear if the" because "shall not appear if" is clearer and more emphatic. [60:24 4.4.4.2p5#3] Before "assumes" insert "is required to be a dummy argument, and" [66:0+9 NOTE 4.19 (cont.)] Replace "referenced the module" with "accessed the type name from the module by use association" because referencing the module might not be enough to access the name. [67:8-9 4.5.3.1p2] Delete at least "itself" from the first sentence because it's both redundant and repetitititive. Better yet, delete the first sentence because does not admit any syntax other than an integer declaration. Even better, delete the second sentence too because it doesn't contribute anything useful. [68:24+ C446+] Move C450 at [68:31-32] here to put the requirements on POINTER and ALLOCATABLE together. [69:5 C454] Replace "is permitted only if the component is" with "shall not appear if the component is not" because "shall not appear if" is clearer and more emphatic. [69:21 C459] After "component" insert "shall be explicit and". [69:33,35 4.5.4.2p1] Replace "clause" with "" twice because syntax terms or rules are not clauses. [70:3,4 4.5.4.3p1] Replace "clause" with "" twice because syntax terms or rules are not clauses. [75:15 C470] Replace "R449" with "R450". [80:1 4.5.7.2p2] Before "parent component" insert "nonpolymorphic,". [80:8 4.5.7.2p3] Before "shall satisfy" insert "the extended generic interface". Otherwise one might conclude that only the generic binding need satisfy the requirements in 12.4.3.5.5. [84:0+7 NOTE 4.61 (cont.)] After "because" insert "SYNOPSIS is the sixth component and". Otherwise the reader needs to find NOTE 4.30 to understand this example completely. [84:8 4.5.10p6] The final sentence is silent concerning the values of deferred length parameters. Copy "if a length ... expression" from the end of the previous sentence to the end of the final sentence. [85:3+3 NOTE 4.63] Replace "though" with "if". [87:15 C4110] Before "the declared" insert "that type shall not be abstract and" (unless another constraint already has this effect). Should this be announced as a technical change? If so, include the next edit: [xviii intro under "Data usage and computation"] Insert "A derived type constructor cannot construct a value of abstract type." 2. Accessibility of final subroutine ==================================== NOTE 4.45 says a final subroutine is always accessible. But 4.5.5p8-9 describe accessibility of type-bound procedures, not their identifiers. Either 4.5.5p8-9 need to be stated in terms of identifiers, or NOTE 4.45 needs to be normative. 2.1 State 4.5.5p8-9 in terms of identifiers ------------------------------------------- [77:3 4.5.5p8] Replace "for" with "of the identifiers of". [77:4 4.5.5p8] After "the accessibility of" insert "the identifier of". [77:6 4.5.5p9] Replace "A public" with "The identifier of a public". Replace "A private" with "The identifier of a private". [77:7+2 NOTE 4.44" After "the accessibility of" insert "the identifier of". [78:15 4.5.6.2p3] Delete the paragraph. Finalization, in and of itself, does not cause undefinition. The sentence might be construed to imply that, for example, a REAL array that is deallocated retains its definition status, because it is not finalized. 2.2 Make NOTE 4.45 normative ---------------------------- [77:3 4.5.5p8] Before "The default" insert "Final subroutines are always accessible". After "of a type" insert ", other than final subroutines," [77:4 4.5.5p8] After "type-bound procedure" insert "that is not a final subroutine". [77:23+2 NOTE 4.45] Delete "are effectively ... They". 3. Trivial technical change =========================== The prohibition against the passed-object dummy argument having the VALUE attribute arose from F03/0009. The argument therein is not convincing. Having the VALUE attribute is no different from having INTENT(IN), except that with INTENT(IN) it would be necessary to take a copy explicitly to have the same effect as the example in F03/0009, and that's not prohibited. In light of the other regularizations we've done concerning the VALUE attribute, can we eliminate this prohibition? [xix intro under "Program units and procedures" insert "The passed-object dummy argument is permitted to have the VALUE attribute." [71:12-13 C461] Delete "It shall not have the VALUE attribute." 4. Questions without edits ========================== [55:18-21 4.4.2p1] Is it necessary to say "defined as specified in"? Isn't it good enough to say "defined in" or "specified in"? [64:16 4.5.2.2p1] Is it necessary to say "defined as specified in"? Isn't it good enough to say "defined in" or "specified in"? [77:17-18 C487] What is the meaning of C487 if one of the final subroutines has assumed rank?