ISO/IEC JTC1/SC22/WG5 N1135 To: WG5 From: Miles Ellis Subject:Sorted comments received with ballot responses from USA (NO), France (YES), Germany (YES), Japan (YES) and UK (YES) Date: 25 October 1995 In this document all the comments received have been sorted into the order in which they appear in the CD. Each entry consists of two or more lines, the first of which contains three fields _ page/line reference, country making the comment, and category of comment. xiii:2 Germany Editorial Improvements Intro delete "1996" (multi-part => multi-year) xiii:24 US Editorial Improvements replace "blanks in edit descriptors" with "whether blanks are permitted within edit descriptors in free source form". xiii:29 UK Editorial Comments Change to "(3) Pointer initialization and structure default initialization". Rationale: Default initialization is available only for structures (in the context of this line).. xiv:7 US Editorial Improvements delete ", those with scalar dummy arguments,". xiv:9 US Editorial Improvements replace "they make it feasible to allow user-defined (pure) functions" with "it is reasonable to allow them". xiv:13 UK Editorial Comments Change "is" to "was" Rationale: Fortran 90 is in the past (see, for example, 3:31). xiv:16 Germany Editorial Improvements Intro corrrects => solves xiv:16-18 US Editorial Improvements hyphenate derived-type in the following places [xiv:16] (Intro) [xiv:18] (Intro) xiv:20 US Editorial Improvements delete "Finally, " and move xiv:20-22 to xiii:21+. xiv:26-32 US Editorial Improvements capitalize only the first word instead of each word in the following places [xiv:26-32] (Intro) Titles like "Data concepts" xiv:38 US Editorial Improvements replace "forms" with "form". xv:8-9 US Editorial Improvements (Intro) lower case all the type names here xv:28-29 UK Editorial Comments Delete "the event...scoping unit" and insert "situations that caused them in Fortran 90 to have undefined allocation status" Rationale: An allocatable array may lose it allocation status on return from a scoping unit other than the one in which it was allocated. xv:30 US Quality Improvement add text following [xv:30] "(Note: this does not apply to pointers, only arrays declared with the ALLOCATABLE attribute.)" xvi:23 US Editorial Improvements Intro, Organization, Program units, para 3, line 1 - change 'OPERATOR option on interface blocks' to 'OPERATOR option in interface blocks" xvi:25 US Editorial Improvements Intro, Organization, Program units, para 3, line 1 - change 'ASSIGNMENT option on interface blocks' to 'ASSIGNMENT option in interface blocks" xvi:28 Germany Editorial Improvements Intro statements functions: small typeface xvii:3 US Quality Improvement change "of all terms" to "of principal terms" 1:15 US Editorial Improvements remove ":" 1:16,17 US Editorial Improvements append "," to line 1:18 US Editorial Improvements append ", and" to line 1:19 US Editorial Improvements append "." to line. 1:21 US Editorial Improvements remove ":"; 1:22,24,26 US Editorial Improvements append "," to line 1:,29,31,33 US Editorial Improvements append "," to line 1:34 US Editorial Improvements append ", and" to line 1:35 US Editorial Improvements append "." to line. 3:15 US Quality Improvement change to read "Real, double precision, and pointer DO control variables," 3:25 US Quality Improvement Add "MAXVAL, MINVAL, PRODUCT, SUM " to list. [Editor is given discretion to reorder list.] 3:26 Germany Editorial Improvements 1.5.1 supplied a generic interface to => extended the generic interface of 3:35+ US Quality Improvement add "(4) This standard requires that an object with the TARGET attribute become storage associated only with another object that has the TARGET attribute. This restriction did not apply in Fortran 90." 4:30 US Editorial Improvements add "Except where stated otherwise, such requirements and prohibitions apply to programs rather than processors.". 5:1 Japan Minor Editorial Comment Subclause 1.6.2 Proposal : Line 1 Delete the ":." 5:1 US Editorial Improvements delete spurious colon 6:34 UK Editorial Comments Change "Programmers should" to "It is recommended that programmers" i.e. revert to form of words in N1094 (and Fortran 90). Rationale: Softer, more objective form is preferable. Removing "it is recommended" from items (4), (5) and (6) is acceptable since these are directed to Fortran committees and vendors rather than to the general public. 7:13 US Editorial Improvements change "ISO 646:1983" to "ISO/IEC 646:1991" 7:17 US Editorial Improvements delete the reference to CCIR Recommendation 460-2 7:17-18 US Editorial Improvements delete the normative reference to IEC 559 and IEEE 754 9:5 US Quality Improvement section 2.1, change "is described in 1.6.2" to ", assumed rules, and syntax conventions are described in 1.6.2 through 1.6.4". 13:43 US Quality Improvement delete sentence "USE statements, if any.... " 14:1 US Editorial Improvements change "though" to "although" 14:4-17 US Editorial Improvements capitalize only the first word instead of each word in the following places [14:4-17] (Table 2.2) Throughout the table, including its note 14:16-17 US Quality Improvement add a second note to the table "Note: derived type definitions are also scoping units, but they do not contain any of the above statements, and so have not been listed in the table." 14:16-17 US Quality Improvement in the footer of the Table 2.2, move "The scoping unit of a module does not include any module subprograms that the module contains." into a note. 14:38 US Editorial Improvements item (3) - split into two numbered items as follows: (With item (4) in obsolescent font) (3) END=, ERR=, and EOR= specifiers may result in a branch. (4) Alternate returns may result in a branch. 15:8 US Editorial Improvements [15:8] (2.4.1.1) lower case all the type names here 15:20 US Quality Improvement Section 2.4.1.2, 3rd sentence change "(4.4.5)" to "(7.5.1.5)" 17:19 US Editorial Improvements embolden "elemental". 17:27 US Quality Improvement change "or following pointer association with a disassociated pointer" to ", following pointer association with a disassociated pointer, or initially through pointer initialization." 19:5 Germany Editorial Improvements 2.5.8 delete "also" 22:4-14 US Editorial Improvements capitalize only the first word instead of each word in the following places [22:4-14] (Table 3.1) Table heads and body 25:4 US Quality Improvement Section 3.3, 2nd paragraph, change "(10.7)" to "(10.2.1)" 26:13 Germany Additional Comments column 6 character position 6 26:34 US Editorial Improvements add 'that initiates a comment' after '"!"' 29:35 US Editorial Improvements change "constants" to "literal constants" 30:24 US Quality Improvement delete 30:26 US Quality Improvement change sentence to read "An array has type and type parameters..." 31:1-2 US Editorial Improvements all lower case on these 2 lines 31:15-17 US Editorial Improvements change the sentence "Among the kind values that provide a given range, one providing the smallest range is returned by the intrinsic function SELECTED_INT_KIND (13.14.94)." to "The intrinsic function SELECTED_INT_KIND (13.14.94) returns a kind value based on a specified decimal range requirement." and move this sentence to after the following one, which mentions the RANGE intrinsic. 32:39-43 US Editorial Improvements change the sentence "Among the kind values that provide a given precision and a given exponent range, one providing the smallest decimal precision is returned by the intrinsic function SELECTED_REAL_KIND (13.14.95)." to "The intrinsic function SELECTED_REAL_KIND (13.14.95) returns a kind value based on specified precision and decimal range requirements." and move this sentence to after the following one, which mentions the PRECISION and RANGE intrinsics. 33:4 US Editorial Improvements replace "input arguments to intrinsics" with "actual arguments to intrinsic procedures". 33:9-11 US Editorial Improvements (Note 4.7) use big font dots in .TRUE. and .FALSE. 33:12 France Editorial Comments IF seems better than F. 33:12 US Editorial Improvements replace "F" with "IF". 33:20 US Editorial Improvements change "IEC 559 (IEEE 754)" to "ANSI/IEEE 754-1985, IEEE standard for binary floating point arithmetic" 33:22-23 US Editorial Improvements change "IEC 559" to "IEEE 754" (twice) Change margins to fit A4 paper width, with manual adjustments as necessary. Justify note headings left instead of right, and 'NOTE' in all caps in the heading to distinguish it from normative text. 34:27 US Quality Improvement section 4.3.1.3, after "value." add: "The kind type parameter of an approximation method is returned by the intrinsic inquiry function KIND (13.14.52)." 36:30,31 US Editorial Improvements add section 13 cross-references as listed below after references to intrinsic functions [36:30] (4.3.2.1.1) CHAR (13.14.19) [36:31] (4.3.2.1.1) ICHAR (13.14.45) 37:7,11 US Editorial Improvements change "ISO 646:1983" to "ISO/IEC 646:1991" 37:12-14 US Editorial Improvements add section 13 cross-references as listed below after references to intrinsic functions [37:12] (Note 4.15) ACHAR (13.14.2) and IACHAR (13.14.40) [37:14] (4.3.2.1.1) ...LLT (13.14.56-13.14.59) 37:39+ UK Substantive Comment See Additional UK Substantive Comment (after detailed comments) 38:8 US Editorial Improvements hyphenate derived-type in the following place [38:8] (4.4) 38:9-10 UK Editorial Comments Replace sentence by "Default initialization applies to dummy arguments with INTENT(OUT)." Rationale: Default initialization does not apply to a number of entities, so it is confusing to specify only one. However the information may be helpful, so the sentence is rephrased positively. 38:11 US Quality Improvement (Brian's 41-42), Section 4.4, penultimate paragraph add at the end of the paragraph: "If a component has default initialization, it is not required that default initialization be specified for other components of the derived type." 38:35-36 US Editorial Improvements hyphenate derived-type in the following place [38:35-36] (4.4.1) Only the "derived type" at the line split. 39:25 UK Substantive Comment Section 4.4.1 39:25. Delete "of intrinsic type". Rationale: The present sentence is not true for a pointer component of derived type. 39:38 US Quality Improvement Section 4.4.1, 2nd paragraph after constraints, 1st sentence, change "for a component" to "for a non-pointer component" 39:42 US Quality Improvement 2nd paragraph after constraints, 4th sentence, change "If an 39:45-47 US Reason for NO vote (Problem 7) This definition of "Explicit initialization" does not include pointer initialization (as that does not give a pointer a value). Proposed Solution: Change [39:46] from "with a value but is" to read "with a value, or a pointer with a disassociated status; it is". 40:13 Japan Minor Editorial Comment Subclause 4.4.1 Proposal : Line 13 Delete the """. 40:13 US Editorial Improvements delete spurious '"' 40:13 UK Editorial Comments Delete spurious quotation mark. 40:16 UK Editorial Comments Delete 'value'. Rationale: The term used in the standard is 'structure constructor', see 44:33. 40:27 Germany Editorial Improvements N4.20 use :: form of spec 40:28 Germany Editorial Improvements N4.20 use :: form of spec 41:8 Germany Editorial Improvements N4.22 "MODULE" => "MODULE DEFINITIONS" 42:1 US Quality Improvement Note that this text is being moved into a NOTE just below. section 4.1.1, [42:1], change "of the type of which it is a component" to "of that derived type" 42:1-3 US Quality Improvement Section 4.4.1, text ahead of 10th note (note 4.26) Make the text part of the 10th note. 42:12 US Quality Improvement Section 4.4.1, text ahead of 11th note (note 4.27) Delete this sentence. 42:16 Germany Editorial Improvements N4.27 use :: form of spec 42:17 Germany Editorial Improvements N4.27 "(5)" => "(LEN=5) ::" 42:28 Germany Editorial Improvements N4.28 use :: form of spec 42:34 US Quality Improvement Section 4.4.1, text ahead of 13th note (note 4.29) Make the text part of the 13th note. 42:38 Germany Editorial Improvements N4.29 "(20)" => "(LEN=20)" 42.42 Germany Editorial Improvements N4.29 use :: form of spec 43:1 US Quality Improvement Section 4.4.1, text ahead of last note (note 4.30) Make the text part of the last note. 43:5 US Editorial Improvements (Note 4.30) add period after "created" 43.20 Germany Editorial Improvements N4.31 use :: form of spec 44.6 Germany Editorial Improvements N4.32 use :: form of spec 44.7 Germany Editorial Improvements N4.32 use :: form of spec, use LEN= 44.16 Germany Editorial Improvements N4.32 use :: form of spec 44.17 Germany Editorial Improvements N4.32 use :: form of spec, use LEN= 44.18 Germany Editorial Improvements N4.32 "TYPE" => "TYPE EMPLOYEE" 44.19 Germany Editorial Improvements N4.32 use :: form of spec 44:28+ US Quality Improvement add as a new note: "The requirement that the two types have the same name applies to the of the respective , not to a local name introduced via renaming in a USE statement." 45:29 US Quality Improvement (array constructors), insert to read "a nonpointer named .." 46.6 Germany Editorial Improvements N4.35 use :: form of spec 46:25 US Quality Improvement Section 4.5, penultimate note (4.38) Change "(20, `SMITH')" to "(40, `SMITH')" 47.10 Germany Editorial Improvements N5.1 use :: form of spec 48:19 US Reason for NO vote (Problem 2) This constraint implies that subroutines cannot be declared with EXTERNAL nor INTRINSIC attributes (constraint applies to EXTERNAL and INTRINSIC statements - as indicated in section 5.2 (57:14-17)). Proposed Solution: 48:19, section 5.1, after "entity" insert " in an " 48:42-45 US Quality Improvement delete this note 49:22 US Quality Improvement add to the end of this paragraph: "Use of =>NULL() in a scoping unit is a reference to the intrinsic function NULL." 49:36 US Quality Improvement section 5.1 [49:36], move this line to be after line 32 in the same note. 50:41 US Reason for NO vote (Problem 8) 3rd constraint: Can a dummy function with "*" length be described in an explicit interface. 50:41 indicates it can be, but 51:15 indicates it can not be. Proposed Solution: Change [50:41] last word "explicit" to "implicit". 51:15 US Reason for NO vote (Problem 3) The last sentence of (1) is inconsistent with the rest, as the rest deals with dummy arguments that may or may not be functions. If left as is some might think that the first part only deals with functions also. Proposed Solution: 51:15, section 5.1.1.5, last sentence of item (1) Replace the sentence with: "<>" 51:21 US Reason for NO vote (Problem 4) When an external function with character (*) type, is invoked, the scope of the invocation must not include a interface body for the function, as implied by other rules. (From defect item 70, which has status X3J3 consideration in progress). Proposed Solution: 51:21, section 5.1.1.5, end of item (3), add sentence "The interface for such a function cannot be specified in an interface body." [Note - it has subsequently been suggested that the proposed solutions to problems 3 and 4 be replaced by a single note following the list: "A function result for a dummy or external procedure cannot be specified with a character length parameter value of * in an interface body. The specifications in an interface body are required to be the same as those specified in the procedure definition, but to invoke a procedure whose definition specifies a character*(*) result, the calling routine is required to specify a result length other than *."] 51.28 Germany Editorial Improvements N5.7 use :: form of spec 51.29 Germany Editorial Improvements N5.7 use :: form of spec 52:31-32 US Editorial Improvements bold face "PRIVATE attribute" and "PUBLIC attribute" 53:16 US Quality Improvement change to read "shall neither be defined nor become undefined."; change [205:14] to read the same. 53:27 US Quality Improvement section 5.1.2.3, [53:27], change "12.5.2.1, 12.5.2.2, 12.5.2.3" to "12.4.1.1, 12.4.1.2, 12.4.1.3" 53:29 US Editorial Improvements (Note 5.10) change "of an" to "of" 53:39 US Quality Improvement Section 5.1.2.4, 1st paragraph, penultimate sentence Before "declaration" insert "type" 53:40 US Reason for NO vote (Problem 5) There is no such syntax term as . Proposed Solution: 53:40, section 5.1.2.4, 1st paragraph, last sentence, Change "" to "" 53:41 US Quality Improvement (Brian's 53:40), Section 5.1.2.4, end of 1st paragraph. Add "The DIMENSION attribute alternatively may be specified in the | specification statements DIMENSION, ALLOCATABLE, POINTER, TARGET or COMMON." | 54.5 Germany Editorial Improvements N5.11 use :: form of spec 54:40 US Editorial Improvements change "an array pointer or an allocatable array" to "an allocatable array or an array pointer" 55:11 US Editorial Improvements insert "<-list>" after "" 55:27-28 US Editorial Improvements add section 13 cross-references as listed below after references to intrinsic functions [55:27] (5.1.2.4.3) "LBOUND function" --> "intrinsic function LBOUND (13.14.53)" [55:28] (5.1.2.4.3) "UBOUND function" --> "intrinsic function UBOUND (13.14.113)" 55:40-56:4 US Editorial Improvements fix the size of the italic font characters to be the size for obsolete 56:11-17 US Reason for NO vote (Problem 9) 5.1.2.5 SAVE attribute: These two paragraphs don't seem to take into account situations where a pointer association status can become undefined as described in 14.6.2.1.3. Proposed Solution: Change [56:16] from "when" to "after". Add a new paragraph after [56:17] to read: "In both cases, the association status of a pointer with the SAVE attribute becomes undefined if the target becomes undefined (14.6.2.1.3 (3))." 58:10 US Editorial Improvements unbolden "PUBLIC" and "PRIVATE" 59.4 Germany Editorial Improvements N5.17 use :: form of spec 59.12 Germany Editorial Improvements N5.18 use :: form of spec 59.22 Germany Editorial Improvements N5.19 use :: form of spec 61:10+ US Reason for NO vote (Problem 10) Section 5.2.10, after 2nd constraint: Constraint from F90 that disallowed: POINTER P(:) DATA P(3) / 4.5 / is not present in F95. Proposed Solution: Add the following constraint [61:10+]: "Constraint: A or a that appears as a shall not be a subobject of a pointer." 61:11 US Quality Improvement (data statement implied do), insert to read "a nonpointer named .." 61:43 US Quality Improvement add to first sentence to read "...and scalar variables, referred to as "sequence of variables" in subsequent text." 62:1-3 US Editorial Improvements change "DATA statement repeat factor" to "" twice 62:5 US Quality Improvement change "sequence of scalar variables" to "sequence of variables" 62:8 US Quality Improvement change "sequences of scalar variables" to "sequence of variables" 62:9 US Quality Improvement change 'initial value' to 'initial value or NULL()' 62:11-12 US Quality Improvement replace the sentence starting on line 11 with: "If an object is of type character, the corresponding shall be of the same type and kind. If an object is of type logical, the corresponding shall be of the same type." 62:17 US Quality Improvement (Brian's 32:10-33), section 5.2.10, add the following before [62:17-], as its own paragraph: "A that is a is treated as if the constant were an with the maximum supported by the processor." 62:17 US Quality Improvement after "A " add ", other than NULL(),". 62:24 Germany Editorial Improvements N5.23 use :: form of spec 62:28 Germany Editorial Improvements N5.23 use :: form of spec 63:26 US Quality Improvement change "for the name of that function subprogram" to "for the name of the result variable of that function subprogram" 63:26+ US Editorial Improvements Add the following as a note: The following is an example of a mapping to a derived type that is inaccessible in the local scope: PROGRAM MAIN TYPE BLOB INTEGER I END TYPE BLOB IMPLICIT TYPE(BLOB) (A) TYPE(BLOB) :: B CALL STEVE CONTAINS SUBROUTINE STEVE INTEGER BLOB ... AA=B ... END SUBROUTINE STEVE END PROGRAM MAIN In the subroutine STEVE, it is not possible to explicitly declare a variable to be of type BLOB because BLOB has been given a different meaning, but implicit mapping for the letter A still maps to type BLOB, so AA is of type BLOB. 64:8 Germany Editorial Improvements N5.24 use :: form of spec 64:13 Germany Editorial Improvements N5.24 use :: form of spec 65:6 Germany Editorial Improvements N5.25 use :: form of spec 65:7 Germany Editorial Improvements N5.25 use :: form of spec 66:32 US Quality Improvement add a constraint [66:32+] "Constraint: A substring-range shall not be empty." 66:46+ US Quality Improvement add at the end of the existing note as a new paragraph : "Further rules on the interaction of EQUIVALENCE statements and default initialization are given in 14.6.3.3." 68:3 Germany Editorial Improvements N5.30 use :: form of spec 68:4 Germany Editorial Improvements N5.30 use :: form of spec 68:21-22 US Reason for NO vote (Problem 11) 68:26-27 70:19-20 COMMON: There is a contradiction amongst these sentences as to whether default initialization of an item in COMMON is permitted (68:26-27,70:19-20) or not permitted (68:21-22). Decision not to permit default initialization of items in COMMON, means an edit is also needed to restrict items equivalenced with common from having default initialization. Proposed Solution: Delete the constraint in [68:26-27]. Delete item (4) in [70:19-20]. Add at the end of the paragraph in [70:25]: "Equivalence association shall not cause a derived-type object with default initialization to be associated with an object in a common block." 69:18 US Editorial Improvements delete ", in common blocks," 70:17-18 US Editorial Improvements move the "(11.4)" to after "unit" 70:29 Germany Editorial Improvements N5.33 use :: form of spec 71:33 US Editorial Improvements change "12.5.2.1 and 12.4.1.5" to "12.4.1.1, 12.4.1.5, 12.4.1.6, and 12.5.2.1" 71:34 US Quality Improvement after "parameters" add " (except for s)" 72:3 Germany Editorial Improvements N6.1 use :: form of spec 72:4 Germany Editorial Improvements N6.1 use :: form of spec 72:13 US Editorial Improvements delete spurious blank at beginning of line 73:8 US Editorial Improvements hyphenate derived-type in the following place [73:8] (6.1.2) 73:30+ US Quality Improvement (Brian's 73:37+) add this note after the existing note on page 73: "The syntax rules are structured such that a that ends in a component name without a following subscript list is a structure component, even when other component names in the were followed by a subscript list. A that ends in a component name with a following subscript list is either an array element or an array section. A where one has non- zero rank, and that ends with a substring range, is an array section, but if all s are of rank zero, then that with the trailing substring range is a substring." 73:40 US Editorial Improvements replace "contsruct" with "construct". 74:25 Germany Editorial Improvements N6.5 use :: form of spec 74:26 Germany Editorial Improvements N6.5 use :: form of spec 75:9,10 Japan Minor Editorial Comment Subclause 6.2.2.2 Proposal : Lines 9 and 10 Change "s2" to "j2" and "s3" to "j3" 75: 9 US Editorial Improvements 2nd line of Rank 3 entry, last col - change 's2)xd2' to 'j2)xd1' 75:10 US Editorial Improvements 3rd line of Rank 3 entry, last col - change 's3)' to 'j3)' 75:26 US Editorial Improvements delete "(6.2.2)". 77:13 Japan Minor Editorial Comment Subclause 6.2.2.3.2 Proposal : Line 13 Change "Z(3,1)" to "Z(2,1)" 77:13 US Editorial Improvements (Note 6.10) change "Z (3, 1)" to "Z (2, 1)" in the 3rd column of the last row of this array 77:15 Japan Minor Editorial Comment Subclause 6.2.2.3.2 Proposal : Line 15 Change "may" to "shall" 77:39-40 US Quality Improvement replace with "A bound in an shall not be an expression containing any reference to any or the , or a subobject of either, in the same ALLOCATE statement." 78:4 US Quality Improvement after "appears" add ", nor shall it depend on any or subobject of an allocated in the statement." 79:8+ Germany Editorial Improvements N6.14 * indent 9-15, 18-31, and 34-40 * add " INITIALIZED_TYPE" in 11, " MOD1" in 16, and " MAIN" in 42 * 12-15 is bad programming style. Specify all attributes in one place: :12 INTEGER, ALLOCATABLE, SAVE :: saved1(:) :13 INTEGER, ALLOCATABLE :: unsaved1(:) :14 TYPE(INITIALIZED_TYPE), ALLOCATABLE, SAVE :: saved2(:) :15 TYPE(INITIALIZED_TYPE), ALLOCATABLE :: unsaved2(:) 80:9+ US Quality Improvement add "A shall not contain any references to another or subobject of a in the NULLIFY statement." 80:14+ US Quality Improvement add "An shall not reference any other or the , or a subobject of either, in the same DEALLOCATE statement." 80:15 US Quality Improvement after "statement" add ", nor shall it depend on any or subobject of an deallocated in the statement." 81:1 US Editorial Improvements replace "processor defined" with "processor dependent". 81:12 Germany Editorial Improvements N6.18 "SUBROUTINE" => "SUBROUTINE PROCESS" 84-87 US Editorial Improvements capitalize only the first word instead of each word in the following places 84-87 US Editorial Improvements (Notes 7.4-7.10) All the "Syntactic class" headings 87:19 Japan Minor Editorial Comment Subclause 7.1.2 Rationale : Table 7.1 contains unary operators Proposal : Line 19 Delete the "binary." 88:16 US Editorial Improvements change "12.3.1" to "12.3.2.1" 88:35,37,41 US Editorial Improvements insert "of" after "shall be" 89:24 US Editorial Improvements add section 13 cross-references as listed below after references to intrinsic functions [89:24] (7.1.4.1) NULL (13.14.79) 90:5 Germany Editorial Improvements N7.12 use :: form of spec 90:9 Germany Editorial Improvements N7.12 use :: form of spec 92:29 US Editorial Improvements line before R730 -change 'expression ' to expression.' 92:31-37 US Editorial Improvements delete the "A" or "An" at the start of each constraint 93:16-94:39 US Editorial Improvements reorder section 7.1.6.2 as follows [94:19-22] [93:29-94:18] [93:16-28] [93:23-39] 93:17 US Quality Improvement add "...is not an statement function, does not have a dummy procedure argument," 93:20 US Editorial Improvements (Note 7.15) delete "(7.1.6.2)" 93:40-44 UK Substantive Comment 94:1 Section 7.1.6.2 93:40-44 and 94:1. Delete items (7), (8) and (9) and renumber. 94:8 US Quality Improvement add ":" at the end of "and where each argument of the function is"; same to the 2 same lines in 7.1.6.1 94:14 UK Substantive Comment Section 7.1.6.2 94:14. After "or" add "a reference to any other intrinsic function where each argument is a restricted expression," Rationale: Specification expressions allow references to certainuser-defined functions, but not to intrinisic functions. This is an unnecessary and counter- intuitive irregularity. These changes allow intrinsic functions in this context. 94:14 US Editorial Improvements delete entire line (one word) 94:19-20 US Editorial Improvements change "A <> (R510, R515, R516) is a restricted expression that is scalar and of type integer." to "A <> is an expression with limitations that make it suitable for use in specifications such as character lengths (R510) and array bounds (R515, R516)." 94:20+ US Quality Improvement (Brian's 68:20) Paper 95-186 answers this for Fortran 90, /edit should apply the same edits (in 007r1, it goes after [94:20+]) EDITS: see 95-186, adapt to 007r1 94:28-33 US Reason for NO vote (Problem 12) 7.1.6.2 Specification expression, last paragraph: The last sentence of this paragraph is too specific to inquiry functions. It should include specification functions also, to indicate that the following is valid: INTERFACE PURE FUNCTION F(I,J) INTEGER F, I(10), J INTENT(IN) I, J END FUNCTION END INTERFACE INTEGER IA(10), A(F(IA,IA(3))) Proposed Solution: At the end of 94:31 change the clause "the array bounds shall be specified in a prior declaration" to "the array shall be completely specified in prior declarations". On 94:33 add "reference" after "inquiry function". And then move the entire sentence to make it the second sentence of the paragraph. 95:8-13 US Reason for NO vote (Problem 13) Section 7.1.7, 5th paragraph: A function reference is not allowed to affect the evaluation of any other entity within the statement, without similar restriction on subroutines it is possible to have a defined assignment statement within a FORALL where order of execution affects result. Consider the following example, MODULE MOD TYPE DT INTEGER C END TYPE DT INTEGER :: ARR(3) = (/1,2,3/) END MODULE MOD PROGRAM P USE MOD INTERFACE ASSIGNMENT(=) ELEMENTAL SUBROUTINE DEFASSIGN(L, R) USE MOD INTEGER, INTENT(OUT) :: L TYPE (DT), INTENT(IN) :: R END SUBROUTINE DEFASSIGN END INTERFACE FORALL (I = 1:2) ARR(I) = DT(I+1) PRINT *, ARR END PROGRAM P ELEMENTAL SUBROUTINE DEFASSIGN(L, R) USE MOD INTEGER, INTENT(OUT) :: L TYPE (DT), INTENT(IN) :: R L = ARR(R%C) + 1 END SUBROUTINE DEFASSIGN If the call to DEFASSIGN for I=1 occurs before that for I=2, the value of ARR after the FORALL is (/3,4,3/); in the opposite order, the value is (/5,4,3/). Proposed Solution: Add a new paragraph after [116:2] "In a forall-assignment-stmt, a defined assignment subroutine shall not reference any variable that becomes defined or pointer-object that becomes associated by the statement." 95:12 US Reason for NO vote (Problem 14) 7.1.7, "Evaluation of operands", 5th paragraph, last sentence: The text was meant to refer to functions with subscripts and stride of a FORALL statement but currently refers only to the functions that appear in the of a FORALL statement. Proposed Solution: Change [95:12] "WHERE statement(..), or FORALL statement(..)" to "the mask expression in a WHERE statement (7.5.3.1), or the subscripts and stride in a FORALL statement (7.5.4)" [Note - subsequent comments suggest that there is still a problem in the area covered by problem 14.] 95:37 US Editorial Improvements insert "the" before "evaluation" 98:24 Germany Editorial Improvements N7.27 use :: form of spec 100-104 US Editorial Improvements capitalize only the first word instead of each word in the following places [100:3] (Table 7.3) In table head [100:36] (Table 7.4) In table head [101:23-35] (Table 7.5) In table head and second column body [102:27-33] (Table 7.6) In table head and second column body [103:31] (Table 7.8) In table head [104:3] (Table 7.8 continuation) In table head 104:20 US Editorial Improvements Replace "For example, in" with "In". Combine notes 7.37 and 7.38 into a single note. Combine notes 7.39 and 7.40 into a single note. 106:22 US Quality Improvement change "an assumed" to "a whole assumed". 106:25 US Editorial Improvements note 7.41, line 2 - use bold font for '* Y' 106:26 Germany Additional Comments * Y bold style 108:28 Germany Editorial Improvements N7.45 use :: form of spec 109:20-21 US Quality Improvement section 7.5.1.6: change the note to normative text, and in the text of the note, change "may not both be numeric, both be logical, or both be" | to "shall not both be numeric nor both be logical. The types and kinds of and shall not both be" | 109:24 US Editorial Improvements insert a comma after "scalar" 110:10 US Editorial Improvements change "STRUCTURE" to "TARGET_STRUCTURE" 111:3 US Reason for NO vote (Problem 1) There is no constraint that requires the to be the same shape within a WHERE construct, nor a constraint that requires the array assignments within the WHERE construct to be the same shape as the . Proposed Solution: Add the following to section 7.5.3.1, [111,3+] If a contains a , a , or another then each within the must be the same shape. In each , the and the being defined must be arrays of the same shape. 111:19 US Editorial Improvements delete extra blank before "where-body-construct" (if there is one) 111:33 US Quality Improvement section 7.5.3.2, change "a small" to "the following" 111:47 US Editorial Improvements Replace "each" with "the". 112:29 US Editorial Improvements change comment to " ! because SUM is transformational, all elements of A ! are processed by LOG, in spite of the WHERE mask." 113:15 US Quality Improvement (FORALL), insert to read "a nonpointer named .." 113:22 US Editorial Improvements change "forall-body-construct" to "". 113:22-28 US Reason for NO vote (Problem 15) Section 7.5.4.1, Last pair of constraints after R753: The final two constraints of this section constrain the FORALL construct to a greater extent than the HPF language does. Proposed Solution: Delete these two constraints; delete the same two constraints in [117:24-28]. 113:33 US Editorial Improvements change "B(I:J) /= 0.0" to "B(I,J) /= 0.0". 113:36+ US Quality Improvement (Brian's 115 36+) add a note (section 7.5.4.1): "An assignment statement that is a FORALL body construct may be a scalar or array assignment statement, or a defined assignment statement. The variable being defined should use each index name in the . For example, FORALL (I = 1:N, J = 1:N) A(:, I, :, J) = 1.0 / REAL(I+J-1) END FORALL broadcasts scalar values to rank two submatrices of A." 114:4 Germany Editorial Improvements N7.53 use :: form of spec 114:7 Germany Editorial Improvements N7.53 use :: form of spec 114:8 Germany Editorial Improvements N7.53 use :: form of spec 114:24 Germany Editorial Improvements N7.54 use :: form of spec 114:32 US Editorial Improvements move "A =" to line 34; page 116, lines 29, 35 (twice); page 117, lines 13, 17. 114:44 US Editorial Improvements change "are" to "is" 114:46 US Quality Improvement m1, m2, and m3 are not the user specified expressions. They are computed from the user specified expressions as described later in the paragraph. However, the following edits are needed: 114:46-115:5 US Quality Improvement indent the paragraph and number the paragraph (we'll add a 2nd paragraph below) (i.e. make the paragraphs a list). 114:46-115:5 US Quality Improvement All the subscripted "m"s, "k" and "max" should be in italics. 115:2 US Quality Improvement Start a new paragraph with the sentence that starts with "Let". This paragraph is also indented and is item 2 in the list. The last line of the paragraph is 115:5, so don't indent or number [115:6-7]. 115:9 US Editorial Improvements change "forall" to "FORALL"; cf. page 114, line 41 115:30-116:2 US Reason for NO vote (Problem 16) Section 7.5.4.2.3, 3rd paragraph: The description of pointer assignment in FORALL is incomplete. As it stands, only the *expressions* within are pre-computed, not the pointer which will actually be assigned. Proposed Solution: Add text to [115:31] to read "evaluation of all expressions ... , the determination of any pointers within , and the determination..." 116:2 US Editorial Improvements delete the extra blank before "may" and between "target" and "." 116:11-12 US Quality Improvement (Brian's 116:12) section 7.5.4.2.3, replace lines 11-12 with "Computations that would otherwise cause error conditions can be avoided by using an appropriate , that limits the active combinations of the values. For example," 116:17 US Quality Improvement section 7.5.4.2.3, insert "that statement's " before "" 116:18 US Quality Improvement replace "with mask control by any control mask" by "masked by any control mask from outer nested WHERE constructs (7.5.3.2)" 116:19-20 US Quality Improvement replace "with masked control by the control mask" with "masked by the control mask in effect for the where-assignment-statement" 116:23 Germany Editorial Improvements N7.58 use :: form of spec 116:29-35 US Editorial Improvements move "A =" to line 31,37; move "B =" to line 37 117:6 Germany Editorial Improvements N7.59 use :: form of spec 117:13-17 US Editorial Improvements move "A =" to line14,18. 117:27 US Editorial Improvements change 'shalll' to 'shall' 118:4 Germany Additional Comments keyword missing FORALL (I=1:N) A(I,I) = X(I) 118:4 US Editorial Improvements change "(I=1:N)" to "FORALL (I=1:N)" 118:11 US Quality Improvement change "nonzero diagonal" to "nonzero off-diagonal" 118:19 US Quality Improvement replace with "A many-to-one assignment is more than one assignment to the same subobject" 118:19-22 US Reason for NO vote (Problem 17) Section 7.5.4.4, 1st paragraph: The paragraph restricts multiple assignments to the same object, but doesn't restrict multiple pointer assignments to the same object. Proposed Solution: Before "whether" in [118:19] insert "or association of more than one target with the same pointer". Before "to the same" in [118:22] insert "or pointer assign". The paragraph restricts multiple assignments to the same object, but doesn't restrict multiple pointer assignments to the same object. 118:24 Germany Additional Comments wrong font index-name 119:11 US Quality Improvement from defect item 194 insert "and possibly FORMAT <>" between "constructs" and "that", where << >> is obsolescent font. 119:21 Germany Additional Comments column 6 character position 6 120:1 US Editorial Improvements Delete "(12.4.2, 12.4.3, 12.7)" and, after "references" insert "(12.4.2, 12.4.3)". 120:37 UK Editorial Comments Change "permitted" to "permissible". Rationale: WG5 has been requested by non-English speaking countries not to use unnecessary variation in descriptions. "permissible" is used in the corresponding alternative text in Annex B (300:11, 300:13), and four times in corresponding text in section 8.2 (129:9-12). 122:36 Japan Minor Editorial Comment Subclause 8.1.3.2 Proposal : Line 36 Change "EQ" to "LE" 122:36-37 US Reason for NO vote (Problem 6) CASE construct ranges will not have right semantics if EQ is not replaced with LE. (once on line 36 and once on line 37). Proposed Solution: 122:36-37 Change "EQ" to "LE" twice. 122:37 Japan Minor Editorial Comment Subclause 8.1.3.2 Proposal : Line 37 Change "EQ" to "LE" 123:5-12 Germany Editorial Improvements N8.6 indent 125:6 UK Substantive Comment Section 8.1.4.4.1 125:6. Delete 'nonpointer'. Rationale: The UK opposes interpretation 179 as an unnecessary technical change to Fortran 90 (see e-mail SC22WG5.858 and subsequent correspondence). Since the Fortran 95 CD assumes interpretation 179, this change removes it. 128:6 US Editorial Improvements Change "DO-variable" to "DO variable". 129:28-29 US Editorial Improvements Ensure all text is in the obsolescent font. Some characters look big. 132:17 US Editorial Improvements Change "9.1.3" to "9.5.1" 132:17 US Quality Improvement change "9.1.3" to "9.5.1" 134:7 US Editorial Improvements After "statement" add "(9.2.1.3.1)" 137:1 US Editorial Improvements after "exist", insert "(9.2.1.1)" 137:3 US Editorial Improvements Delete "(9.2.1.1)" 139:37 US Editorial Improvements after "default character." insert "When a record contains any nondefault characters, the appropriate value for the RECL= specifier is processor dependent." 139:37 US Quality Improvement after "default character." insert "When a record contains any nondefault characters, the appropriate value for the RECL= specifier is processor dependent." 143:32+ US Editorial Improvements Insert this introductory sentence "The FMT= specifier supplies a format specification or specifies list directed formatting, for a formatted input/output statement." 143:32+ US Quality Improvement Insert this introductory sentence "The FMT= specifier supplies a format specification or specifies list directed formatting, for a formatted input/output statement." 146:13 US Editorial Improvements Change "an assumed" to "a whole assumed". 106:22 (note, this is out of order, and replaces an edit to 102:22 in 95-218, where we added a note) Change "an assumed" to "a whole assumed". 146:13 US Quality Improvement change "an assumed" to "a whole assumed" 146:14 US Quality Improvement (I/O implied do), insert to read "a nonpointer named .." 146:26 US Editorial Improvements Change "derived type object" to "derived-type object". 146:38 Germany Editorial Improvements N9.25 use :: form of spec 146:42/43 Additional Comments line break 146:43 Germany Editorial Improvements N9.25 correct line break 149:25 US Editorial Improvements after "next effective item", add " (sometimes referred to as next effective list item)" 150:25 US Editorial Improvements after "for" insert " unformatted" 150:28 US Editorial Improvements after "for" insert " unformatted" 151:29-30 US Editorial Improvements Table heading - put 2nd column heading on one line 151:29-34 US Editorial Improvements Lower case Capitals on all but first word of second column 165:35-43+ US Editorial Improvements replace [165:35] with " is the numeric value of the decimal exponent ." and in the table [165:38-43], replace all ""s with "" and on the next page, [166:3] replace "" with "". 166 Japan Minor Editorial Comment Subclause 10.5.1.2.2 Proposal : Line 3 Add "|" after "exp." 166:3 US Editorial Improvements change "forms" to "edit descriptor forms" and add the missing "|" after "" 166: 3 US Editorial Improvements 2nd last para, line 2 - change '|exp>999' to '|exp|>999' 166: 5 US Editorial Improvements last para, line 2 -change '|k|leading' to '|k| leading' 166:17 Germany Additional Comments decimal point yyy.x1x2...xdexp 166:17 US Editorial Improvements para 4, line 2 - change 'yyyx' to 'yyy.x' 166:17 US Quality Improvement add the missing "." after "yyy" and delete the "." after ""; put blanks around the dot, and the same for the "." at [167:9] 166:32 Germany Additional Comments character missing |exp| 166:32 US Editorial Improvements para 5, line 2 - change '|exp>999' to '|exp|>999' 166:37 US Editorial Improvements change the "-" before "500" to be the same "-" as is used elsewhere on that line 167:3 US Editorial Improvements change "4.3.1.2" to "R414" 171: 5 US Editorial Improvements last para, line 1 - change 'optional on the slash edit descriptor' to 'optional in the slash edit descriptor' 171:37 US Editorial Improvements change "4.3.1.2" to "R414" 172:34 US Editorial Improvements change "may" to "shall" 175:2 US Editorial Improvements after "example", insert ":" 175:3 Germany Editorial Improvements N10.29 use LEN= , evtl. use :: 175:4 Germany Editorial Improvements N10.29 evtl. use :: 178:36 US Editorial Improvements para 5, 2nd last line - change 'character such' to 'such character' 180:4 US Editorial Improvements after "example", insert ":" 180:5 Germany Editorial Improvements N10.35 use LEN= , evtl. use :: 180:6 Germany Editorial Improvements N10.35 evtl. use :: 183:23 Germany Editorial Improvements 11.1 delete "external procedure," (redundant-program unit) 183:30 Germany Editorial Improvements N11.2 use :: form of spec 184:7-9 US Quality Improvement page 184, line 7 Insert at the beginning "Normal" and change "Execution" to "execution"; page 184, line 8, add at the end "Execution may also be terminated if certain error conditions occur." 184:29 US Quality Improvement change to read "the object shall have the SAVE attribute." object is of a type" to "If a component is of a type". 184:31 Germany Editorial Improvements 11.3 delete "external procedure," (redundant-program unit) 184:37 US Editorial Improvements change "that entities" to "the entities" 185:14 US Editorial Improvements last para, line 1 - change 'ONLY option on the USE statement' to 'ONLY option in the USE statement' 185:28-38 US Reason for NO vote (Problem 20) There is disagreement on the meaning of the description of the interpretation of multiple USE statements. This disagreement is illustrated by the following example: USE MOD, ONLY: X, A => B USE MOD, Y => X One interpretation of the statement about concatenating the rename-lists and only-lists is that the above should be interpreted as concatenating only the renamings from the only-list: USE MOD, A => B, Y => X The other interpretation is that the entire only-list should be included (converting it to the form of a rename-list): USE MOD, X => X, A => B, Y => X The difference between these interpretations is the question of whether X in the module is accessible in the local scoping unit by only the name Y or by both X and Y. This should be decided and made unambiguous; two possible solutions are proposed. Proposed Solutions: Edits have been proposed in each direction; since there are other minor problems in the same general area, they are displayed as alternative complete replacements for the four paragraphs following the constraints in 11.3.2 [185:28-38] (a) "renames only" version: A in a or is the local name for the entity whose name in the specified module is ; if no appears, the local name is the or . A USE statement without the ONLY option provides access to each public entity in the specified module. A USE statement with the ONLY option provides access to each entity, if any, that appears as a or in the . More than one USE statement for a given module may appear in a scoping unit. If one of the USE statements is without an ONLY qualifier, all public entities in the module are accessible and the s and renames in s are interpreted as a single concatenated . If all the USE statements have ONLY qualifiers, only those entities named in one or more of the s are accessible, that is, all the s are interpreted as a single concatenated . (b) "entire " version: A in a or is the local name for the entity whose name in the specified module is ; if no appears, the local name is the or . A USE statement with the ONLY option provides access to each entity, if any, that appears as a or in the . A USE statement without the ONLY option provides access to each entity, if any, that appears as a in the . Additionally, it provides access to any public entity in the specified module that does not appear (1) as a in the of the USE statement or (2) as a or in either (a) an or (b) a of another USE statement in the same scoping unit referencing the same module; the local name for the entity is the same as its name in the module. 186:6 US Editorial Improvements remove extra blank after "accessible" 187:17 US Quality Improvement delete "objects having" 187:19+ US Quality Improvement add as a new note "In the example BLOCK DATA INIT REAL A, B, C, D, E, F COMMON /BLOCK1/ A, B, C, D DATA A /1.2/, C /2.3/ COMMON /BLOCK2/ E, F DATA F /6.5/ END BLOCK DATA INIT common blocks BLOCK1 and BLOCK2 both have objects that are being initialized in a single block data program unit. B, D and E are not initialized but need to be specified as part of the common blocks." 187:30 Germany Editorial Improvements N11.13 declare A, B, C 189:12 US Quality Improvement after "expression", insert "(7.1.3)" 191:20 US Quality Improvement add at the end of the line "or is an entry in a procedure with the ELEMENTAL prefix-spec" 192:26 US Editorial Improvements para after constraints after R1207, line 3 - change 'name on a procedure heading' to 'name in a procedure heading' 192:34 US Editorial Improvements change "but an ENTRY" to "but an entry" 193:8 Germany Editorial Improvements N12.5 use :: form of spec 193:9 Germany Editorial Improvements N12.5 use :: form of spec 193:12 Germany Editorial Improvements N12.5 use :: form of spec 193:13 Germany Editorial Improvements N12.5 use :: form of spec 193:14 Germany Editorial Improvements N12.5 use :: form of spec 193:22 US Editorial Improvements change "MODULE PROCEDURE specification" to "MODULE PROCEDURE statement" 193:28 Germany Editorial Improvements 12.3.2.1 equals => assignment 194:13 Germany Editorial Improvements N12.6 "INTERFACE" => "INTERFACE SWITCH" 195:13 Germany Editorial Improvements 12.3.2.1.1 " or redefined" => ", or redefined" (to clarify: replacement is only possible for derived type assignment) 195:14 Germany Editorial Improvements 12.3.2.1.2 equals sign => assignment symbol 195:27 Germany Editorial Improvements N12.8 "INTERFACE" => "INTERFACE ASSIGNMENT ( = )" 195:33 US Editorial Improvements change "[::]" to "[ :: ]" 195:46 Germany Additional Comments executable program program 196:10 US Quality Improvement delete this line 196:11 Germany Editorial Improvements N12.10 use :: form of spec 196:16 US Editorial Improvements change "[::]" to "[ :: ]" 196:19 Germany Editorial Improvements 12.3.2.3 function name (13.11) => procedure name (all intrinsics are generic, not only functions) 196:32 US Editorial Improvements change "by implicit" to "by an implicit" 196:42 US Quality Improvement change "operation and a" to "operation. A" 197:14 US Quality Improvement replace the constraint with "Neither a procedure with the prefix-spec ELEMENTAL nor an entry in such a procedure shall be used as an actual argument." 198:6 Germany Editorial Improvements N12.15 use :: form of spec 198:9 Germany Editorial Improvements N12.15 use :: form of spec 198:16 US Quality Improvement change "Arguments" to "Actual arguments" 200:5 US Quality Improvement change [200:5] delete "can", to read: "a processor checks.." 200:14 US Editorial Improvements change "can" to "could" 200:19 US Quality Improvement add "Because an INTENT(OUT) variable is considered undefined on entry to the procedure, any default initialization specified for its type will be applied." 200:20,22 US Editorial Improvements change "the default" to "omitting the INTENT attribute" and change "with default intent" to "without an INTENT attribute" 200:24-27 US Quality Improvement moved to [199:26], so that they appear with the rest of the text that deals with restrictions on passing scalars to scalars. 200:32 US Quality Improvement change "Arguments" to "Actual arguments" 200:37-39 US Quality Improvement replace the first part of the sentence, up to but not including 'except', with "If the interface of the dummy procedure is explicit, the characteristics listed in 12.2 must be the same for the associated actual procedure and the corresponding dummy procedure," 200:39 at the end of the sentence add "and an elemental intrinsic actual procedure may be associated with a dummy procedure that is not elemental" 200:45 US Quality Improvement change "Arguments" to "Actual arguments" 201:37-38 US Reason for NO vote (Problem 18) after item(5) From defect item 193: Can a pointer dummy argument with the OPTIONAL attribute that is not present, be passed to a non-pointer optional dummy argument? This would appear to be a reference of the pointer. Proposed Solution: Add new item after line 37: "(6) If it is a pointer, it shall not be supplied as an actual argument corresponding to a nonpointer dummy argument other than as the argument of the PRESENT intrinsic function." In line 38, change "in (5)" to "in the list" 203:26 Germany Editorial Improvements N12.22 cannot => shall not 204:31 US Quality Improvement change "function reference" to "" 205:32 US Editorial Improvements change "...]" to "] ..." 205:41 US Editorial Improvements 2nd constraint after R1220 - change 'present on the end-function-stmt' to 'present in the end-function-stmt' 206: 1 US Editorial Improvements 5th constraint after R1220, line 1 - change 'present on the end-function-stmt' to 'present in the end-function-stmt' 206:10 US Quality Improvement replace "interface" with "characteristics", and change 12.3 to 12.2 206:35 US Editorial Improvements after "present", insert a comma 206:35-36 US Quality Improvement change to "If the PURE or ELEMENTAL is present the function ..." 207:6-8 Germany Editorial Improvements N12.27 merge type and attr of ARRAY, new line for C_SUM: :6 REAL, INTENT(IN) :: ARRAY :8 REAL, DIMENSION(SIZE(ARRAY)) :: C_SUM 207:7 US Quality Improvement delete "! The characteristics ... C_SUM" 207:9 Germany Editorial Improvements N12.27 use :: form of spec 207:32 US Editorial Improvements 1st constraint after R1224, line 1 - change 'specified on the end-subroutine-stmt' to 'specified in the end-subroutine-stmt' 207:36 US Editorial Improvements 4th constraint after R1224, line 1 - change 'present on the end-subroutine-stmt' to 'present in the end-subroutine-stmt' 207:46 US Editorial Improvements after "present", insert a comma 208:20-21 US Quality Improvement change "..specification statement" to "..specification or type-declaration statement". 208:34-35 US Editorial Improvements 2nd para after constraints, line 4 - change 'specified on the ENTRY statement' to 'specified in the ENTRY statement' 208:35 US Editorial Improvements Section 12.5.2.5, 2nd para after constraints, line 5 - change 'named on the ENTRY statement' to 'named in the ENTRY statement' 208:36 US Editorial Improvements 2nd para after constraints, line 6 - change 'named on the FUNCTION statement' to 'named in the FUNCTION statement' 208:40 US Editorial Improvements Section 12.5.2.5, 3rd para after constraints, line 1 - change 'specified on the ENTRY statement' to 'specified in the ENTRY statement' 208:40-41 US Editorial Improvements 3rd para after constraints, line 1 - change 'specified on the FUNCTION statement' to 'specified in the FUNCTION statement' 208:45 US Editorial Improvements 4th para after constraints, line 3 - change 'specified on the ENTRY statement' to 'specified in the ENTRY statement' 209: 1 US Editorial Improvements 5th para after constraints, line 1 - change 'specified on the SUBROUTINE statement' to 'specified in the SUBROUTINE statement' 209:26 US Editorial Improvements Section 12.5.2.5, 3rd last para, line 2 - change 'RECURSIVE on the initial... statement' to 'RECURSIVE in the initial... statement' 209:28 Germany Additional Comments INstead Instead 209:28 US Editorial Improvements change "INstead" to "Instead" 209:28 US Editorial Improvements 2nd last para, line 1 - change 'INstead' to 'Instead' 209:29 US Editorial Improvements 2nd last para, line 2 - change 'specified on the SUBROUTINE or FUNCTION statement' to 'specified in the SUBROUTINE or FUNCTION statement' 209:32 US Editorial Improvements 2nd last para, line 2 - change 'specified on the SUBROUTINE or FUNCTION statement' to 'specified in the SUBROUTINE or FUNCTION statement' 210:25 US Quality Improvement delete "data object" from end of line 210:38 US Editorial Improvements section 12.6 heading - change 'Pure Procedures' to 'Pure procedures' 210:39 UK Substantive Comment Section 12.6 In this section, "no side effects" is not meaningful as a definition. 210:39. Delete 'has no side effects. In addition, it'. 210:39 US Quality Improvement change "has no side effects" to "shall have no side effects"; make the first sentence (from the second) "A pure procedure" followed by the list; make the second sentence the former first sentence as modified 210:41 US Quality Improvement on next page add a new list item (3) and renumber: (3) is an entry in a pure or elemental procedure 210:42 UK Substantive Comment Section 12.6 210:42. Replace by '(3) is an intrinsic function, (4) is an intrinsic elemental subroutine, or' 211:1 UK Substantive Comment Section 12.6 211:1. Replace '(4)' by '(5)'. 211:3 UK Substantive Comment Section 12.6 211:3. After 'pure procedure' add 'has no side effects that inhibit its use in parallel contexts. It' 211:5-7 US Reason for NO vote (Problem 19) 12.6 Pure Procedures, first note: This note indicates that all intrinsic functions are pure. Where is there normative text that shows that this is true? The text of this note also implies that a processor cannot provide an intrinsic function that is not pure nor a non-elemental intrinsic subroutine that is pure. Proposed Solution: Delete the three sentences on [211:5-7] beginning with "Intrinsic", and before the note add the following normative text: "All intrinsic functions specified in this standard are pure. The MVBITS intrinsic subroutine is pure; no other intrinsic subroutine specified in this standard is pure." 211:13 US Quality Improvement change "alternate return specifiers" to "alternate return indicators" 211:24-25 US Quality Improvement replace the last sentence "The prefix-spec...interface" with "The interface shall specify that the procedure is either pure or elemental." 212:37 US Quality Improvement add new sentence "In pure subroutines, side effects to dummy arguments with the POINTER attribute are also permitted." 213:5 US Editorial Improvements after "function", insert "actual" 213:7 US Editorial Improvements after "shape of the", insert "actual" 213:7 US Editorial Improvements after "If the", insert "actual" 213:8 US Editorial Improvements after "all", insert "actual" 213:11-12 UK Substantive Comment Section 12.7.2 213:11-12. Replace sentence 'For ...' by 'For a non-intrinsic procedure, an actual argument shall be scalar if any specification depends on the value of the corresponding dummy argument.' 213:11 US Editorial Improvements after "each", insert "array actual" 213:12 US Quality Improvement add note (but not in same box as following note) "For intrinsic functions, a similar rule applies. See 13.3." 213:18+ UK Substantive Comment Section 12.7.2 213:18+. Add: 'An example of an elemental procedure with an argument that is not permitted to be an array is ELEMENTAL REAL FUNCTION F(A,N) REAL A INTEGER N ! The corresponding actual argument must be scalar REAL WORKARRAY(N) ... END' Rationale: The present wording is far too restrictive. For example, it does not permit ELEMENTAL REAL FUNCTION F(A) REAL A REAL (SELECTED_REAL_KIND(PRECISION(A)*2)) WORK ... END Also, it needs to apply to subroutines as well as functions. 213:19 US Editorial Improvements after "subroutine", insert "actual" 213:26 US Editorial Improvements change "with scalar actual arguments were" to "had been" 213:27 US Quality Improvement copy the sentence from 213:11-13 " For a non-intrinsic ... specification expression." to the end of 213:27 and replace "function" with "subroutine" in the copied text. 213:30 US Quality Improvement add as a note: "The restriction that actual arguments associated with dummy arguments used in specification expressions shall be scalar allows elemental procedures to have internal arrays, etc., whose size depends on dummy arguments. However, for any particular instance of an elemental procedure reference, all of the internal arrays must be the same size. This restriction was primarily added to facilitate optimization." 215:5 Germany Editorial Improvements 13.1 elemental intrinsic => elemental 215:19 US Editorial Improvements section 13.3 heading - change 'Intrinsic Procedures' to 'intrinsic procedures' 216:36 Germany Editorial Improvements 13.5.7 functions => elemental functions 216:36 Germany Editorial Improvements 13.5.7 subroutine => elemental subroutine 216:37 Germany Editorial Improvements 13.5.7 functions => elemental functions 216:38 Germany Editorial Improvements 13.5.7 functions => elemental functions 216:38 Germany Editorial Improvements 13.5.7 function => elemental function 217:1 Germany Editorial Improvements 13.5.7 subroutine => elemental subroutine 217:1 Germany Editorial Improvements 13.5.7 functions => elemental functions 217:21 Germany Editorial Improvements 13.7 function => transformational function 220:6 Germany Editorial Improvements 13.9 function NULL => transformational function NULL 220:10 Germany Editorial Improvements 13.10 delete "special" (nothing special...) 223:22-25 US Quality Improvement Replace each of these lines with two lines identical to 224:4-5 or 224:6-7 except for the intrinsic function name and description. 226:6 Germany Editorial Improvements 13.14 procedure results => function results 226:7 Germany Editorial Improvements 13.14 procedure => function 231:4 US Quality Improvement delete the phrase, "It may be scalar or array valued." 236:14 US Editorial Improvements change "CCIR Recommendation 460-2" to "ISO 8601:1988" 240:23 US Editorial Improvements change "ISO 646:1983" to "ISO/IEC 646:1991" 244:36 US Quality Improvement delete the phrase, "It may be scalar or array valued." 247: 8 US Editorial Improvements Note 13.10 - change 'Note that the' to 'The' 247:24 US Editorial Improvements Section 13.14.59, Note 13.11 - change 'Note that the' to 'The' 249:39 US Editorial Improvements Remove "(optional)". 250:4 Japan Minor Editorial Comment Subclause 13.14.66 Proposal : Line 4 Add ",...,dn" after dDIM+1" Add ")" after "dn." 250:38 US Quality Improvement Make identical to 249:33 or 253:20 except for the intrinsic function name and the section number. 250:44 US Quality Improvement Remove "(optional)". 252:25 US Editorial Improvements Remove "(optional)". 253:20 US Quality Improvement Make identical to 249:33 or 253:20 except for the intrinsic function name and the section number. 253:26 US Quality Improvement Remove "(optional)". 257:22 US Quality Improvement add "The dummy argument A has no INTENT attribute". 257:21-22 US Quality Improvement delete the phrase, "It may be scalar or array valued." 257:26 US Quality Improvement Make identical to 249:33 or 253:20 except for the intrinsic function name and the section number. 257:35 US Quality Improvement Remove "(optional)". 265:30 US Quality Improvement Make identical to 249:33 or 253:20 except for the intrinsic function name and the section number. 265:36 US Quality Improvement Remove "(optional)". 271:18 Germany Editorial Improvements 14.1.1 delete ", and external procedures" (redundant--program unit) 272:7+ Germany Editorial Improvements N14.2 see my CCI f90interp.1995-47: Generic identifiers are local entities of class (1) as are intrinsic procedures, but don't cause the intrinsic procedure to become inaccessible. Also, including an INTRINSIC stmt in line 10 changes the actual name resolutuion. 273:33 Germany Editorial Improvements N14.4 use :: form of spec 273:36 Germany Editorial Improvements N14.4 use :: form of spec 273:38 Germany Editorial Improvements N14.4 "INTERFACE" => "INTERFACE A" 273:43-45 US Quality Improvement change to "If a reference to the intrinsic function NULL appears as an actual ..." 274:29 US Quality Improvement 274:35 change "interface block" to "generic interface" 275:4+ Germany Editorial Improvements N14.6 adjust indentation: 3 instead of 10 pos; indent specs in interfaces, too 275:5-11 Germany Additional Comments indentation 275:6 Germany Editorial Improvements N14.6 use :: form of spec 275:7 Germany Editorial Improvements N14.6 "END" => "END FUNCTION SCALAR_RANF" 275:9 Germany Editorial Improvements N14.6 use :: form of spec 275:10 Germany Editorial Improvements N14.6 "VECTOR RANDOM" => "VECTOR_RANDOM" 275:10 Germany Editorial Improvements N14.6 use :: form of spec 275:11 Germany Editorial Improvements N14.6 "END" => "END FUNCTION VECTOR_RANDOM" 275:33-35 US Quality Improvement delete item (5) entirely 275:39 Germany Editorial Improvements 14.1.2.4.2 dummy is => dummy argument is 275:45 Germany Editorial Improvements 14.1.2.4.2 the name => that name 276:27 US Quality Improvement change "its host" to "the host of the procedure or interface block". 276:33 US Quality Improvement change "to it." to "to the procedure." 276:45 US Quality Improvement change "in the scoping unit of a statement" to "in the scoping unit that contains a statement" 277:15-17 US Quality Improvement move [277:15-17] to [276:43+] 279:2 US Quality Improvement put "or defined" in obsolescent font 280:4 Germany Editorial Improvements N14.11 use :: form of spec, add "B" 280:5 Germany Editorial Improvements N14.11 use :: form of spec, add "C" 280:6 Germany Editorial Improvements N14.11 use :: form of spec, add "D" 280:7 Germany Editorial Improvements N14.11 use :: form of spec, add "E" 280:8 Germany Editorial Improvements N14.11 use :: form of spec, add "F" 280:9 Germany Editorial Improvements N14.11 use :: form of spec, add "G" 280:45-46 Japan Minor Editorial Comment Subclause 14.6.2 Proposal : Lines 45 and 46 Delete "The initial association status of a pointer is undefined". 281:37 US Quality Improvement change to "The target of the pointer is deallocated other than through the pointer" 284:3 Germany Editorial Improvements N14.15 use :: form of spec 284:4 Germany Editorial Improvements N14.15 use :: form of spec 284:5 Germany Editorial Improvements N14.15 use :: form of spec 284:22 Germany Editorial Improvements N14.16 use :: form of spec 285:7 UK Substantive Comment See Additional UK Substantive Comment (after detailed comments) 285:8 UK Substantive Comment See Additional UK Substantive Comment (after detailed comments) 285:14-19 US Quality Improvement in [285:14] and [285:18] change "masked array assignment" to "masked array assignment or FORALL assignment" 286:13 UK Substantive Comment See Additional UK Substantive Comment (after detailed comments) 286:21 UK Substantive Comment See Additional UK Substantive Comment (after detailed comments) 286:23 UK Substantive Comment See Additional UK Substantive Comment (after detailed comments) 286:25 UK Substantive Comment See Additional UK Substantive Comment (after detailed comments) 286:26 UK Substantive Comment See Additional UK Substantive Comment (after detailed comments) 289:31+ US Quality Improvement add a definition for "assumed-shape array"; use the text in [54:31-32] 291:33+ UK Substantive Comment See Additional UK Substantive Comment (after detailed comments) 291:42 US Quality Improvement change "(12.7)" to "(2.4.5, 7.5, 12.7)" 292:32 US Editorial Improvements add ' :' after ')' in Annex A entries for generic identifier [292:32], numeric type [294:14], and transformational function [296:39] 295:12 UK Substantive Comment Glossary: 295:12. Replace 'has no side effects' by 'has the PURE or ELEMENTAL, is an , is an intrinsic , {or is a statement function that references only pure functions}'. 295:38-41 UK Substantive Comment Glossary: 295:38-41. Delete (i.e. delete definition of 'side effects'). 299:5 UK Editorial Comments Change "are" to "were". Rationale: Fortran 90 is in the past. 299:8 US Quality Improvement change "DO control variables" to "DO variables"; also, in the text of item (1) change "do-variable" to "DO variable", and change the title of B.1.1 from "DO variables" to "DO-Variables" 299:25+ UK Editorial Comments Add new paragraph: "In this and other annexes "FORTRAN 66" is used as the informal name for the first Fortran standard, ISO 1539:1972, which was technically identical to ANS X3.9-1966." Rationale: "FORTRAN 66" is used in Annexes B and C but never defined. 299:27 US Quality Improvement change "implementing each of the deleted features" to "implementing any of the deleted features" 299:28 US Editorial Improvements B.1.1 heading - change 'Double Precision DO-Variables' to 'double precision DO- variables' 299:34-35 US Quality Improvement change "a named" to "a nonpointer named" 300:23+ US Quality Improvement at the end of the section, add the constraint "Constraint: A pure procedure shall not contain a ." 301:12,13 UK Editorial Comments Change "R504" to "R512 in section 5.1.2.3" In the following line add "(10)" before "In an". Rationale: Current text makes no sense. 301:26 UK Editorial Comments It would be better if "(11)" were on the following line. 301:26-27 US Quality Improvement add double quotes around '(11) in an assign-stmt' and change 'assign-stmt' to italics; also, at end of lines [301:22], [301:25], double quote missing 301:31 US Editorial Improvements B.1.5 heading - change 'Edit Descriptor' to 'edit descriptor' 302: 2,3 UK Editorial Comments Change "are" to "were", two times in all. Rationale: Fortran 90 is in the past. 302:19 UK Editorial Comments Delete "computed GO TO statement or". Rationale: the computed GO TO statement is itself obsolescent. 303:9 US Quality Improvement replace "This facility" with "Some uses of this facility may be replaced with an automatic character length function, where the length of the function result is declared with a specification expression. Other uses"; add the following as the second paragraph in section B.2.5 "Note that dummy arguments of a function may be assumed character length." 305:13-14 Germany Editorial Improvements C.1.1 use :: form of spec 305:27-29 Germany Editorial Improvements C.1.1 use :: form of spec 305:35 Germany Editorial Improvements C.1.1 use :: form of spec 305:38 Germany Editorial Improvements C.1.1 use :: form of spec 305:40-41 Germany Editorial Improvements C.1.1 use :: form of spec 306:3 US Quality Improvement add at the end of the line, "(4.3.1.2)" 306:9-12 Germany Editorial Improvements C.1.2 use :: form of spec 306:32 US Quality Improvement add "(4.4.1)" to the title of this section 307:48 Germany Editorial Improvements C.2.1 add " PROGRAM DYNAM_ITER" 308:27 Germany Editorial Improvements C.2.2 add " PROGRAM ITER" 308:33-34 Germany Editorial Improvements C.3.1 use :: form of spec 308:37-40 Germany Editorial Improvements C.3.1 use :: form of spec 308:43-44 Germany Editorial Improvements C.3.1 use :: form of spec 308:46 Germany Editorial Improvements C.3.1 use :: form of spec 309:7-8 Germany Editorial Improvements C.3.1 use :: form of spec 309:10 Germany Editorial Improvements C.3.1 use :: form of spec 310:37 Germany Editorial Improvements C.4.4 add " CELL" 313:11-12 US Editorial Improvements para after Example 1, lines 5-6 - change 'required on the EXIT statement' to 'required in the EXIT statement' 313:12 US Editorial Improvements para after Example 1, line 6 - change 'optional on the CYCLE statement' to 'optional in the CYCLE statement' 318:9 Germany Editorial Improvements C.6.2 use :: form of spec 318:29+ France Editorial Comments C.6.3, (4) : preconnected files. AFNOR thinks that the explanation stated in (4) end of line 4 and beginning of line 5 : "For a preconnected file the property is NULL" should also be included in a more visible part of the Draft - We suggest to put the same statement "For a preconnected file the property is NULL" in section 10 (input/output editing) page 172, line 7 just after ".....with BLANK = "NULL". 321:33 Germany Editorial Improvements C.7.2 replace by "CHARACTER(LEN=8) :: A ; CHARACTER(LEN=1) :: B" 323: 4 US Quality Improvement change 'processor defined' to 'processor dependent' 323:45 Germany Editorial Improvements C.8.2.1 add " SUB" 324:23 Germany Editorial Improvements C.8.3.2 use :: form of spec 324:26 Germany Editorial Improvements C.8.3.2 use :: form of spec 324:27 Germany Editorial Improvements C.8.3.2 add " DATA_MODULE" 324:39-40 Germany Editorial Improvements C.8.3.3 use :: form of spec 324:41 Germany Editorial Improvements C.8.3.3 add " NONZERO" 324:42 Germany Editorial Improvements C.8.3.3 add " SPARSE" 325:11 Germany Editorial Improvements C.8.3.4 use :: form of spec 325:34+ Germany Editorial Improvements C.8.3.5 specify dummys INTENTs ? 325:35 Germany Editorial Improvements C.8.3.5 use :: form of spec 325:38 Germany Editorial Improvements C.8.3.5 use :: form of spec 326+ Germany Editorial Improvements C.8.3.7 why not make the specific procs PRIVATE? 326+ Germany Editorial Improvements C.8.3.7consistently define function TYPEs _either_ in the function-stmt _or_ in a followingtype-spec stmt... 326:27-46 Germany Editorial Improvements C.8.3.7 indent 326:37 Germany Editorial Improvements C.8.3.7 add " OPERATOR (.IN.)" 326:40 Germany Editorial Improvements C.8.3.7 add " OPERATOR (<=)" 326:43 Germany Editorial Improvements C.8.3.7 add " OPERATOR (+)" 326:46 Germany Editorial Improvements C.8.3.7 add " OPERATOR (-)" 327:1-3 Germany Editorial Improvements C.8.3.7 indent 327:3 Germany Editorial Improvements C.8.3.7 add " OPERATOR (*)" 327:5-51 Germany Editorial Improvements C.8.3.7 indent 327:6 Germany Editorial Improvements C.8.3.7 " A" => ", INTENT(IN) :: A" 327:15 Germany Editorial Improvements C.8.3.7 use :: form of spec 327:17 Germany Editorial Improvements C.8.3.7 use :: form of spec 327:32 Germany Editorial Improvements C.8.3.7 use :: form of spec 327:34 Germany Editorial Improvements C.8.3.7 use :: form of spec 327:42 Germany Editorial Improvements C.8.3.7 use :: form of spec 327:48 Germany Editorial Improvements C.8.3.7 use :: form of spec 328:1-32 Germany Editorial Improvements C.8.3.7 indent 328:5 Germany Editorial Improvements C.8.3.7 use :: form of spec 328:6 Germany Editorial Improvements C.8.3.7 use :: form of spec 328:20 Germany Editorial Improvements C.8.3.7 " A" => ", INTENT(IN) :: A" 328:22 Germany Editorial Improvements C.8.3.7 use :: form of spec 329:2 Germany Editorial Improvements C.8.3.8 add " J" 329:6 Germany Editorial Improvements C.8.3.8 use :: form of spec 329:7 Germany Editorial Improvements C.8.3.8 use :: form of spec 329:8 Germany Editorial Improvements C.8.3.8 add " K" 330:31 US Quality Improvement change "shall be more general" to "needs to be more general" 331:26 US Quality Improvement change "TARGET attribute," to "TARGET attribute and is scalar or assumed- shape," 331:39 Germany Editorial Improvements C.9.5 delete 331:40 Germany Editorial Improvements C.9.5 add " BEST" 331:41 Germany Editorial Improvements C.9.5 delete (there is no ) ? 331:46 Germany Editorial Improvements C.9.5 use :: form of spec 332:12 Germany Editorial Improvements C.9.5 delete (there is no ) ? 332:22 Germany Editorial Improvements C.10.1 use :: form of spec 332:26 Germany Editorial Improvements C.10.1 use :: form of spec 332:41 Germany Editorial Improvements C.10.1 use :: form of spec 333:14 US Quality Improvement append "(7.1.6.1)" 338:22 Germany Editorial Improvements C.11.3 use :: form of spec 343 US Quality Improvement at top add "In the following, entries in {{{italics}}} denote BNF syntax terms entries in {{{bold face}}} denote language keywords; page numbers in bold denote primary or defining entries. 343 US Quality Improvement Annex D, entry for '**'; add 84 Annex D, entry for '/'; what about the '/' that appears on 161? Annex D, entry for '::'; add 57,58,59,195,196 Annex D, entry for ';'; add 27 Annex D, entry for '='; what about '=' in DO statements and Type statements. Annex D, add entries for "advancing input/output statement" and "alternate return" 344 US Quality Improvement Annex D, add entries for "automatic deallocation" (since it is mentioned in the Intro), bounds, branching, character length parameter, character intrinsic assignment, character string edit descriptor, character storage unit Annex D, entry for 'boz constant' While the syntax term appears in the text of the standard, the term "boz constant" does not. There should not be an entry for it in the index. Instead 'binary constant', 'octal constant' and 'hexadecimal constant' should each list 32. Annex D, entry for 'blank common', change '68' to '68-70' Annex D, entry for 'characteristics of a procedure', If this is in the index, then shouldn't the other types of characteristics also be listed? Annex D, entry for 'common-block-name' should be '' as it is a grammar term. Annex D, add entries for 'component', 'real' and 'complex' under 'constant', 'construct' 345 US Quality Improvement Annex D, delete entry for 'derived-type' under 'constructor'. The standard does not refer to derived-type constructors. Or change it to 'derived-type value' as section 4 uses the term 'derived-type value constructor' once. Annex D, entry for 'conformance' We need multiple entries for the term conformance as it is used in two ways in the standard. There is shape conformance and there is conformance to Fortran 90 and Fortran 77. Annex D, entry for 'default initialization'; 38 should be in bold. Change 285 to 284- 287. 346 US Quality Improvement Annex D, add entries for 'definable', 'deleted features', 'explicit initialization', 'executable statement', 'ENTRY statement' (for consistency with other keyword statements), 'elemental intrinsic subroutine' (since function is listed) Annex D, entry for 'dummy arguments' 'restrictions' should not be the only reference. Add to the 'dummy arguments' line 197. Annex D, entry for 'EQUIVALENCE statement' add 283 Annex D, entry for 'edit descriptors', referring the reader to 'format descriptors' seems odd, as 'format descriptors' does not appear to be used by the standard. 347 US Quality Improvement Annex D, add entries for 'FORALL statement', 'field width', 'Fortran character set' Annex D, entry for '' should be '' Annex D, entry for 'formatting' It seems odd that all of these numbers are in bold. Was that the intention? Annex D, entry for 'ICHAR intrinsic' Why are some intrinsics listed in the index but others not? If the intent is to list those intrinsics that are referenced outside of section 13, then some are missing such as CHAR (section 4) and RESHAPE (section 4). Annex D, entry for 'intrinsic', 'subroutine' should be added. This entry has an odd layout as the term intrinsic applies to types, operations etc, but only the subprogram oriented entries are indented under intrinsic. Annex D, entry for 'intrinsic operations' Why is a separate indented entry made for 'logical', but not for other operations types that are listed outside of section 7? eg relational and concatenation are both referenced in section 4. 348 US Quality Improvement Annex D, add entries for 'iteration count', , 'nonadvancing input/output statement', 'nonexecutable statements', 'numeric constant' Annex D, delete entry for 'names', it does not provide any more information than already provided by 'name' and ''. 349 US Quality Improvement Annex D, add entries for 'obsolescent features', 'override' Annex D, entry for 'PARAMETER', does there really need to be one entry for PARAMETER in bold and another not in bold? Annex D, entry for 'pointer nullification', 40 should be in bold. 350 US Quality Improvement Annex D, add entries for 'reference', 'shape conformance', 'source forms', 'statement entity' Annex D, entry for 'statement label', should the entry for 'statement labels' be combined with this one. 351 US Quality Improvement Annex D, entry for 'statements', missing from the list of statements: 'FORALL', 'MODULE', 'MODULE PROCEDURE', 'PROGRAM', 'SUBROUTINE' 353 US Quality Improvement Annex D, add entries for 'Unconditional GOTO', 'ultimate component', 'unspecified storage unit', , 'value separator', 'whole array', 'zero character length' Additional UK Substantive comment There are problems with the draft standard's description of default initialization, in particular, when such initialization occurs. To avoid excess verbiage (repeating ourselves at least 4 times), we define a new term: 37:39+. (Section 4.4) Add sentence to end of paragraph: "A <> of a derived type is a component at any level of component selection for which no intervening component has the POINTER attribute." [Note: Thus, all the top-level components are direct components, plus all components thereof down to the ultimate components inclusive] [Note: Such components are those that most Fortran processors would keep together in a single block of storage. In the case of a pointer direct component, it is the address or descriptor or dope vector that is stored. The term "direct component" is chosen to reflect the idea that they are stored "directly" in the derived type, i.e. that no pointers are followed going from the derived type to the component.] The new term should also be added to the Glossary (at 291:33+). For the following edits we suggest that the rationales and/or examples could be added to the standard as notes; the UK will make the necessary editorial changes if WG5 agrees. Using the new term we have the following changes: 285:7. (Section 14.7.3) item (3) Change "ultimate" to "direct". Rationale: see the changes we propose for 14.7.5 item (16) [Example: same example as 14.7.5 item 16, change last two lines to: TYPE(T3), SAVE :: X] 285:8. (Section 14.7.3) item (3) Add the following condition before ", and": "and the variables are not accessed by use or host association, do not have the ALLOCATABLE attribute, and either have the SAVE attribute or are declared in a main program, MODULE or BLOCK DATA program-unit" Rationale: (i)dummy arguments are never initially defined, they might be defined on entry - 14.7.5 item (20); (ii)variables inherited by use or host association have their initial definition status set by their parent, not by the USEr or internal proc (for instance, they might have been explicitly initialized in their home scope); (iii)ALLOCATABLE arrays are never initially defined; they can become defined on allocation - 14.7.5 item (16). 286:13.(Section 14.7.5) item (16) Change "ultimate component" to "direct component". Rationale: not just ultimate components can become defined in this manner, but top-level and intermediate ones for which default init has been specified. [Example: TYPE T1 INTEGER C1 END TYPE TYPE T2 TYPE(T1) :: C2 = T1(0) END TYPE TYPE T3 TYPE(T2) :: C3 END TYPE TYPE(T3), POINTER :: X ALLOCATE(X) ! According to the draft, nothing gets defined, because the ! only ultimate component is C1 of T1 (X%C3%C2%C1), and C1 ! does not have default initialization specified. ! With the change, the direct component C2 of T2 (X%C3%C2) has ! default initialization and is thus defined.] 286:21. (Section 14.7.5) item (19) Change "some components" to "any direct components". Rationale: this would define components "below" pointers, but these are not defined, only direct components are so defined. [Example: SUBROUTINE SUB TYPE T1 INTEGER :: C1 = 42 END TYPE TYPE T2 TYPE(T1), POINTER :: C2 END TYPE TYPE T3 TYPE(T2) :: C3 END TYPE TYPE(T3) X ! is unSAVEd local, not dummy etc. ! According to the draft, since some component (X%C3%C2%C1) has ! default initialization specified, it becomes defined on entry ! to the subprogram. But X%C3%C2 is a pointer! ! With the change, no part of X is default-initialized because ! no "direct component" has default initialization.] 286:23. (Section 14.7.5) item (20) Change "ultimate component" to "direct component". Rationale: same reason as item (16), similar example (just change X from a local pointer to a non-pointer dummy with INTENT(OUT)). 286:25. (Section 14.7.5) item (21) Insert "nonpointer" before "function". Rationale: if the function result is a pointer, nothing gets defined on entry regardless of default init. (Definition might occur if the pointer is ALLOCATEd, but not if it is NULLIFY-ed or pointer-assigned). 286:26. (Section 14.7.5) item (21) Change "ultimate component" to "direct component". Rationale: same reason as items (16) and (20), similar example (just change X to a non-pointer function result). GENERAL COMMENTS France: AFNOR strongly regrets that Numeric exceptions handling and processing are not included in the Committee Draft. Germany: Except when explicitly referring to the name of this standard or of any former Fortran standard and within section 1.9, "international standard" or "International Standard" should be replaced by "standard": xiii 16 xiv 23 3 24 Except within formal syntax and within examples, adjacent keywords containing an optional blank should always appear with a "small blank" instead of a "normal blank". The asterisk should always be that one from the Symbol font. There are several appearances of Palatino asterisks. Except within examples, a minus operator should not be set as a hyphen. There a several appearances of "hyphen-operators". Missing blanks around [, ], (, and ) in formal syntax: 110 29, 35, 36, 37 112 38, 40, 41, 42 113 8 There are (chapter-wise) different indentation methods for complete source lines within examples. Undefined technical term "format descriptor" in index: 346 delete item: "edit descriptors" see "format descriptors" 347 change item "format descriptors" into "edit descriptors", and move item together with all subitems to page 346. 347 insert item: "format descriptors" see "edit descriptors". Need for clarification regarding X3J3/95-007R1 ======================================= There is a restriction on page 60 lines 27-29 such that default initialization may not be automatically overridden by explicit initialization with DATA statement; it is strictly not allowed. There is no such restriction for default initialization and explicit initialization with type declaration statements. UK: Global Editorial Change: Change font for "FORTRAN 66" and "FORTRAN 77" to be consistently large "F" with "ORTRAN" in small capitals as in 1.5.2, pages 3-4.