J3/06-177r1 To: J3 From: Malcolm Cohen Subject: More editorial changes Date: 2006/05/11 1. Introduction This paper describes additional editorial changes which will be added to standing document 008, as well as describing the differences between 06-169 and 06-169r1. Those additional editorial changes which have been done to the 007 and which affect c05 are also included in 06-169r1. 2. Differences between 06-169 and 06-169r1 (excluding those noted in 3.) 2.1 Noted in 06-177 - Fixed broken cross-ref in the first sentence of 5.3.1. - Fixed "to received data" -> "to receive data" in 5.3.11, 1st para. - 5.3.11, Deleted the first of the paragraphs which started "The INTENT(OUT) attribute ...". (Left in by mistake - the second such paragraph covers everything.) - 5.3.12, Deleted extra space at the start of C533. Changed "generic name in one or more generic interfaces" to "generic name of one or more generic interfaces". - 5.3.20, Changed "to manage the interactions with the non-Fortran processes" to "to manage any interaction with non-Fortran processes" since there is not necessarily any interaction or indeed any non-Fortran process involved. 2.2 New to 06-177r1 - [73:6] "may be included" -> "may be specified" [73:7] deleted "may be specified". - [76:3] After "" inserted "in a type declaration statement". - Reworded C514 to be about the attribute and moved it to 5.3.16. - Extracted the guts of C532, turned it into a definition of "pointer association context", put it into C16 and referenced it in the revised C532. Deleted the guts of C540 and referenced the new term instead. - Rewrote the first three paragraphs of 5.3.12 to have less duplication and be more specific and less confusing (I hope!), as "The \mindex{attribute!INTRINSIC} \tdef{INTRINSIC attribute} specifies that the entity is an intrinsic procedure. It may be a generic procedure (\ref{D13:Generic intrinsic functions}), a specific procedure (\ref{D13:Specific names for standard intrinsic functions}), or both. If the specific name of an intrinsic procedure (\ref{D13:Specific names for standard intrinsic functions}) is used as an actual argument, the name shall be explicitly specified to have the INTRINSIC attribute. An intrinsic procedure whose specific name is marked with a bullet ($\bullet$) in \ref{D13:Specific names for standard intrinsic functions} shall not be used as an actual argument." Actually, the last sentence probably belongs in 13.6 - I might move it there later. - Deleted both "INTRINSIC," and "EXTERNAL," from C536, added a new constraint "A procedure with the POINTER attribute shall have the EXTERNAL attribute.". (Half of this is from the recent interps, the new constraint removes the need to call out INTRINSIC separately.) - Deleted the (non-ISO-directive-conformant!) first paragraph of 5.4, as it is no longer necessary or useful - in fact it is downright confusing. - Deleted C567 as it was (a) completely in the wrong place (b) overtaken by recent interps. - Changed [91:19] to just say a list of "entities". - in SAVE statement, [92:10], removed "or included within a common block named in the list" since it is already covered under the SAVE attribute, and is incomplete/confusing to boot. Rewrote the last paragraph to be less syntactic-specific, since that is again, potentially confusing. (The amount of confusing depends on what one thinks "all allowed items" really means.) "If a common block has the SAVE attribute in any scoping unit that is not a main program, it shall have the SAVE attribute in every scoping unit that is not a main program." (This rewording also avoids implying that it ought not to be given the SAVE attribute in the main program.) Moved this new sentence to be appended to the last sentence of the SAVE attribute. - [100:31-32] Replaced syntax "name has been declared in a SAVE statement" by semantics "has the SAVE attribute". The former was potentially confusing. - Deleted note 5.32 because (a) it is not surprising that one can use derived types in IMPLICIT, and (b) note 5.33 uses derived types in IMPLICIT already and makes a point that is actually useful! - Replaced "The ASYNCHRONOUS attribute may be conferred implicitly by the use of a variable in an asynchronous input/output statement (\ref{D9:Asynchronous specifier})." with "Use of a variable in an asynchronous input/output statement can imply the ASYNCHRONOUS attribute; see subclause (\ref{D9:Asynchronous specifier}).". - Changed "may be equivalenced only to objects of the same type and kind type parameters" to "shall not be equivalenced to objects of different type or kind type parameters". - Changed "may be equivalenced" to "shall be equivalenced only" twice in Note 5.35. Actually, I might delete that note later, as it is duplicative of the normative text in a fairly obvious way, i.e. it does not seem particularly explanatory. - In 5.7.2.3, first paragraph, Changed "A data object of type default character may be equivalenced only with other objects of type default character." to "A data object of type default character shall not be equivalenced to an object that is not of type default character and not of a character sequence type." Note that the first sentence appears to be incorrect, so I have taken the liberty of fixing it. In the next sentence, changed "objects" to "character objects", since length doesn't seem to make sense for character sequence type. - Changed "may be accessed" to "can be accessed" in 5.7.2 first para. But is it true? How can one access COMMON from a type definition? - Changed "The sequence may be extended only" to "The sequence shall be extended only". - Changed "may be storage associated only" to "shall be storage associated only". - Introduced initial "General" subclause to 5.3.6 DIMENSION attribute. - Moved 5.3.7-5.3.9 down a level. - Deleted the first paragraph of 5.7; it was non-ISO-directive-conformant unnecessary blather. Added a forward ref to 16.4.3 to the second sentence of 5.7.1. (If people really want the blather, we can have a 5.7.1 called "General", but it does not look necessary to me.) - Introduced initial "General" subclause to 5.7.1 EQUIVALENCE statement, and to 5.7.2 COMMON statement 3. Additional editorial changes These changes have all been applied to the 007 sources and will therefore appear in 06-007. Note that many of these changes are mandated by the current ISO directives. 3.1 Noted in 06-177 - No more "Sections"; removed "Section" and ":" from the chapter titles, and all appearances of "Section" in the text have been changed to "Clause" or "Subclause" as appropriate. (And many occurrences of "section" to "clause", but not all.) - 7.1.8.2 Integrity of parenthese, changed the enormously ambiguous "The sections that follow" (i.e. the whole rest of the standard) to "Subclauses 7.1.8.3 to 7.1.8.7". which is what it actually meant. - 7.2 Interpretation of operations Introduced "7.2.1 General" in accordance with the ISO directives. Changed "... in the following sections" (i.e. the whole rest of the standard) to "in subclause 7.2". (Note that this is not ambiguous when one follows the ISO directives, a clause or subclause is the whole thing - there is never any text between 7.2 and 7.2.1.) - In Annex C, fixed a hard-coded "Section 7" to "Clause \ref{D7:Expressions and assignment}". Actually, I'm not sure that it would not be better to make those 7.2.1 (where array expressions are defined to be elemental), plus 7.4.1.3 (where intrinsic assignment is defined to be elemental) would not be better for this one.. - Deleted C.1.1 Intrinsic and derived types. It was ancient stuff about how "this standard" was different from F77, and was not referenced from the main text. - 13.8.2 introduced 13.8.2.1 "General", reworded "following subclauses" to "subclause 13.8.2". It will get reworded more quite soon. - We variously use "ONLY option", "ONLY qualifier", "ONLY clause" and "ONLY specifier", all to mean the same thing. And "ONLY keyword". Changed them all to "ONLY option". - Changed three "If RESULT is specified" to "If RESULT appears". - 15.2, introduced 15.2.1 General and changed "The following subclauses" to "Clause \ref{D15:Interoperability between Fortran and C entities}". - 1.4 item (4), Changed "through" to "to". "Through" is not grammatical. (This change also improves the typesetting.) - Revised many lists to conform with the ISO directives (except for the one about when to use letters and when to use numbers). Thanks to Van for his help with this. [xiii] introduce by a complete sentence. [1:21-24] begin each item in lower case [1:27-2:7] begin each item in lower case [2:13-32] add a colon after "if" and begin each item in lower case [3:14] replace colon by period [4:9] replace colon by period [4:40-41] introduce by a complete sentence [6:12-14] introduce by a complete sentence [7:9-10] Replace by prose. [7:12-16] Replace by prose. "this document" -> "this part of ISO/IEC 1539". [7:17-18] Advising our future selves via the standard is inappropriate. Revised to say what I think we mean: "A future revision of this part of ISO/IEC 1539 might delete an obscolescent feature if its use has become insignificant." I am not really convinced we need even that. [7:19-20] Delete. If we are convinced that a feature is so bad we want to delete it without putting it on notice for a revision, we will do so, regardless of this text. [7:22] Delete. Fortran processors are REQUIRED to support these features, advising them to "support these features as long as they are widely used" is completely pointless. [12:1-3] begin each item in lower case [13:7-8] Replace "A generic interface block may also be used to specify that procedures may be invoked" with "A generic interface block can also be used to specify that a procedure can be invoked" because: "may" is only for permission, "can" is for possibility and capability. [15:9-10] Delete "The ... following:" (the previous sentence already introduces the list, this fragment was redundant). [23:5-12] Rewrite into prose. This could be left as nested lists, but it is more straightforward as prose. [27:1] replace colon by period [41:5] Change "may be used only in the following ways:" to "shall be used only". [41:28] Change "following meaning:" to "following meanings.". [42:8] replace colon by period [43:7] replace "For the default character type, the only constraints on the collating sequence are the following:" with "The collating sequence of the default character type shall satisfy the following constraints." [59:3] replace colon by period [61:9] replace colon by period [62:10-14] replace semi-colons with commas, end item (2) with "and". [66:23] replace colon by period [74:2-8] lowercase items in list [77:7] delete colon [80:11] replace colon by period [81:9-12] begin each item in lower case [100:19] replace colon by period [112:23] replace colon by period [122:6-18] begin each item in lower case [122:23-37] begin each item in lower case [123:39-124:3] replace the intro by "The associated target object is referenced if a pointer appears as"; then begin each item in lower case. [124:18] replace colon by period [125:13-34] begin each item in lower case [126:24-127:19] begin each item in lower case [138:18] Make the first condition an item in the list of conditions instead of buried in the intro to the list of conditions. [138:19-139:1] begin each item in lower case [141:7] replace colon by period [141:18] replace colon by period [142:9-23] begin each item in lower case [147:3] replace colon by period [150:6-8] begin each item in lower case [150:12] replace colon with full stop. [155:6-10] end each item but the last with semicolon; end the last item with a full stop. [158:39] replace colon by period [163:11] change colon to full stop. [166:33] change colon to full stop. [167:11] replace colon by period [168:12-20] Replaced with complete sentences. [171:26-28] begin each item in lower case. End each item but the last with semicolon. End the last with period. [172:13-17] begin each item in lower case. Insert a comma before "or" at the end of the first item. [173:17,32] replace colon by period twice [174:23,35] replace colon by period twice [177:24] replace colon by period [194:6,25] replace colon by period twice [197:17] replace colon by period [199:7] replace colon by period. [201:12] replace colon by period. [201:23] replace "a value as follows:" by "the value" [205:26] delete "any of the following conditions are met:", begin each item in lower case, end each item but the last two with comma, and end the penultimate item with ", or". [216:38-217:2] change "in the following cases" to "when", delete "when" from each item, end the first item with comma, and end the second item with ", or". [217:14-25] begin each item in lower case [217:32-45] begin each item in lower case [218:6-20] replace the first item (1) if the pad mode has the value (a) YES, the record... (b) NO, the input list item becomes undefined, then begin remaining items in lower case. [218:24-30] begin each item in lower case [221:11-12] made the list a plain sentence. [221:18-22] begin each item in lower case [224:27-28] made the list a plain sentence. [226:33] replace colon by period [228:18-20] begin first item in lower case, end with semicolon, begin second and third items with "the letter", and the secod item with semicolon, end the third with period. [228:23] Delete "of" [228:24] Insert a comma. [237:16] replace colon by period [237:28] Replace "then" with comma. [237:29-32] begin each item in lower case [238:29-30] made it an ordinary sentence. [239:2-7] begin each item in lower case [240:7-11] begin each item in lower case [240:23-26] begin each item in lower case [240:34+ in NOTE 10.30] delete "the following:" and begin each item in lower case, end the first item with comma, end the second item with ", and" and end the third item with a full stop. [242:8-13] begin each item in lower case [242:35-36] made it an ordinary sentence. [243:1] Changed "Neither nor may have kind type parameters specified." to "A kind type parameter shall not be specified for or .". [243:8-13] begin each item in lower case [245:13-16] begin each item in lower case [245:22-27] begin each item in lower case [247:11-16] begin each item in lower case [252:19-24] begin each item in lower case [257:23-258:6] begin each item in lower case [270:8-12] begin each item in lower case, insert a comma before "and" at the end of the first item [270:16-19] begin each item in lower case, insert a comma before "and" at the end of the first item [272:31] replace colon with period [273:16] replace colon with period [276:25-277:6] delistify top level [277:7+] delistify using "Otherwise" a lot. Move the notes to the end of the subclause. [278:7-21] Delistify and simplify slightly. [278:23-30] Delistify and simplify slightly. [278:35] replace colon with "using the following criteria." [286:5-8] begin each item in lower case [286:26-34] delete "in the following contexts:", begin each item in lower case, replace semicolons by commas. [364:24-30] append "the following types." to the intro. Replace the comma after the type name that begins each item by "is". [364:31-39] append "the following." to the intro. Precede the type names with "The type". [365:5-9] make it an ordinary paragraph since it's a one-item list. [365:11] append "the following." [365:12-31] Delete "This exception" from each item and join the paragraph top the name of the exception, giving "IEEE_OVERFLOW occurs when...." [367:7] replace colon with period [368:18] replace colon with period [393:14-15] Delete colon, start each list item in lower case [394:1] delistify [394:16,395:19] wording quibble: replace "will be" by "is". [395:20-25] delistify. [400:5-18] replace semicolons by commas. delete comma before "and" in (2)(b) [405:9-14] begin each item in lower case [406:3-10] delete "following" and colon from the intro, begin each item in lower case [407:2] replace colon with period [408:3-13] replace semicolons with commas [408:14-19] begin each item in lower case, replace semicolons with commas, end with comma instead of full stop. [408:20-21] change "Further," to "and". [411:14-31] begin each item in lower case, replace semicolons with commas [414:15-18] begin each item in lower case [414:21-30] begin each item in lower case [415:1-22] begin each item in lower case [415:3-5] replace "with the pointer" by ", the pointer is", insert comma before and, insert "is" before second associated, replace period at end by comma [416:8-24] begin each item in lower case, change colons to commas, including the erroneous full stop at line 15. [417:19] "may" -> "shall". Perhaps this should be "can"? [417:20-24] begin each item in lower case, add a comma. [419:5] replace colon with period [419:30-35] delistify. [419:39-420:5] begin each item in lower case, end all but the last with semi-colon, remove the "and" at the end of the penultimate item. [420:9] "as follows:" -> "by the following events.". [421:45] ditto [423:5-15] begin each item in lower case, replace semicolons by commas [423:33-424:2] lowercase, replace commas at ends of items by semicolons, delete "or", make it a bullet list. [426:19-37] Delistify. Successive qualified definitions do not need to be in a list, they work perfectly well without. [427:19] Demistify. The text says it all, a 2-item list is foggy. [431:23-27] Demystify. [434:15-17] Replace with "Not being an array.". [434:20-23] replace intro "A <> is", begin each item in lower case [434:26-30] begin each item in lower case, end the first two items with a comma, end the third item with ", or", in the first item delete the useless incorrect nonsense "may designate" junk. [437:6-7] replace non-ISO-directive-conforming lie with "The following Fortran 90 features are not required by Fortran 95, Fortran 2003, or this part of ISO/IEC 1539.". ROFL thinking what part of ISO/IEC 1539 they are required by, but them's thar brakes. I'm not entirely satisfied by this sentence but at least it is now true *and* conformant with the ISO directives. BTW, surely "A similar result" should be "A better result that actually makes sense unlike the F77 definition"? on line 10-11. [437:34] replace colon with period [437:34+1-4] replace table with bulleted list, yay! [435:35] Fix dated ref to our own standard, which is not and has never been called the "Fortran 90 International Standard". [438:4] replace colon with period [466:32] replace colon with period [469:24] replace colon with period [484:14-20] delete colon from intro, begin each item in lower case, end the first two items with a comma, and end the third item with ", and". [ac:throughout] Replace "I/O" with "input/output". [499:4-6] begin each item in lower case, replace semicolons with commas. 3.2 New to 06-177r1 [xiii] "this part of the standard" -> "this part of ISO/IEC 1539". [17:24] Simplify "any intrinsic type or derived type" -> "any type". [18:20] Simplify "any intrinsic type or derived type" -> "any type". [53:20+3] Delete excessive vertical space in Note 4.33. [55:0] Fix "Note 4.5.2.1" to "Note 4.25". [98:5] Delete this numbered blank line. [144:5-6] Reword C727 and C1229 to be the same as each other. [267:15-17] Reword C727 and C1229 to be the same as each other. [426:19-37] Move to [426:42+] so as to be in alphabetic order. [426:40-42] Put these two items into alphabetic order. [433:7] Fix cross-ref 4.5.1 to 4.5.3.3. [ac.somewhere] "non-interoperable" -> "noninteroperable" (ugh.) [c04.throughout] "this standard" -> "this part of ISO/IEC 1539". - Merged the introductory blather in clause 4 into 4.1 The concept of type, since it all fitted there. - Rewrote the incorrect statements about intrinsic and derived types in the introductory blather. Also fixed the incorrectness in the definition of derived types in c02 (both these places forgot that the language defines several derived types, viz in the IEEE modules and in ISO_C_BINDING). - Deleted note 4.1, as it doesn't say anything non-obvious or covered in much greater detail and specificity later on (and not that much later on, either). I'll reinstate it if people really think we need it, but I'd rather notes only explained things that are not obvious. - Introduced 4.4.1 Classification and specification to cover the opening blather of 4.4, and rewrote the weird list/table/sentence into a normal paragraph. - Introduced 4.4.4.1 "Character sets" for the opening paragraphs of 4.4.4 Character type. Could alternatively be called "Values and representation methods". - Introduced 4.5.1 "Derived type concepts" for the opening paragraphs of 4.5 Derived types. - Introduced 4.5.1.1 "Syntax" for the opening paragraphs of the previous 4.5.1, since that is entirely what it is about. - Introduced 4.5.2.1 "Declaration" for the opening paragraphs of 4.5.2 "Derived-type parameters". This was doubly in breach of the ISO guidelines, since there was a 4.5.2.1 without a 4.5.2.2. An alternative would be to delete the subclause heading 4.5.2.1 (Type parameter order). - Introduced 4.5.3.1 Syntax for 4.5.3 Components, since that it entirely what it is about. - Introduced 4.5.5.1 Declaration for 4.5.5 Final subroutines. - Introduced 4.5.6.1 Concepts for 4.5.6 Type extension. - Moved "A \si{specification-expr} shall be an initialization expression unless it is in an interface body (\ref{D12:Interface block}), the specification part of a subprogram, or the \si{declaration-type-spec} of a FUNCTION statement (\ref{D12:Function subprogram})." from "Type declaration statements" in clause 5, appending it to the first paragraph of "Specification expression" in clause 7. - Reworded "If an array bound or type parameter of a data object depends on the value of a \si{specification-expr} that is not an initialization expression, and it is not a dummy argument, such an object is called an \tdef{automatic data object}." as "An \tdef{automatic data object} is a nondummy data object with a type parameter or array bound that depends on the value of a \si{specification-expr} that is not an initialization expression." 4. Other changes to 008. None of these have as yet been done to the standard. Soon? - Consider changing "2.5 Fundamental terms" to conform to the ISO directives! - check every use of "may", as most of them are wrong. - Consider rewriting 2.3.4 Execution sequence so that all of the exceptions are in the list of exceptions, instead of only half of them. (RETURN, STOP and END are exceptions but called out in prose instead of being in the list; and worse, this makes the description hard to read.) - Rewrite item (1) of 2.5.5 Definition to make it true. - 3.1 Processor character set, why are "Control characters" and "Graphic characters" in bold (term definition font) when there is no definition? We are just using the terms from another standard - without reference... - Replace short outer-level enumerated lists with bullet lists, except when an individual list item is referred to elsewhere in the standard (this is obvious from the LaTeX source of the list). - Consider rewriting [217:11-26] and [217:29-45] into individual sentences. - Consider eliminating duplication between list-directed and namelist. - Consider changing "hold" to "apply" where it means the latter. - Rewrite the "elemental operator" nonsense in c14. There is no such thing. Furthermore, the module has to define (private) procedures in the generic sets - describe them. Ugh. - Rewrite the first sentence of 14.1 so that it is completely true instead of only partially. - Consider deleting 14.9.1 to 14.9.5 because they are unnecessarily duplicative and not formatted in accordance with ISO directives. - Consider deleting the tables in c13 that are both redundant and unnecessary. And not conformant with the ISO directives. - Consider rewriting [408:2-21] into several distinct paragraphs instead of one enormous structured sentence. - Replace I/O with input/output throughout. We decided on this already once, why are we still inconsistent? - Take a chainsaw to the glossary instead of a scalpel. - The opening sentence of "NAMELIST statement" misuses "may be". It is not talking about permission. - [33:4] "An intrinsic type is one that is defined by the language." is false. The language defines several derived types as well as the intrinsic types. - [423:41] Before "IOSTAT=" insert "ID=,". - Change "this standard" to "this part of ISO/IEC 1539" throughout. The former means ALL parts of ISO/IEC 1539, which currently includes varying strings and coco. ===END===