J3/14-246 To: J3 From: Malcolm Cohen Subject: Improving subclause names Date: 2014 October 05 1. Introduction Many subclauses have uninformative names, especially those invented to follow the (entirely reasonable) ISO rule about no initial text in a clause or subclause that itself has subclauses. E.g. "General". These uninformative names make it more difficult to refer to the text, especially in edits. We should revise these names. Some of the introductory witter in these subclauses could also be profitably revised. 2. Discussion (a) [ 4. Types; 4.1 The concept of type; 4.1.1 General ] This subclause contains 2 paragraphs of introductory witter a plus 3 paragraphs about type classification. We could split that into two, or use a combined heading; better to split it. (b) [ 4. Types; 4.4; Intrinsic types; 4.4.2 Numeric intrinsic types; 4.4.2.1 General ] This subclause contains only unnecessary witter; the first sentence being unwanted rationale, the second sentence merely cross-referencing operations defined in clause 7. It is also incomplete in that it completely omits references to intrinsic functions, but that's ok since we don't consider those to be "operations" (in defiance of both normal English and computing English, without any definition!). It also omits user-defined operations. Which we omit everywhere. COMMENT: Although it would be technically fine to delete the subclause entirely, that would leave the "Types" clause without any per-type references to intrinsic operations. [ 4. Types; 4.4 Intrinsic types; 4.4.3 Character type; 4.4.3.1 Character sets ] The last paragraph in this subclause is not about character sets but about intrinsic operations. Either we should (i) change to "Character sets and operations", (ii) introduce a new subclause header "Character operations", (iii) or delete the paragraph entirely. Ditto Logical, but here the paragraph actually mentions all the operations by operator name. Ugh. I think it is best to add a single new subclause 4.4.2 "Operations on intrinsic types" and dump all of these operation cross-references in there. (c) [ 5.2 Type declaration statements; 5.2.1 Syntax; ... ] The first heading should be singular. The second heading is ambiguous and misleading. 5.2.2 "Automatic data objects" need not be a subclause of 5.2 (it is generally applicable, not just to type declaration statements). 5.2.3 "Initialization" ditto. The examples (5.2.4) can be moved they don't need a whole subclause to themselves (there being no text in the subclause it violates ISO guidelines anyway). Therefore move the examples and flatten the structure. An alternative would be to change 5.2 to "Type declaration" and 5.2.1 to "Type declaration statement". Except that "Automatic data objects" applies equally to implicitly-typed objects (with a variable character length, for example) and the DIMENSION statement with variable bounds, and "Initialization" applies equally to DATA statements; none of which are described in other subclauses of 5.2, so I think flattening is slightly preferable. (d) [ 7.1 Expressions; 7.1.1 General ] This is pretty ugly. It talks about both syntax and semantics, and contains mostly introductory witter, the only things that we actually need are the first sentence and the last paragraph. The introductory witter is all about the syntax, so really should be 7.1.2.1 instead, if we moved (or just deleted!) it we could rename 7.1.1 to be "Expression semantics". (e) I don't have any suggestions for 10.7.1 "General" (in 10.7 Data edit descriptors); the text here has some important requirements and some general semantics. We could probably do better but might need to wordsmith some of the text to do so. 10.10.1 "General" (in 10.10 List-directed formatting); this is just introductory witter. We could just delete it... 10.11.1 "General" (in 10.11 Namelist formatting); this is entirely useless introductory witter plus unwanted rationale. Deleting it might well be a good idea! 3. Edits to 14-007r2 [51:2] 4.1 "The concept of type" -> "Characteristics of types", [51:3] 4.1.1 "General" -> "The concept of type", [51:7+] 4.1.1p2+ insert new subclause header "Type classification". [55:20+] Insert new subclause "4.4.2 Intrinsic operations on intrinsic types Intrinsic numeric operations are defined as specified in \ref{D7:Interpretation of numeric intrinsic operations} for the numeric intrinsic types. Relational intrinsic operations are defined as specified in \ref{D7:Relational intrinsic operations} for numeric and character intrinsic types. The intrinsic concatenation operation is defined as specified in \ref{D7:Character intrinsic operation} for the character type. Logical intrinsic operations are defined as specified in \ref{D7:Logical intrinsic operations} for the logical type." {If we want to expand this to mention functions or user-defined operations, here is where we would put it.} [55:22-24] Delete entire subclause 4.4.2.1 "General". [59:17-18] 4.4.3.1 "Character sets", Delete p4. [62:28-31] 4.4.4 Logical type, Delete p6. [77:15] 4.5.6.1 "Declaration" -> "FINAL statement". Make sure this is properly indexed with \defstmt. [79:18] 4.5.7.1 "Concepts" -> "Extensible, extended, and abstract types". {ALTERNATIVE: "Type extension concepts".} [91:2] 5.1 "General" -> "Properties of procedures and data objects". {ALTERNATIVE: "Attributes of procedures and data objects".} [91:12] 5.2 "Type declaration statements" -> "Type declaration statement". Make sure this uses \defstmt. [91:13] Delete heading "5.2.1 Syntax" [92:35+] Move NOTE 5.1 to here, with (i) an initial line "Examples of type declaration statements:"; (ii) all the examples indented 7 spaces; (iii) consider making all the names unique to reduce confusion. [92:36] "5.2.2" (Automatic data objects) -> "5.3". [93:6] "5.2.3" (Initialization) -> "5.4". [93:19] Delete heading "5.2.4 Examples of type declaration statements". [93:19+0-many] This was moved to [92:35+]. [93:21] 5.3.1 "Constraints" -> "Attribute specification". {More accurate.} [137:3] 7.1.1 "General" -> "Expression semantics". [137:4-7] 7.1.1, Delete/move "An expression if formed ... themselves expressions." and join p4 to the remnants of p1. [137:11] 7.2.1.1 "Expression categories" -> "Overall expression syntax", then include the removed text from 7.1.1 as a single paragraph before the current first paragraph. ALTERNATIVE: Just delete that text instead. [171:3] 8.1.1 "General" -> "Executable constructs and block". ALTERNATIVE: -> "Executable constructs containing blocks". [199:18] 9.2.1 "General" -> "Definition of a record". ALTERNATIVE: Since the subclauses of "9.2 Record" are all very short, in fact a single paragraph in 2 cases and 2 paragraphs plus a note in the 3rd case, we could just flatten 9.2; i.e. [199:18] Delete subclause heading 9.2.1 "General", [199:25] Delete subclause heading 9.2.2 "Formatted record", [199:31] Delete subclause heading 9.2.3 "Unformatted record", [200:4] Delete subclause heading 9.2.4 "Endfile record". OPTIONAL: [200:14] 9.3.1 "Basic concepts" -> "External file concepts". [213:28] 9.6.1 "General" -> "Input and output statements". [221:2] 9.6.4.1 "General" -> "Data transfer sequence of operations". [242:17] 9.11.1 "General" -> "Occurrence of conditions". [247:18] Append sentence "Except as otherwise specified, when an error condition occurs or is detected is processor dependent.". {Perhaps unnecessary, but nice to have it there in black-and-white.} [275:18] 11.2.1 "General" -> "Module syntax and semantics". [276:14+1-10] Move all the NOTEs to the end of the subclause [276:19+]. {This is nothing to do with the name of the subclause, it is just that their current position is an unnecessary violation of ISO recommendations.} ===END===