07-187 To: J3 From: Van Snyder Subject: Comments on Clause 4 Date: 2007 April 23 1 Edits Edits refer to07-007r1. Page and line numbers are displayed in the margin. Absent other instructions, a page and line number or line number range implies all of the indicated text is to be replaced by associated text, while a page and line number followed by + (-) indicates that associated text is to be inserted after (before) the indicated line. Remarks are noted in the margin, or appear between [ and ] in the text. [45:17-18] ------------------------------------------------------------- [Editor: Combine the paragraphs and simplify: Replace "is" by a comma, delete the period after "4.4", delete "The syntax for denoting a value", and delete "the particular value" giving:] The syntax for literal constants of each intrinsic type, specified in 4.4, indicates the type, type parameters, and value. [45:19] ---------------------------------------------------------------- [Editor: Replaced "given a name" by "named".] [45:20] ---------------------------------------------------------------- [Editor: Delete "be used to".] [45:21-22] ------------------------------------------------------------- [Editor: Delete "Such . . . arrays." The requirement belongs at [79:19].] [45:26] ---------------------------------------------------------------- [Sounds like the function has the OPERATOR interface. Editor: Replace "with" by "using".] [45:29] ---------------------------------------------------------------- [Editor: Insert ", 7.1.6, 12.4.3.4.1" after "4.5.11".] [45:31-46:1]------------------------------------------------------------ [Editor: Move [46:1] to replace "A type might be parameterized."] [46:11] ---------------------------------------------------------------- [Editor: Replace "with" by "by".] [46:2+3] -------------------------------------------------------------- [Editor: Replace "will be" by "are".] [47:33] ---------------------------------------------------------------- [Editor: Delete "The".] [48:4] ----------------------------------------------------------------- [Editor: Replace "have been" by "be".] [48:8] ----------------------------------------------------------------- [Editor: Replace "was" by "were".] [49:3] ----------------------------------------------------------------- [Editor: Before "is" insert "that is not an unlimited polymorphic object".] [49:6+1-3]------------------------------------------------------------- [Editor: Delete Note 4.6; this seems like a weird place to quote C611, since there's nothing else here about components.] [50:11] ---------------------------------------------------------------- [Editor: Delete C410, in light of C411. If we must have it, we need an identical one at C412a.] [53:1-10] -------------------------------------------------------------- [Simpler to refer to 7.1.9.2. Delete [53:1-6]. Replace the second sentence at [53:8-10] by the following:] Otherwise, the kind type parameter value of the complex literal constant is the same as the kind type parameter of the result of a numeric operation in which x1 and x2 are the real and imaginary parts (7.1.9.2). [54:17-22] ------------------------------------------------------------- [Editor: Add the list to Annex E.] [61:3-5] --------------------------------------------------------------- [Join the constraints: Replace "type. (R430) If SEQUENCE appears" by "type, and".] [61:Note 4.23] --------------------------------------------------------- [Editor: In the third line replace ". Nor" by ", nor" (starting a sentence with a conjunction is bad style). In the sixth line replace "will always be" by "is" (the situation might be different in the year 2350).] [63:14] ---------------------------------------------------------------- [Editor: Insert "of type" before "default".] [64:5] ----------------------------------------------------------------- [Editor: Insert a right parenthesis after "7".] [65:12-14] ------------------------------------------------------------- [The constraint doesn't constrain anything, since it explicitly allows everything the syntax allows. Editor: Delete C443. If we must keep the essence, make it a note.] [65:24] ---------------------------------------------------------------- [Editor: Insert \ before "si".] [65:25] ---------------------------------------------------------------- [Editor: Delete second "be".] [65:28] ---------------------------------------------------------------- [Editor: Replace "the POINTER attribute" by "POINTER attributes".] [66:1-2] --------------------------------------------------------------- [Editor: Delete second and third "be".] [66:19-20] ------------------------------------------------------------- [Editor: Insert "if DIMENSION() appears in" before "its" and delete "contains . . . ".] [67:Note 4.34] --------------------------------------------------------- [We don't have "pointers to". Editor: Replace "pointer . . . holding" by "character array pointer".] [68:15-17] ------------------------------------------------------------- [Overlooks unlimited polymorphic and CONTIGUOUS. Should be referring to pointer assignment to avoid such problems. Editor: Replace "the pointer . . . rank" by "the target would be permitted as a target of the pointer in a pointer assignment (7.2.2)".] [70:3] ----------------------------------------------------------------- [Sounds like component keywords are not used in structure constructors. Editor: Replace "where" by "if ".] [73:11] ---------------------------------------------------------------- [Editor: Insert ", and shall not appear unless the binding is within the definition of an abstract type".] [73:18-19] ------------------------------------------------------------- [Editor: Delete "A deferred . . . type."] [74:13-14] ------------------------------------------------------------- [Can be simplified. Editor: Replace "dummy argument . . . variable" by "nonoptional, nonpointer, nonallocatable, nonpolymorphic dummy argument".] [79:19] ---------------------------------------------------------------- [Editor: Insert "scalar" before "values". See the edit for [45:21-22].] [80:4] ----------------------------------------------------------------- [Editor: Replace "nonprocedure" by "data" (which is the term used in R441).] [81:6] ----------------------------------------------------------------- [Editor: Delete "an allocatable entity of the same rank," since that's covered by the rest of the paragaph.] [81:16] ---------------------------------------------------------------- [Editor: Insert "(7.1.6)" after "operation".] [84:14-16] ------------------------------------------------------------- Editor: Replace "Each" by "A scalar ob ject of the type and type parameters of each", insert "scalar" before "variable", replace "this" by "the", insert "specified by " after "parameters", and insert a new paragraph "The dynamic type of every expression shall be the same." 2 Questions without answers [45:12] ---------------------------------------------------------------- Is the set of valid values for ob jects of type bits really specified by the standard? [49:18-19] ------------------------------------------------------------- Why did we choose 18, which seems entirely arbitrary? It would be better to tie the requirement to DOUBLE PRECISION by way of NUMERIC STORAGE UNIT. [55:7-10] -------------------------------------------------------------- Am I imagining things or does this contradict C420? [55:34-56:1]------------------------------------------------------------ Why list the operation here? [57:21-25] ------------------------------------------------------------- Why list the operations here? [75:35-36] ------------------------------------------------------------- Doesn't the "nonpointer, nonallocatable" part apply to the dummy argument, not the actual argument? Should this be ". . . an actual argument that is associated with a nonpointer, nonallocatable dummy argument with INTENT(OUT). . . ?" See [98:15-17]. [84:14-16] ------------------------------------------------------------- Did we plan to allow construction of polymorphic arrays? If so insert a new paragraph "The dynamic type of every expression shall be the same." Otherwise, insert "nonpolymorphic" before "variable" in the edit for [84:14-16] in the previous section, and don't insert the new paragraph. 3 Spec change from 2003 [68:9] ----------------------------------------------------------------- The "if and only if " seems too strong: If a procedure that has a passed-ob ject dummy argument is bound to a type that is neither SEQUENCE nor BIND it has to suffer the performance penalty of a polymorphic argument. Couldn't we put the requirement on inheritance, or maybe even overriding? [72:16] ---------------------------------------------------------------- What's wrong with internal procedures?