07-175 To: J3 From: Malcolm Cohen Subject: Other editorial changes Date: 2006/12/28 This paper lists other editorial changes that have been done to 07-007. throughout: Spaced out productions. Changed most (/.../) to [...], especially within parentheses, to improve clarity. c03: Make capitalisation consistent: "macro DO" -> "MACRO DO", several times. "macro IF" -> "MACRO IF", once. c04: [somewhere] "may be categorized" -> "can be categorized". [somewhere] fixed positioning of Nihongo graphic in PostScript output. [somewhere] "" -> "" [59:2] "Declaration" -> "Type parameter definition statement". Indexed. [60:9] "Syntax" -> "Component definition statement". Indexed. [various] There were multiple trivial problems with the type-bound procedure exposition. Rewrote, including some syntax renaming: "" -> "" "" -> "" "" -> "" "" -> "" c05: [92:27-28] Constraintified. This was previously covered by C1264, but is better stated here (and C1264 is full of other junk). [93:11] Split line. [113:9] "may cause" -> "might cause" (possibility, not permission). c07: [160:13+] Added LOGICAL to the list of functions in the table footnote. [171:11] Changed term definition to be "active combination", not "active combination of", and un-term-def-ified "value". c08: [177:14] Made "BLOCK construct" into a definition, like other constructs. [178:7-8] "" -> "specification part" [180:2] Made "CRITICAL construct" into a definition. [182:11] Made "DO CONCURRENT construct" into a definition. [192:2] Made "EXIT statement" into a definition. Added missing index entry for "statement!EXIT". [193:3] Made "GO TO statement" into a definition. [193:9] Made "computed GO TO statement" into a definition. [193:18] Make "arithmetic IF statement" into a definition. [193:22] Make "CONTINUE statement" into a definition. [193:30] Make "STOP statement" into a definition. [194,195] "operating system" -> "processor". See 1.2: there might not be anything one could reasonably call an "operating system", and in such a case the process exit status might still make sense. c09: [214:13-14] "Whether a unit may be connected to a file that is also con- nected to a C stream is processor dependent. If the proces- sor allows a unit to be connected to a file that is also co- nnected to a C stream, ..." The "may" is not talking about permission (that is clear from the sec- ond sentence, where it is talking about the *processor* allowing some- thing; permission is for something the standard allows (or not), not a processor). "may" -> "can", "the processor allows a unit to be" -> "a unit is" [218:27+1-2] "Note 9.20; For nondefault character types, the blank pad- ding character is processor dependent." And your point is? Blanks are referred to all over the standard with- out this guff (it is applicable to assignment, character comparison, intrinsics like ADJUSTL, i/o data items not at the end of a record). All character sets have to have a blank character. The *ENTIRE* def- ault character set is processor dependent (if you believe "The proces- sor character set is processor dependent") making this misleading as well as pointless. As a final insult, the subclause to which this is a supposedly explanatory note does not mention blanks even once. Deleted. [219:4] "the appropriate value for the RECL= specifier" is meaningless gibberish. Fixed to "the effect of the RECL= specifier". [226:6] "processor-dependent" -> "processor determined". The numerical value is determined by the processor, but the semantics are not proces- sor dependent in any way (except in so far that async i/o is all p-d). [226:23+2] "A file that represents connection" is ungrammatical. It is also appallingly badly worded, since connection has a technical meaning (it is the connection between the unit and a file). Changed to "A unit that is connected". [243:11,32,244:16,20] Factored the connect team stuff out of the three individual file positioning statements into the general subclause. [242:4] Made "WAIT statement" into a definition. [243:25] Made "BACKSPACE statement" into a definition. [244:2] Made "ENDFILE statement" into a definition. [244:18] Made "REWIND statement" into a definition. [244:23] Deleted introductory half-witter. [245:12] Made "FLUSH statement" into a definition. [245:23] Made "INQUIRE statement" into a definition. c10: [268:28] Hyphenated "processor dependent" as an adjective. c11: [289:7] "module reference" -> "reference" because we also just "reference" a module, we never "module reference" it, and having the wrong term defined and indexed makes it impossible for a reader to find out what reference a module means except by accident. c12: [300:32-] Inserted subclause heading "IMPORT statement", moved Note 12.5 from [301:0+] to precede it, moved the syntax from [299:16,41-43] to follow it. [300:32] Made "IMPORT statement" into a definition. [301:0+2] "an interface block without a generic specification" ->"a specific interface block". [302:1-] Inserted subclause heading "Generic identifiers" (ok, the first paragraph after this isn't really about identifiers, but the rest of them are). [302:2] Made "PROCEDURE statement" into a definition. [302:4-5] Deleted "Any procedure ... via a generic interface." This was meaningless witter, the first sentence having nothing to do with this subclause at all, and the second sentence being completely redundant. In any case, they both used "may" in a situation not giving permission. [302:14-15] Swapped this paragraph with the note preceding it (the note is an example, and examples are meant to come at the end of a subclause), and put a full stop on the end. [303:7] Fixed reference. [306:2] Made "procedure declaration statement" into a definition. [306:3] Deleted "procedure" before "entities". [306:14] Inserted blank between "" and "[". [308:2] Reworded the first sentence of the INTRINSIC statement to say that it specifies the attribute instead of specifying a list of names. [311:29] Deleted "and it shall not extend beyond the end of that sequence", because this merely duplicates [319:3-4], and there is already a forward ref to that in the sentence. Moreover, we don't duplicate the "shall not extend" requirement for non-character, so doing it for character is inconsistent. [326:5] Made "FUNCTION statement" into a definition. [329:2] Made "SUBROUTINE statement" into a definition. [330:15,etc.] It is a pity we picked "MODULE PROCEDURE ". It ought to have been "MODULE SUBPROGRAM " (the bnf is ), which would have been much less confusing to people who thought they already knew what a "MODULE PROCEDURE statement" was. Indexed as a "separate module subprogram statement" (ugh) for now, but even though it is a change to the published syntax we ought to consider changing it, it is just a little too confusing with so many statements being some kind of "PROCEDURE" statement. [331:12-14] Deleted C1264. This previously read "Within the subprogram containing the , the shall not appear as a dummy argument in the FUNCTION or SUBROUTINE statement or in another ENTRY statement nor shall it appear in an EXTERNAL, INTRINSIC, or PROCEDURE statement." Well, (a) the dummy argument case is covered by the scoping rules (the name cannot be both a dummy procedure and an external/module procedure); (b) the EXTERNAL case was covered by the text at [92:27-28], which I've now constraintified since this was a constraint; (c) the INTRINSIC case is covered by the scoping rules (the name cannot be both an external/module procedure and an intrinsic procedure); (d) the PROCEDURE statement case is covered by the EXTERNAL case. [332:27] Made the "RETURN statement" into a definition. [333:6] Made the "CONTAINS statement" into a definition. [334:14] The definition of pure procedures is faulty, as it omits the case of dummy procedures (they are not defined by a subprogram, but declared by an interface body). Added a new item "a dummy procedure that has been specified to be PURE," before the "or". c13: Move ACOSH to immediately follow ACOS, not ADJUSTL. [422:8-21] fixed indentation. [423:22-23] fixed indentation. [430:20] fixed indentation. [432:17-18] Result value of TRANSPOSE is incorrect gibberish. Corrected and removed the gibberish. Reset indentation to follow the rest of the standard (giving 1cm extra horizontal space), and did some tweaking. This is, I think, noticeably better in several intrinsics than before. But if it is not liked, it can be reverted without significant work (viz, the typesetting tweakery should not have made things worse without the indenting change, though they might not have improved it noticeably either). c14: [Throughout, and also slightly in other chapters] IEC 60559 is "Binary floating-point arithmetic ..."; we almost (not quite) always omitted the hyphen - fixed. [440:30] "saving the current" -> "containing the" because "saving" isn't the only option "current" isn't always relevant. [441:34] "may cause" -> "might cause" (possibility, not permission). [455:2] Deleted "is" [463:end-8] "may cause" -> "might cause" (possibility, not permission). [465:0+3] Ditto. c15: [480:8] "variable of common" -> "variable or common". c16: [486:31] "scoping unit of a statement" -> "scoping unit containing ..." because statements are not scoping units (cf "scoping unit of a module"). [487:20] "scoping unit of" -> "scoping unit containing" ditto reasoning. [493:12] fixed reference. [494:16] "value of constants" -> "values of constants". [496:17] "may cause" -> "can cause". [500:1-2] Deleted "Execution of a defined assignment statement may cause all or part of the variable that precedes the equals to become defined." as it is untrue and/or unnecessary: to the extent it is true, it happens because of *other events* that occur *during* that execution, in particular item (12) which states that defining an entity (in this cause the dummy argument) causes an associated entity (the variable on the LHS) to become defined. [500:3] "may cause" -> "might cause" (this is possibility, not permission). [501:32] "may cause" -> "would cause" (conditionality, not permission). [502:13] "may cause" -> "might cause" (possibility, not permission). Index: Indexed attribute definitions that were under attribute! as defns. Indexed EXTERNAL attribute in the INTERFACE block. Indexed EXTERNAL attribute in the EXTERNAL statement. Indexed EXTERNAL attribute in the procedure declaration statement. Indexed INTRINSIC attribute in the INTRINSIC statement. Indexed statement!SEQUENCE. Indexed the as the PRIVATE statement. Indexed the as the PRIVATE statement. Indexed the CONTAINS statement in a type definition. Indexed type!bits. Indexed the as the BLOCK statement. Indexed the as the END BLOCK statement. Indexed DO CONCURRENT statement. Indexed as the CRITICAL statement. Indexed as the END CRITICAL statement. Indexed "SELECT TYPE statement" instead of "SELECT TYPE construct" in c16:construct association. Indexed "ASSOCIATE statement" there too. Indexed as the SELECT TYPE statement. Indexed CLASS IS and TYPE IS statements properly. Indexed CLASS DEFAULT statement. Indexed WAIT statement properly. Indexed PROGRAM and MODULE statements. Indexed USE statement properly. Indexed SUBMODULE and BLOCK DATA statements. Indexed INTERFACE and END INTERFACE statements. Indexed PROCEDURE and IMPORT statements. Indexed the procedure declaration statement properly. Indexed the CALL statement properly. Indexed the subclause on the passed-object dummy argument semantics under "passed-object dummy argument" (the same as the declaration) instead of under "PASS attribute" (the same as nothing else). Indexed the TARGET and VALUE attributes for dummy arguments. Indexed the CONTIGUOUS attribute for dummy pointers. Indexed the keywords PURE, ELEMENTAL and IMPURE. Indexed ENTRY statement properly. Indexed the "statement function statement". ===END===