07-245 To: J3 From: Van Snyder Subject: Comments on Clause 12 Date: 2007 July 05 1. Edits w.r.t. 07-007r2 [311:7-8]----------------------------------------------------------------- There are names in FUNCTION statements that are not dummy arguments, but not vice-versa. Editor: Insert ", unless the name appears in the or of the statement,". [319 Note 12.8]----------------------------------------------------------- The second paragraph isn't quite accurate any more, and it's not worth clarifying and corecting it. Editor: Delete it. [317:19-20]--------------------------------------------------------------- This subclause says that the generic name of an interface block can be the same as any accessible generic name. 12.4.3.4.5 says a generic identifier of an interface block can be the same as the generic name of another interface block. Editor: To make things consistent, replace ", or ... name" by ". A generic identifier may be the same as any accessible generic identifier". [320:11]------------------------------------------------------------------ Editor: Insert "(12.5.2.4)" [328:17] after "bits compatible" since it is an eight-pages distant forward reference. [320:20,321:6,12,15]------------------------------------------------------ Editor: Replace "with" by "from" four times. [322:33+]----------------------------------------------------------------- "C1223a (R1214) If and are functions, they shall have the same result type, and corresponding kind type parameters of their results shall have the same values. [323:11-15]--------------------------------------------------------------- Editor: Move to [322:33+] and convert to constraints. Paragraph 7 should be a constraint on R1217. Paragraph 8 should be a constraint on R1214. [323:19]------------------------------------------------------------------ Delete ", they shall have the same type;" (see above edit for [322:33+]). [324-341, Subclause 12.5]------------------------------------------------- I'm always confused by having the material on procedure interfaces and their definitions being separated from procedure definitions by the subclause on procedure references. Editor: Move Subclause 12.5 to the end of Clause 12 at [352:12+]. [328:4]------------------------------------------------------------------- Editor: Insert "(12.5.2.1.3)" [334:26] after "present" since it is a six-pages distant forward reference. [329:4]------------------------------------------------------------------- Editor: Insert ", or is of type character with the C character kind (5.2), the ASCII character kind, or the ISO_10646 character kind" after "character". [329 Note 12.24]---------------------------------------------------------- Note 12.24 appears not to be germane to anything nearby. Editor: Move Note 12.24 to [328:7+]. [330:8]------------------------------------------------------------------- Editor: Insert ", the ASCII character kind, or the ISO_10646 character kind" after "(15.2)". [331:1-2]----------------------------------------------------------------- "have a pointer array" is a possible reading, but doesn't make sense. Editor: Insert "a pointer array, or" after "be" and delete "or a pointer array". [333:18]------------------------------------------------------------------ Editor: Insert "(5.3.8)" after "attribute" (cf. [339:3]). So that the cross reference makes the most sense, insert "Note 5.11a The EXTERNAL attribute can also be specivied by the EXTERNAL statement (12.4.3.5) or the procedure declaration statement (12.4.3.6)." at [107:21+]. [333:20]------------------------------------------------------------------ Editor: Delete the redundant "and the corresponding dummy argument". [334:5]------------------------------------------------------------------- Editor: Replace "12.5" (which is a large subclause including the present sentence) by "R1224" [alt-return-spec]. [334:8,12,17]------------------------------------------------------------- Editor: Insert "ASCII or" before "C" thrice. Can we also do ISO 10646 here? [334:22]------------------------------------------------------------------ Editor: Insert "array" after "assumed-size" (or delete "an" on the previous line). [334:36]------------------------------------------------------------------ Editor: Insert "present" before "pointer". [338:19]------------------------------------------------------------------ Editor: Delete "are". [338:31-34]--------------------------------------------------------------- Editor: Simplify: "(3) if the name is accessed by use or host association and the name is established to be generic in the scoping unit from which it is accessed." [339:5-8]----------------------------------------------------------------- Editor: Simplify: "(4) if the name is accessed by use or host association and the name is established to be specific in the scoping unit from which it is accessed." [341:19+]----------------------------------------------------------------- "<<12.6.1a Procedures defined in intrinsic modules>> Procedures defined in intrinsic modules are an inherent part of the processor. A standard-conforming processor shall include the procedures defined in intrinsic modules, as described in Clauses 14 and 15. However, a standard-conforming program shall not make use of procedures from intrinsic modules other than those described in Clauses 14 and 15." [343:8,345:2,346:22]------------------------------------------------------ Editor: Delete C1255 [343:8] and C1259 [345:2] because they're covered by C1265 at [346:22]. [343:22-31]--------------------------------------------------------------- Editor: Delete the antepenultimate sentence "If the function ... completed" at [343:27-29]. At the end of the paragraph, append "If the function result is a data pointer and the pointer is associated with a target when execution of the function is completed, the shape of the value that is returned is determined by the shape of the result variable." This brings discussions about pointer results together and puts them in the correct order. Then move the entire paragraph to [343:12+] to put it before references to the result variable. [346:33]------------------------------------------------------------------ Editor: Replace "specifications" by "declarations, if any,". Before "The dummy..." insert "If the result variable is not declared its characteristics are determined by the implicit typing rules in force within the subprogram." [348:6]------------------------------------------------------------------- Editor: Replace "executing" to "execution of" for consistency with [348:5] (or vice versa). [348:36-349:1]------------------------------------------------------------ Editor: Either replace "may" by "shall" or make the constraint an ordinary paragraph, because as it stands it doesn't constrain anything. [350:1-8]----------------------------------------------------------------- Editor: Add the enumerated list to the appearance of C1283 in Annex E. ========================================================================== 2. Comments and questions without answers or edits [312:30-31]--------------------------------------------------------------- Are the type and type parameters of a dummy function that has impliit interface characteristics? [315:25-26]--------------------------------------------------------------- C1209 prohibits interface A procedure :: B, B end interface A but no constraint prohibits interface A subroutine B ( ... ) ... end subroutine B subroutine B ( ... ) ... end subroutine B end interface A (but see [316:13-14], which isn't a constraint) or interface A subroutine B ( ... ) ... end subroutine B procedure :: B end interface A Does this need an interp? [332:29-31]--------------------------------------------------------------- Should the rank of the actual argument be the same as the rank of the dummy argument [347:10]------------------------------------------------------------------ Is it OK for a dummy argument of a function defined by an ENTRY statement to be the same as a result variable specified in a prior ENTRY or FUNCTION statement of the same subprogram (or vice-versa)? [348:22]------------------------------------------------------------------ What does it mean for a primary to be an intrinsic operation? [349:5]------------------------------------------------------------------- If there is no entity of the same name as a dummy argument in the scoping unit containing the statement function definition, what are the characteristics of the dummy argument? Shouldn't "the entity" be "an entity, if any," and then something like "If there is no such entity, the type an type parameters are determined by the implicit typing rules in force in the scoping unit."? [350:15]------------------------------------------------------------------ or ? [350:16]------------------------------------------------------------------ Should C1288 be replaced by adding "co-indexed object" to the list in C1283? [351:16+]----------------------------------------------------------------- Do we need some of the same constraints as for pure procedures, e.g. C1283, to prevent undesirable things in impure elemental procedures?