To: J3 J3/18-233 From: Malcolm Cohen Subject: Editor's report for FDIS (N2155) Date: 2018-July-17 1. Introduction This is the editor's report. Papers and other actions are listed in approximate order that they were done. Section 2 lists the actions taken from papers passed at meeting 216. Section 3 lists additional (thus unauthorised) changes made. Section 4 lists actions taken during typesetting; these sometimes included wording changes beyond "wordsmithing". 2. Papers passed by meeting 216 In order of application to the standard (approximately the order that the papers were passed). A simple "Done" means without any (deliberate) modification. 18-181 Done. 18-182 Done. 18-183 Done. 18-186 Done. 18-106 Done. 18-169 Done. 18-170 Done. 18-172 Done. 18-174 No edit in this paper. 18-178 Done. 18-185 DIFFERENT EDITS: "select-rankcase-stmt" -> "select-rank-case-stmt" "rank of selector" -> "rank of the selector". 18-171 Done. 18-175r1 Done. 18-176 Done. 18-177 Done. 18-179r1 DIFFERENT EDITS: intro: set "type" (before "argument") in code font, as we do in clause 18. c18: "or a positive value" -> ", or have a positive value" (bit hard to parse otherwise, one tends to read the second clause as "have the value of a positive value..." which is ugly) 18-184 (As it is clearer to state the processor dependency directly up front, and link to that, instead of having it buried in an implication inside STAT_FAILED_IMAGE...) EXTRA EDIT: page41, 5.3.6 Image execution states, p2, append "It is processor dependent whether the processor has the ability to detect that an image has failed.", and link the Annex A entry to here.) 18-188 Done. 18-206 No edit in this paper. 18-207 Done. 18-209 Done. 18-159r2 Done. 18-162r1 Hyperlinked the ELEMENTAL keyword. 18-189 Done. 18-190 Done. 18-191 Done. 18-195 Done. 18-196 Done. 18-197 Done. 18-198 Done. 18-208 Done. 18-180r1 Some hyperlinking done. 18-199 DIFFERENT EDITS: "produces a final upper cobound" -> "produces a value for the final upper cobound" (it does not produce a cobound as such!) Hyperlinking in the new sentence. 18-200 COMMENT/future: (editor thinks this is a pretty lousy paragraph even after the edit. The next sentence begins with "Otherwise" so should probably be semicolon-joined to this one. And maybe the second & third cases should be swapped. And/Or maybe it would look better as a bullet list. But I think it is technically okay and not worth further word- smithing in this revision.) Done. 18-201 Done. 18-202 Later review discovered that the final part of the edit (changing "shall be positive" to "is positive") was not done. This was not intentional, however the other sentences are worded with "shall", so is not worth correcting. 18-203 No edit in this paper. 18-211 Done. 18-121r1 DIFFERENT EDITS: first edit is to the 3rd bullet not the 4th; luckily enough context from the introductory witter! 18-166r1 Done. 18-192 Done. 18-193 Done. 18-194 Done. 18-204r1 DIFFERENT EDITS: I put the first edit under the bullet "Changes to features previously described by ISO/IEC TS 18508:2015" instead of "Features previously described by ISO/IEC TS 18508:2015". COMMENT: (I note that the example has "END TEAM (STAT=status)" immediately followed by "SYNC ALL (STAT=status)"; there ought to be a test for an error having occurred in between, something like "IF (status/=0 .AND. status/=STAT_FAILED_IMAGE) ERROR STOP 'UNEXPECTED ERROR'"). 18-210r2 Done. 18-225 DIFFERENT EDITS: Page 73, 7.5.3.2 Type parameter order, p2, "type parameter list" occurred twice, so I changed both of them. 18-226 Done. 18-212r1 Done. 18-213 No edit in this paper. 18-214 DIFFERENT EDITS: I made the two sentences into two paragraphs instead (I think that's what the ISO directives have done, judging by the inter-line spacing). 18-215 Although this paper was passed, it was superceded by 18-215r1, so not done itself. 18-216 Done. 18-217 DIFFERENT EDITS: Reworded the second "feature" bullet to say "Support for IEEE floating-point arithmetic has been updated to [ref]." COMMENT: I think it's okay to call it "IEEE floating-point arithmetic" here, as we're not actually making a normative reference. 18-218 WITTER: The comment is referring mostly to external references... According to ISO/IEC Directives, Part 2:2018, 22.4, references to clauses in the document itself should include the word Clause, vis "in accordance with Clause 4"; therefore these were NOT changed. However, references to numbered subclauses are not supposed to include the word "subclause". DETAILS OF EDITS ACTUALLY DONE: 5.3.2p1 [40:line 1] delete "subclause" (as editor I have to say that this particular case would be improved by keeping subclause, as there are references to Tables in the paragraph, and it makes the reader wonder whether 5.1 is the table or the subclause!) 6.3.1p3 [53] reworded "Subclause 6.3.2 applies only..." -> "The rules in 6.3.2 apply only..." (because starting a sentence with a number seems odd to me.) Ditto "Subclause 6.3.3..." COMMENT: Here we have "free form source" but 6.3.2 is "Free source form", and the discussion in 6.3.2.1, 6.3.2.2, etc. all say "free source form". This should say "free source form" too. 7.7 C7110 [92] delete "subclause" after "explicitly allowed in". 8.5.4p3 [98] delete "subclause" after "see". COMMENT: It is unclear to me why this says "see" instead of just having a reference in parentheses like we have in p2 and also at the top of the page in 8.5.2p3. 10.1.5.1 Intrinsic operation classification, p7 [154], delete "subclause" after "defined in". 10.1.8 Integrity of parentheses, p1 [162], delete "subclause" after "specified in", twice. EXTRA EDIT: inserted "the" before "rules for interpretation". 11.1.6 CRITICAL construct, p4 [187], deleted "subclause" after "specified in". 12.10.3 Inquire by output list, p2 [262], deleted "subclause" after "described in". 14.1 Main program, NOTE 14.1 [295], deleted "subclause" after "see". 14.2.1 Module syntax and semantics, NOTE 14.5 & 14.6 [p296], ditto twice. 14.2.2 The USE statement and use association, NOTE 14.10 (after p10) [298], delete "subclause" after "constraints in". Immediately following, NOTE 14.11, delete "subclause" after "see". 15.4.3.5 EXTERNAL statement, NOTE 15.12 [310], delete "subclause" after "see". 15.5.2.4 Ordinary dummy variables, NOTE 15.24 (second after p22) [319], ditto. 15.5.2.7 Pointer dummy variables, NOTE 15.28 [320], ditto. 15.6.3 Definition and invocation of procedures by means other than Fortran NOTE 15.45 [335], ditto. 16.10.2.1 General, p2 [p439], delete "subclause" after "described in". 17.11.49 IEEE_SUPPORT_DENORMAL, p5 Result Value, Case (i) [472], "subclause 3.2 of ..."->"..., 3.2". 17.11.59 IEEE_SUPPORT_SUBNORMAL, equivalent place [476], ditto. 18.2.3.7 C_SIZEOF (X), p5 Result Value [486], delete "subclause" after "9899:2011,". 18.3.1 General, p1 [487], Instead of deleting "Subclause" before "18.3", moved the entire contents (including the NOTE) of 18.3.1 to 18.1 (appending to the existing 18.1), and deleted the 18.3.1 heading. 18.3.2 Interoperability of intrinsic types, p3 [487], reworded ref to three subclauses of 9899. EXTRA EDIT: "table 18.2" -> "Table 18.2". COMMENT: The deletion of "subclauses" here is potentially ambiguous, as in theory 7.19 and 7.20.1 could be references to our own document but luckily we don't have subclauses with those numbers. If we did, we'd have to quote the whole C standard ref with each one. 18.3.4 Interoperability of derived types and C struct types, NOTE 18.13 [489], delete "subclause" in 9899 ref. 18.5.1 Summary of contents, p1 [494], delete "subclauses" after "specified in". 19.5.1.4 Host association, NOTE 19.8 [518], delete "subclause" after "see". B.3.1 General, p1 [542], "Subclause 4.4.3 describes the nature of the obsolescent features" ->"The nature of the obsolescent features is described in 4.4.3". 18-219 EXTRA EDITS: also changed document number (header page only) to N2155 also changed document type to FDIS also changed date to 20018-07-14 18-220r1 DETAILS OF EDITS ACTUALLY DONE: Terminological notes are different from normal notes, they can have normative text, and have to begin "Note N to entry:". I put this on the same line, not bold, and made the box full-width to look a bit more like ISO practice. For references to another NOTE in the same subclause, it will be plain "NOTE n"; for references to a NOTE in a different subclause, it has to be "subclausenumber, NOTE notenumber". 7.5.4.6 Default initialization for components, p6 [78], NOTE 2 is in this subclause, NOTE 1 is in this subclause. EXTRA EDIT: NOTE 3 in this subclause refers to NOTE 2 with an extra space between "2" and ":"... deleted the extra space. 7.5.4.7 Component order, NOTE 1 [80], "NOTE 1" refers to 7.5.3.2, NOTE 1. 7.5.7.3 Type-bound procedure overriding, NOTE 1 [87], "NOTE 3" refers to 7.5.5 NOTE 3. 7.5.10 Construction of derived-type values, NOTE 2 [89], "NOTE 4" refers to 7.5.7.2 same subclause, NOTE 3 [89], "NOTE 1" refers to 7.5.4.4 Pointer components NOTE 1. same subclause, NOTE 4 [90], "NOTE 1" refers to 7.5.2.1 Syntax of a derived-type... NOTE 1. EXTRA EDIT: This has a very bad line break (between NOTE and 1) so changed "illustrates" to "shows", to get it to fit on one line. same subclause, NOTE 5 [90], "NOTE 1" refers to 7.5.3.1 Type parameter definition statement NOTE 1. 7.8 Construction of array values, NOTE 3 [94], "NOTE 1" refers to 7.5.2.1 Syntax of a derived-type definition NOTE 1. same subclause, NOTE 4 [94], "NOTE 1" refers to 7.5.4.2 Array components NOTE 1. EXTRA EDIT to that note: "rank-2" -> "rank-two". 8.2 Type declaration statement, NOTE 1 [97], "NOTE 1" refers to 7.5.3.1 Type parameter definition statement NOTE 1. 8.6.7 DATA statement, NOTE 1 [115], "NOTE 1" refers to 7.5.2.1 Syntax of a derived-type definition NOTE 1. same subclause, same note, "NOTE 4" refers to 7.5.4.6 Default initialization for comp... NOTE 4. 9.2 Variable, NOTE 1 [129], refers to 7.5.2.1, NOTE 1. 9.4.5 Type parameter inquiry, NOTE 2 [133], "NOTE 1" refers to 7.5.3.1 Type parameter definition statement NOTE 1. Table 9.1 [135] had two notes with no resemblence to the ISO requirements! Rewrote entirely, with lots of changes to the table proper: centred "Rank" column, widened whole table, used \vdots instead of manual fake vdots, extra vertical space around the horizontal lines, modified rank-15 line to be much less extravagant (deleted 3rd line, squashed last 2 into 1). 10.1.5.1 Intrinsic operation classification, Table 10.2 [154], single note does not conform to ISO. However, since the type codes are information that might be "considered indispensable for the use of the document", it should be a normal paragraph not a note. Turned into a normal paragraph. Since I'm here, turned the two-line headings into single-line headings and inserted more vertical space around the horizontal lines to improve the layout. 10.1.7 Evaluation of operands, NOTE 2, "NOTE 1" is a reference to the NOTE 1 in this subclause. 10.2.1.3 Interpretation of intrinsic assignments, Table 10.9 [169], "Note:" does not conform to ISO. Text nearly runs into horizontal lines (as usual). Fixed "Note", inserted more vertical space. COMMENT: It would be simpler to say these were "intrinsic functions" or "standard intrinsic functions" than the current "generic names of functions defined in 16.9", but I didn't change that. 10.2.2.5 Examples, NOTE 1 [174], "NOTE 1" refers to 15.4.3.6 Procedure declaration statement NOTE 1. 11.1.7.6 Examples of DO constructs, NOTE 3, "NOTE 2" refers to this subclause. 11.1.11.3 Examples of the SELECT TYPE construct, NOTE 2 [204], "NOTE 1" refers to this subclause. 15.4.3.6 Procedure declaration statement, NOTE 1 [312], "NOTE 1" refers to 10.2.2.5 Examples NOTE 1. EXTRA EDIT: Renamed 10.2.2.5 Examples to be 10.2.2.5 Examples of pointer assignment statements. 15.5.2.4 Ordinary dummy variables, NOTE 3 [318], "NOTE 4" refers to 8.5.10 INTENT attribute NOTE 4. 16.9.61 DIGITS (X), p6 [375], "NOTE 1" refers to 16.4 Numeric models NOTE 1. 16.9.68 EPSILON (X), p6 [378], ditto. 16.9.75 EXPONENT, p6 [381], ditto. 16.9.80 FRACTION, p6 [384], ditto. 16.9.86 HUGE, p6 [388], ditto. 16.9.126 MAXEXPONENT, p6 [403], ditto. 16.9.132 MINEXPONENT, p6 [406], ditto. 16.9.139 NEAREST, p6 [411], ditto. EXTRA EDIT: Reworded here "on a machine whose representation is that of the model" -> "on a machine whose representation for default real is that of the model" (a "machine" doesn't have a representation, its real kinds do). COMMENT: Could probably be shortened to "for reals whose representation is that of...") 16.9.151 PRECISION. p6 [416], "NOTE 1" refers to 16.4 Numeric models NOTE 1. 16.9.154 RADIX, p6 [417], ditto. 16.9.158 RANGE, p6 [419], ditto. COMMENT: The example here is poor. The formulae do not explain the result because they give the answer in powers of 2, but it is the decimal range! Should add parenthetical "approx=..." for each one so the reader can see what those values are! 16.9.164 RRSPACING, p6 [422], "NOTE 1" refers to 16.4 Numeric models NOTE 1. 16.9.166 SCALE, p6 [423], ditto. 16.9.171 SET_EXPONENT, p6 [426], ditto. 16.9.180 SPACING, p6 [429], ditto. 16.9.191 TINY, p6 [434], ditto. 18.3.6 Interoperability of array variables, NOTE 4 [491], "NOTE 4" refers to 18.3.7 Interoperability of procedures... NOTE 4. C.10.5 Polymorphic Argument Association, p1 [588], "NOTE 4" refers to 7.5.7.2 Inheritance NOTE 4. EXTRA EDIT: C.10.6 Rules ensuring unambiguous generics, p3 [589], "later in this note" -> "later in this subclause" (we are not in a "note"). 18-221 DIFFERENT EDIT for Page 42, 5.3.7 Termination of execution, p2, "also may be initiated" -> "can also be initiated" (reads better to me). EXTRA EDIT: Page 43, 5.4.1.2 Derived type, p1, (additional operations...) "shall be defined" -> "can be defined" (capability not requirement) COMMENT: "are needed" should probably be "are wanted". COMMENT Same page, 5.4.2 Data value, p1, I think "can assume" should be "can take", i.e. the derived case should be more like the intrinsic case. EXTRA EDIT: Page 45, 5.4.6 Array, p3, "may be reshaped" -> "can be reshaped" (capability not permission) EXTRA EDIT, Page 47, 5.5.6 Operator, p1, (additional operators) "may be defined" -> "can be defined" (capability not permission). COMMENT: Page 50, 6.1.6 Other characters, p1, The first part of this sentence could be rewritten, viz "Additional characters may be representable in the processor, but shall appear only..." ->"If additional characters are representable in the processor, they shall appear only..." or "Other graphic characters in the processor character set shall appear only..." because I don't think we need to give a processor permission to have additional representable chars, given that 6.1.1p1 already says the "character set is processor dependent". EXTRA EDIT Page 58, 7.3.1 Relationship of types and values to objects, p2, Deleted the second sentence of this para, as it seems completely superfluous to requirements, viz it says less than the first sentence already does. COMMENT Page 65, 7.4.4.2 Character type specifier, p3, On second thoughts I am unconvinced that this permission is necessary or useful in any way... so it might be better expressed as a capability or something. No concrete suggestion, I just don't like it. COMMENT Page 75, 7.5.4.1 Component definition statement, p1, For character length, it can only be overridden because leaving "len" out of the character type-spec specifies a length of one. COMMENT: Page 82, 7.5.5 Type-bound procedures, p5, Since not all type-bound procedures are identified by a binding name (as specified by the last sentence of this paragraph), I am unconvinced that this is right. Still, it's better than before.) DIFFERENT EDIT: [83], same subclause, p8, The text "may be specified" does not appear, it is "may be explicitly". (I still changed "may" to "can" though.) COMMENT Page 95, 8.1 Attributes of procedures and data objects, p1, Normally I would prefer "might have" to indicate possibility, reserving "can" for capability, but I guess this is ok as capability. EXTRA EDIT: p95, 8.2 Type declaration statement, p1, "may be overridden" -> "can be overridden" (on further reflection, I decided that the sentence cannot plausibly be read as giving permission. Proper English would be "could", but "can" is ok) DIFFERENT EDIT: Page 96, 8.2 Type declaration statement, p2, "can be specified or overridden" (twice). (I think that this works better as capability rather than giving permission for overriding) COMMENT Page 124, 8.10.1.3 Equivalence of default character objects, p2, I still think this is redundant and could be deleted. DIFFERENT EDIT Page 126, 8.10.2.4 Common association, p1, "and" does not appear here, it's "association". (still changed "may" to "can"). EXTRA EDIT: Page 293, 14.1 Main program, C1401, Un-ran-on the sentence, viz "and, if included, shall be" -> ". If included, it shall be". 18-222 Done. 18-223 No edit in this paper. 18-224 Done. 18-227r1 Done. 18-229r1 NOTE: I substantially retypeset the E&D, EN and ES editing exponent tables to improve their appearance, including extra vertical space between the text and the horizontal lines. Also forced them not to be split across pages; they are short tables, breaking across pages looks worse than a bit of whitespace at the bottom of the preceding page. 18-205r3 EDITOR: Missing edit to note the incompatibility with Fortran 2008. 4.3.3p9+ inserted new para "Fortran 2008 permitted the processor to use a common pseudorandom number generator for all images. This document requires separate seeds on each image for the pseudorandom number generator." DIFFERENT EDIT: 16.7p4, page 348 Standard Generic Intrinsic procedures, The wording here was really terrible on so many levels. It started wittering about different states without saying what the state is (it finally said that at the end!). Unnecessary plural. Second sentence nonsense as there was no antecedent for "no other image's". The state does not "determine the sequence of... numbers generated", it only determines the sequence that will be subsequently generated. Rewrote, but later decided that it belongs in RANDOM_SEED, not here at all, so deleted the text from here, see AFTERWARDS. 16.9.155p3, page 416, RANDOM_INIT (Arguments) Inserted "CALL" before each of the supposed calls to RANDOM_INIT. "a call of" -> "invoking" (4 times) COMMENT: Do cases (iii) and (iv) not need "with the same execution environment"? 16.9.155p4, page 416, RANDOM_INIT (Example) "current image" forsooth! you mean "invoking image". Unless there is no parallel execution... terrible wording for program execution and "other invoking images [sic]". Rewrote. EXTRA EDIT: To RANDOM_SEED, 1st example, "Processor"->"Processor-dependent" (it does not make sense as is) A.2p1, page 535, Processor Dependencies EXTRA EDIT: bullet about RANDOM_INIT, "the value assigned to the pseudorandom number generator" ->"the value assigned to the pseudorandom number seed" (actually just "the value assigned to the seed" would be sufficient). AFTERWARDS: deleted 16.7p4 which after modification and wordsmithing read "The pseudorandom number generator on each image has a state which determines the sequence of pseudorandom numbers that will be subsequently generated. The state on an image is independent of the state on any other image. A reference to RANDOM_INIT, RANDOM_NUMBER, and RANDOM_SEED can update the state on the invoking image; the state on any other image is unaffected." BECAUSE: It is irrelevant witter. Once RANDOM_SEED has been fixed to say that there is one seed on every image, it all follows. INSTEAD, in RANDOM_SEED, after "maintains a seed" inserted "on each image", and footnoted the end of the sentence with "These three procedures only affect the value of the seed on the invoking image." LATER, RANDOM_INIT: Description changed to "Pseudorandom number generator initialization" as the previous description with the definite article could be misunderstood to mean it initializes it for the whole program, not just for the invoking image. RANDOM_SEED: Description changed to "Pseudorandom number generator control" for the same reason, and also because "Restart or query" is unnecessary detail. 18-230 Done. 18-231r1 Done. 18-215r1 Page 135, 9.5.3.3 Array sections, (Edit said: Insert subclause heading "9.5.3.3.1 Section subscript lists".) COMMENT: This is not really quite right (p2 is without a section subscript list), but I guess it will do for now. DIFFERENT EDIT: Page 569, C.9.2 Dependent compilation (14.2), Inserted subclause heading "C.9.2.1 Separate translation" and not "C.9.2 Separate translation". 3. Additional unauthorised changes The editor did the following which came to his attention: (1) p384, 16.9.84 GET_ENVIRONMENT_VARIABLE, p3 Arguments, VALUE, This had the form "A or B or C". Inserted comma between "VALUE is assigned all blanks if the environment variable does not exist or does not have a value" and "or if the processor does not support environment variables." (2) Somewhere, changed classification of IMAGE_STATUS in the table in clause 16, supposed to be classed as Elemental (that's what it says in its own subclause) (3) 11.1.3.3 Other attributes of associate names, p4, has "If the selector has the OPTIONAL attribute, it shall be present." (This para applies to ASSOCIATE, CHANGE TEAM, SELECT RANK, SELECT TYPE.) However, it does not link to the restrictions on actual arguments not present, and the text there misses out CHANGE TEAM (it has the others). And it is otherwise a duplicate of the restrictions there. The duplication should be removed, the list should be fixed in the proper place, and there should be a cross-reference. Therefore, EDITS: 11.1.3.3 Other attributes of associate names, p4, Replace "If the selector has the OPTIONAL attribute, it shall be present." by "The associating entity does not have the OPTIONAL attribute. If the selector has the OPTIONAL attribute, it cannot be absent (15.5.2.12)." That ref is "Argument presence and restrictions on arguments not present". 15.5.2.12 Argument presence and restrictions on arguments not present, p3, item (10), After "ASSOCIATE," insert "CHANGE TEAM," making that item read "It shall not be used as the selector in an ASSOCIATE, CHANGE TEAM, SELECT RANK, or SELECT TYPE construct." (4) It is clear from the description of SELECT RANK that its associate name identifies a construct entity, however, it is missing from 19.4 "Construct and statement entities". There is also a typo in 19.4 p1. Also, there is no statement about the declared type of an associate-name of SELECT RANK. This is an omission that should be fixed. Finally 19.4p1 is ridiculously long, and can be usefully split. Therefore, EDITS: 11.1.10.3 Attributes of a SELECT RANK associate name, before p1, insert new paragraph "The associating entity (19.5.5) assumes the declared type and type parameters of the selector. It is polymorphic if and only if the selector is polymorphic." (19.5.5 is "Establishing associations") and delete the cross-reference "(19.5.5)" from the old p1 (new p2). 19.4 Statement and construct entities, p1, after "FORALL or DO CONCURRENT" insert "construct", and change "as an associate-name in a SELECT TYPE or ASSOCIATE construct" ->"as an associate-name in an ASSOCIATE, SELECT RANK, or SELECT TYPE construct" making the whole paragraph read "A variable that appears as a data-i-do-variable in a DATA statement or an ac-do-variable in an array constructor, as a dummy argument in a statement function statement, or as an index-name in a FORALL statement is a statement entity. READABILITY EDIT: Delete everything after the first sentence of 19.4p1 and combine it with the second paragraph, thus reading "A variable that appears as a data-i-do-variable in a DATA statement or an ac-do-variable in an array constructor, as a dummy argument in a statement function statement, or as an index-name in a FORALL statement is a statement entity. Even if the name of a statement entity is the same as another identifier and the statement is in the scope of that identifier, within the scope of the statement entity the name is interpreted as that of the statement entity." The existing paragraph p3 becomes the new p2, and p1-p2 only talk about what statement entities are (and what restrictions on them). Insert the deleted part of p1 except for the final sentence, afterwards, where it will read: A variable that appears as an index-name in a FORALL or DO CONCURRENT construct, as an associate-name in an ASSOCIATE, SELECT RANK, or SELECT TYPE construct, or as a coarray-name in a codimension-decl in a CHANGE TEAM construct is a construct entity. A variable that has LOCAL or LOCAL_INIT locality in a DO CONCURRENT construct is a construct entity. An entity that is explicitly declared in the specification part of a BLOCK construct, other than only in ASYNCHRONOUS and VOLATILE statements, is a construct entity. A USE statement in a BLOCK construct explicitly declares the entities accessed by use association to be construct entities. Insert the final sentence as a subsequent paragraph: Two construct entities of the same construct shall not have the same identifier. Same subclause, move p8 "...SELECT TYPE..." to follow p10 "...CHANGE TEAM..." (they are then in alphabetic order) Insert new paragraph between p10 and the moved p8: "The associate name of a SELECT RANK construct has a separate scope for each block of the construct. It has the attributes specified in 11.1.10.3." (Attributes of a SELECT RANK associate name) (5) Reading over page 78-82 because of bad page splits, I noticed that NOTE 2 in 7.5.5 is misleading: it said "the accessibility of a data component is not affected by a PRIVATE statement in the type-bound-procedure-part" This is misleading because it sounds like procedure pointer components are affected... but they are not. EDIT: Deleted "data" in that NOTE. (6) Change "struct type" (usually preceded by "C") to "structure type"; the former is just wrong, the words "struct type" do not even appear anywhere in the C standard! Many changes across the document. No, I'm not going to list them. 4. Typesetting actions These are mostly identified by the page number. Clauses 1-4: Forced all of 4.1 "Text conventions" to be all on the same page (it's short and there are no good break points). Clause 5: Previous typesetting still okay, except that one \DISLongPage was no longer needed. Clause 6: No special typesetting required. Clause 7: Previous typesetting okay up to 7.4.3.3 Complex type, where NOTE1 was broken badly. [60] Used \needspace to push the note onto the next page. 7.4.4.4 Collating sequence, p2 could be broken better... [63] used itemise instead of itemize, so two items get onto the page. 7.5.2.1 Syntax of a derived-type definition, and 7.5.2.2 Accessibility, bad break in the second NOTE, [66] rewrote both NOTEs so they look nicer and it fits better. 7.5.2.3 Sequence type, both NOTE 1 and NOTE2 are ugly (NOTE 2 in particular is a wall of text), so [67] Prettified NOTE 1, made paragraphs in NOTE 2. [68] Prettified the next two NOTEs so that all three fit on the page. [70] needs to be short as a constraint is split badly. NOT YET DONE. [70] C748 at bottom of page is an orphan (and a widow at the top of 71). Fixed by reformatting NOTE 1 to 7.5.3.2 Type parameter order.. Also indented the code in this and the preceding two NOTEs to column 7. [73] R743 component-initialization is split badly (widow at top of 74). Reformatted the preceding NOTE to get a little more space. Also indented code in several NOTEs to column 7. [74] Bottom of page, NOTE 1 is one line too long. Reformatted slightly. [76] NOTE4 is split badly, but it needs a lot of space. Rewrote NOTE 2 (much shorter), reformatted NOTEs 3 & 4. It still splits across the page, but the split is better now. [80] Widow - last line of 7.5.6.3 When finalization occurs, p8 is on the next page. (so is the single-line NOTE!) Made the page quite a bit longer so it will fit. Reformatted NOTE 2 in 7.5.7.1... [82] NOTE splits badly, but now there is a bit more room, reformatted to split it better (it's too big to fit on the page in this position). [85] Indented code in NOTE 2 and in remaining notes in this clause. [87] Reformatted NOTE 4 in 7.6, now we get the first BNF rule of 7.7 on the page, not just the 1st para. [88] Lengthened page slightly to get the last BNF rule (R776) onto it). Reformatted NOTE 1 and NOTE 2. [92-93] Reduced vertical spacing in NOTE so that all of 8.5.1 fits on the page. [95] 8.5.6.1 General, reformatted NOTE 1-3 to improve layout. [98] reformatted 8.5.7 NOTE 1 and 8.5.8.1 NOTE 2 to improve layout. [101] 8.5.10p1 is split across pages, but 2 lines on each page. Reformatted the NOTE to improve layout. Deleted "USE PERSON_MODULE" from the NOTE (it conveys no info, and we have no PERSON_MODULE anywhere else), so the NOTE fits on the page properly. Maybe I should have changed "TYPE(PERSON)" to "TYPE(MYTYPE)" as well, but I left that alone. [103] Reformatted NOTE 3 to improve layout. [104] Indented code in NOTEs, but did not reduce vertical space (reducing it would get the first para of 8.5.15 onto the page, but that looks slightly worse (we would need to also get the first constraint on for it to be an improvement). COMMENT: NOTE 1 in 8.5.12 is not interesting and takes lots of space. Why not just put the cross-ref to PRESENT into para 1 and delete the NOTE? [105] Reformatted NOTE to improve layout. [106] Reformatted NOTE 2 to improve layout. [108] Reformatted all 3 NOTEs on this page to improve layout. Put "... definitions for our own entities and module procedures" in italics so it looks less like code. [111-end of clause] Reformatted all the NOTEs to improve layout. [117] NOTE 2: "IMPORT,ALL" does not "confirm the default rules", it imports everything (the default rules being that only things not locally declared are imported). EXTRA EDIT: Delete "confirm the default rules and". NOTE 2 is still split badly onto the next page, so shortened the final comment and lengthened the page a bit. [124] 9.4.1 NOTE 1, reformatted, put explanations in roman font not code font (they're not comments as not preceded by "!"). [125] 9.4.2 NOTE 2, put explanations in roman font not code font. [126] 9.4.4 NOTE 1, reformatted, turned comments into (roman font) explanations, hyperlinked and indexed the intrinsics which are important and relevant here. Shortened page 126 to stop 9.4.5 NOTE 2 from creeping onto this page (with only 1 line). [127] 9.4.5 NOTE 2, reformatted ditto. [128] reformatted 9.5.3.1 NOTEs 1 and 3, in the latter, turning explanation into roman font. [129] reformatted 9.5.3.3.2 NOTE 1. [130] reformatted 9.5.3.3.3 NOTE 1. Noticed a forbidden "shall not" in this NOTE - replaced with "cannot". [131] reformatted 9.5.4 NOTE 1, turning code comments into roman font explanations Lengthened page to avoid orphan on next. [132] reformatted 9.6 NOTE 1. Lengthened page to avoid bad split with C938. [133] NOTE 1. COMMENT: "! Not allowed, because it is not ! necessarily executed on image Q." is nonsense. It's not allowed because it is forbidden by a constraint. Everywhere else where we have things that depend on runtime values having a specific value (or range of values), it's valid as long as the runtime values are equal (or in the range). The *reason* for the constraint is that it prevents that error without any loss of functionality, but the reason the example is wrong is because of coindexing (forbidden by constraint). Although the reasoning behind the constraint has some technical interest, it is not relevant to the language and not worthy of comment in the standard. Actually the first part of the NOTE is spuriously limited too: it applies to pointer components just as much as allocatable. And the first example given isn't a component and is thus uninteresting. Therefore, EXTRA EDIT: Simplified the initial sentence: "If a coarray is of a derived type that has an allocatable component, the component can only be allocated by its own image:" ->"A pointer or allocatable component of a coarray can only be allocated by its own image." Changed the nonsense comment to "Not allowed, because it is coindexed". Also changed the comments to (roman font) explanations. This shortened the NOTE by 2 lines, so para 5 fits fully on the page. [134] Reformatted NOTE 2. [136] Reformatted 9.7.3.1 NOTE 1. [137] Reformatted NOTE 1. ***Done to the end of clause 9 [139] [141] Reformatted 10.1.2.4 NOTE 1, so improve layout and keep it on the page without lengthening. [144-145] 10.1.3 Increased vertical space in Table 10.1, Reformatted NOTEs 1-3. [146] 10.1.4 NOTEs 1 & 2 reformatted. Lengthened the page to keep the last line of para 6 on it. [148] Increased row spacing in Table 10.3. [149] 10.1.5.2.4 Reformatted NOTEs 3 & 4. [150] Increased row spacing in Table 10.4. Changed text in 10.1.5.3.1 NOTE 1 to avoid excessive horizontal spacing. Reformatted 10.1.5.3.2 NOTE 1. Increased row spacing in Table 10.5 [151] Increased row spacing in Table 10.6 Reformatted 10.1.5.4.2 NOTE 1. [152] Increased row spacing in Table 10.7 [160] Increased row spacing in Table 10.8 [161] Reformatted NOTEs 1 and 2. This makes the notes look significantly better, but now the first line of NOTE 3 creeps onto the page. Shortened the page to stop that. (Page shortening/lengthening is a last step process that is easily reversed. It's better to have a bit of excess space at the bottom of the page than inside the notes.) [162] Reformatted NOTEs 3 and 4. [167-168] NOTE 2 is fairly badly split across pages, but adding or Subtracting a single line would not make a significant improvement. So left as is. [169] 10.2.3.1 General form of the masked array assignment NOTE 1, "Examples of a masked" -> "Examples of masked" (more than one!). On this page, 10.2.3.2 NOTE 1 is poorly typeset - lots of internal whitespace etc.. Due to "code lumps", rewording doesn't help (makes it worse unless drastic rewording). Lengthened the page to get all of p7 onto it. [170] Reformatted NOTE. [173] 11.1.1 NOTE 1, reformatted. [175] 11.1.3.4 NOTE 1, reformatted. [176] 11.1.4 NOTE 1, reformatted. [179-180] 11.1.6 NOTEs 1 and 2, reformatted. Added ellipsis to "! Work on JOB" as there seems to be code elided or missing here. Add ellipsis to the blank line after the declarations ditto. Shortened page 179 to stop NOTE 2 from creeping onto it. [183] 11.1.7.4.2 NOTE 1, reformatted and turned silly spaced-out dots into a proper ellipsis, and indented them by two spaces since they are the body of the loop. [186-187] 11.1.7.6 NOTEs 1-5, reformatted. Changed dots to proper ellipses. Inserted missing ellipsis in NOTE 4. [190] NOTE 2, de-indented pseudo-ellipsis and turned into real ellipsis. NOTE 3, the "three fragments" are not identified or easily (to the eye) identifiable, especially when this NOTE gets split across a page boundary. Added blank line between each, and a comment "! Fragment one" etc to each. Fortuitously does not split any individual fragment across the page. [193] NOTE 2, changed dots to proper ellipses, Changed overlay-casual "if you want to do" -> "for". [195] 11.1.11.3 NOTEs 1 and 2, reformatted. Deleted initial blank line in NOTE 1 COMMENT: Why does this cryptic example not have any description? Shortened page to stop NOTE 2 from creeping onto it. COMMENT: That would not be necessary if NOTE 1 had a line of explanation! [198] 11.5 NOTE 1, reformatted. This note also contains leftovers from shared generators, and excessively precise statements. Changed "an independent 1/1000 chance of failure every second if the random number on different images are independent" ->"approximately a 1/1000 chance of failure every second". (The code only executes "about once a second".) "allows a program to test" -> "enables testing of" (The statement is not giving permission!) [200] NOTE 1, dots -> ellipsis. [202] NOTEs 2 and 3, dots->ellipsis, plus remove para break in NOTE 3. Reformatted 11.6.5p2 to use inlinepara instead of old manual coding. Shortened page a lot to push p3 onto next. [203] 11.6.5 NOTE 2, reformatted [205] 11.6.9 NOTEs 1 and 2, reformatted. [207] 11.6.10 NOTE 3, reformatted. Ellipsis. Explanation in italics instead of Fortran comment. ***Finished clause 11. [217] 12.5.1 NOTE 1, reformatted. [220] 12.5.6.2 NOTE 1, reformatted [224] 12.5.7.2 NOTE 1, reformatted. [225] 12.6.1 NOTE 1, reformatted. [226] 12.6.2.1 NOTE 1, reformatted. [227] 12.6.2.2 NOTE 1, reformatted. Reformatted 12.6.2.5p4 to have less vertical space. [230] 12.6.3 NOTE 1, suddenly noticed that this NOTE contains a forbidden requirement (shall). COMMENT: Why is this NOTE even here? These are all prohibited by R1216 and C1232, that is, they are syntax errors. Changed "shall not" to "cannot", but really, IMO this NOTE is not useful and can be deleted. NOTE 3, reformatted. [231] NOTE 5, reformatted. [234] 12.6.4.5.1 NOTE 1, reformatted. Shortened page to prevent 12.6.4.5.2p5 widow [236] 12.6.4.8.2 widow: shortened page [240] NOTE 8 reformatted. [241] NOTE 9 reformatted. [243] 12.7.1 NOTE 1, Deleted "such conditions are" and "they are" to shorten the NOTE, as they are completely superfluous as well as unnecessary. This avoid splitting a BNF rule across pages. [244] 12.8.2 NOTE 1, reformatted. [245] 12.8.3 NOTE 1, 12.8.4 NOTE 1, reformatted. Lengthened page to prevent widow+orphan. [246] 12.8.4 NOTE 2, reformatted. somewhere, NOTE 3, reformatted. [255] NOTE reformatted and shortened to avoid final NOTE going over page. [256] 13.2.1 NOTE 1, reformatted. [257] NOTE 2, contains a lot of forbidden requirements (shall). "care shall be taken" -> "care needs to be taken" "shall be written" -> "are needed" "shall be written" -> "are needed" (second occurrence). reformatted the note. [260] 13.4 NOTE 3, reformatted, "an output list of" -> "the output statement" (it's a statement not just a list) NOTE 4, reformatted. [264] Allowed Table 13.1 to span the page boundary, as there was rather a lot of white space at the bottom of 264 and 265 otherwise. [266] 13.7.2.3.4 NOTE 1, reformatted. 13.7.2.3.5 NOTE 1 similarly. [267] 13.7.2.3.6 NOTE 1 similarly, correcting the lack of left-justification in the last result. [268] NOTE 1, "0" -> "zero". "the two representable" -> "the two nearest representable" Lengthened page to avoid orphan on next. [276] NOTE 3, ellipsis. Emboldened the tabular headings. [281] NOTE 1, reformatted, emboldening. [264] 13.7.2.3.3 E and D editing, para 4, end. Change "table 13.1" to "Table 13.1". [265] 13.7.2.3.4 EN editing, para 5, end. Change "table 13.2" to "Table 13.2". [266] 13.7.2.3.5 ES editing, para 5, end. Change "table 13.3" to "Table 13.3". [283] 14.1 NOTE 2, reformatted (indentation, spacing, ellipsis). [286] NOTE 6, reformatted. [294] 15.4.2.1 NOTE 2, reformatted. [295] 15.4.3.4.1 NOTE 1, reformatted. [295-296] 15.4.3.4.2 NOTE 1 is badly split, but there is no easy solution so left. [296] 15.4.3.4.2 NOTE 1 combined the last two lines to save space, and in 15.4.3.4.3 NOTE 1, reduced vertical space to get all of NOTE 2 onto the page. [297] tried shortening the page to prevent the item (4) widow... [299] There was a blank line as well as a paragraph break between R1518 initial-proc-target and C1515. Deleted the extra blank line. [300] 15.4.3.6 NOTE 1, reformatted. [303] 15.5.2.1 NOTE 1, reformatted. [304] 15.5.2.3 NOTE 1, reformatted. [308-309] NOTE 1 is badly split here, so I moved NOTE 3 (which is short) to precede NOTEs 1 and 2 (both of which are medium length). (It's still broken across the page, but it's between the opening witter and example source, not in the middle of the example source.) [309] I notice that there are unnecessary ellipses in the middle of the specification parts of the examples in both NOTEs 2 and 3; deleted. Lengthened page to get orphan back. (These changes significantly improved the next ten pages pagination.) [319] NOTE 2, reformatted. [312] NOTE 1, reformatted. [324] Lengthened the page to get the orphan item (8) back. [326] 15.8.2 NOTE 1, reformatted (I mean to say, why is there a paragraph break in between two clauses of a sentence that are not Fortran code? In fact the whole NOTE is a single sentence with four! paragraph breaks. Fixed.) Also changed "shape (M,N)" to "shape [M,N]"; we are very inconsistent about this, grep finds 9 " shape (", and 26 " shape \[", so the latter is more common. Changed the last line to be a valid Fortran array constructor (it being in code font); either this should be "maths-like" in which case I and J should be italics and the I = etc in normal font not code font, or it should be a valid Fortran array constructor. I don't mind which way it is fixed, but choose the Fortran way. EXTRA: Actually it also needs the array *bounds* to be (1:M,1:N) not just the shape to be [M,N], so I rewrote the opening too. Added a "then" to make it read a bit better. COMMENT: Should probably fix the 8 other "shape (" to use square brackets? [348] ATOMIC_FETCH_XOR Shortened page to push "3 Arguments." onto the next [351] BESSEL_YN Lengthened page to bring the first argument onto it (it's a lesser lengthening than the shortening would be to push "3 Arguments" off). [353] Lengthened page to bring the beginning of BTEST onto it (otherwise lots of white space at the bottom). [357] CO_SUM Lengthened page to bring the first argument onto it. [359] COUNT Lengthened ditto. [360] CPU_TIME example: dots to ellipsis, Fortran comment on ellipsis -> italic explanation. [370] FINDLOC Lengthened page to retrieve orphan (last line of p6). [374] GET_TEAM hard new page before examples. [380] INDEX Shortened page to push 3 Arguments onto the next. [385] LBOUND Removed spurious paragraph numbers in 6 Examples. LEN lengthened page to get first argument onto it. [386] Lengthened page to get the beginning of LGT onto it. [388] LOGICAL Shortened page to push 3 Arguments off it. [389] MATMUL Lengthened page to get the first argument onto it. [397] MOVE_ALLOC Example, dots->ellipsis. [399] NORM2 Shortened page to push 5 Result Value onto the next. [401] NULL Increased inter-row spacing in Table 16.5 so the text is not nearly running into the horizontal lines. The example in NUM_IMAGES is badly split, but the alternative would involve lots of white space, so left as is. [406] RANDOM_INIT and RANDOM_NUMBER, indented the examples. [407] RANDOM_SEED indented all the code consistently. [409] REPEAT Shortened page to push 3 Arguments onto next. [412-413] SELECTED_CHAR_KIND example is badly split, but left as is. [415] SHIFTA Shortened page to push 3 arguments onto the next. [417] SPREAD Lengthened page to retrieve orphan line of example. ***End of clause 16. [435-436] Increased vertical spacing in Table 17.1. I notice this is split fairly badly (exactly in half) across the page boundary. Tried inserting a hard page break but the results are not much of an improvement, so decided to leave it split. [439] 17.10 shortened page to push widow p2 first line onto the next. [441] 17.11.1 lengthened page to pull orphan word back from the next. [442] NOTE 1, reformatted. [444] 17.11.8 example is split in the middle. [455] 17.11.37 Shortened page to push 3 Arguments onto next. [406] 16.9.155 RANDOM_INIT again, fixed accidental ambiguity: EXTRA EDIT: Insert "for subsequent invocations, and" before "for each execution of the program" in case (iii). Ditto for case (iv) but also change "A different value" to "Different values". Lengthened page to avoid knock-on. [469] Immediately before Table 18.1 there was a non-ISO-conformant ref to the C standard. Fixed. Table 18.1, increased vertical space, put vertical lines the same way we do other tables with them. [472] Weirdly-spaced text beginning "The following statements" should obviously have been Case (iv) of the Examples. Made it so. Shortened page to push widow 18.2.3.5p6 onto next. [474] Minor tweaks to Table 18.2 appearance. [476] NOTE 3, reformatted. [477] NOTE 3, reformatted. [479] NOTEs 3 and 4, reformatted. [482] NOTE 1, reformatted. Forced Table 18.3 onto the next page, as it is unsuitable for splitting. Minor tweaks to Tables 18.3 and 18.4 layout. [484] p11 "constant 0" -> "constant zero". Table 18.5, minor layout tweaks. [485] 18.5.5.3, hard page break to push 3 Formal Parameters onto next. (LaTeX doesn't want to bring any of the first argument forward.) [486] 18.5.5.4 Shorten page to push Example widow onto next. [489-490] 18.5.5.7 Two lines of Examples Case (i) are split onto the next page, but no obvious improvements available. [490] 18.5.5.8 Shortened page to push 5 Example onto the next. Reformatted the example. [493] 18.8 NOTE 1, reformatted. [494] 18.9.1 NOTE 1, reformatted. Using small (obsolescent) font in code examples seems pretty weird to me, but I left it. 18.10.1p2 reduced vertical spacing in lists to bring orphan back from the next page. [495] 18.10.2 NOTE 1, reformatted. Deleted code-font quotation marks around the binding labels, because it is untrue that these are part of the binding labels. A binding label is a character value, not a character literal. (If code font is not sufficiently delimiting, proper NORMAL FONT quotation marks could be used, as they indicate quotation, unlike code font which indicates actual characters. Or we could say "the binding label of C_SUB is equal to the value of 'c_sub'", that works too. But I see no problem with just using code font here with no other delimiting required.) [496] 18.10.4 NOTE 1, reformatted (indentation, ellipsis, italic descriptive text). [498] 19.3.1 NOTE 1, reformatted. [501] 19.5.1.4p2 reduced vertical space and lengthened page to get orphan back from the next. [503] 19.5.1.4 NOTE 3, reformatted. This note is a terrible example and a horrible indigestible lump. In my opinion it should be banished to the outer darkness (a.k.a. C.13 - see NOTE 4). Or since it's talking about USE association as much as host association, it could go into clause 14. I favour the outer darkness. I did rewrite some of the comments to improve comprehensibility and reduce excessive space. Reduced sufficiently to remove widow/orphan on [504]. [506] 19.5.2.3-4 Remove three extraneous line breaks before "or" in two lists. [511] 19.6.3 NOTE 1, reformatted. [512] 19.6.5 Shortened page to push widow (15) onto next. [514] 19.6.6 Shortened page to push widow (13) onto next. [522] Shortened page to push widow "whether a flag that is quiet on entry" to the next page. [525] B.3.2 code is split poorly across the page. The only obvious fix would be to adjust the order of subclauses in B.3 to avoid splitting. That would be pretty easy, but I didn't do it. Various code fragments in annex C had dots turned into ellipses. [529] C.2.2 code is broken badly. Reformatted and deleted unnecessary blank lines to bring it all onto the same page. [530] C.2.3 code is nearly a whole page. It would fit if we removed the bold "Example of..." and moved the paragraph of witter to follow the code instead of preceding it (the subheading is not really essential). I did not do this though. [532-533] C.2.5p2 splits across a page boundary, but no obvious fix (it is very long). Actually annex C is full of examples split across pages with no obvious fix, so I should stop complaining. [535] C.3p2 deleted a blank line to bring the orphan back from the next page. Turned Fortran comment after ellipsis into italic explanation. [538] C.6.3 Shortened page to push widow Example 1 onto next. [541] C.6.6 Shortened page to push widow SUBROUTINE statement onto next. [545] C.6.9 Changed "1, 2, ... ." to "1, 2, and so on." [557] C.9.3.3 Changed Fortran comment after ellipsis into italic explanation. [562] C.9.4 Shortened page to push widow p3 onto next. [565] Changed roman text explanation after ellipsis into italics. [569] Tweaked appearance of C.10.4p3. [578] C.11.2 hard page break to push Example code onto next. [589] C.12.9 hard page break to push all of p2 onto next. [596] C.12.13p1 change roman explanation into italics and reword slightly. C.12.14p2 lengthen page to pull orphan back from next. [597] Shorten page to push widow p6 onto next. [598] Shorten page to push widow Example 2 onto next. Perhaps final changes: Add new addition to Foreword coming from ISO Central Secretariat (TMB Communique No.59). ===END===