X3J3/96-030 (Page 1 of 6) To: X3J3 and WG5 From: Richard Maine Subject: Edits made to X3J3/95-007R2 Date: January 29, 1996 Following changes have been made to X3J3/95-007r2. The document with these changes will eventually become X3J3/96-007, but I'll wait until after the Feb X3J3 meeting in case further edits are added there. The changes are, of course, subject to X3J3 and WG5 concurrence. These changes are selected from email comments on the 95-007r2, plus the defect processing ballot results. All change bars in the new document were cleared before starting the edits. Thus the change bars in the new document reflect changes relative to 95-007R2. ----------Misc fixes from email comments. [xiii:42] Replace 'and' by 'simultaneously and then'. [xv:29] Delete comma. [xv:30] ", in order to decrease" -> "; this decreases" [14:17] "Statement function" -> "Statement function statement" [27:29-40] Merge notes 3.8 and 3.9 as follows. Start with An "!" or ";" in character position 6 as in note 3.8. Then use the rest of the text from 3.9, following "position 6". Change "another" to "an". Result replaces the old 3.8. Delete the old 3.9 [32:1] Delete "unsigned and". No such term is defined. [33:21-22] Replace 'underflow occurs ... below' by 'the exact result of an operation is negative but rounding produces a zero'. [40:14] Delete hyphen from 'non-pointer'. [49:1] "type-spec" -> "" [51:27-31] Change the note to read An interface body may be specified for a dummy or external function whose result has a character length parameter value of * only if the function is not invoked. This is because this characteristic has to be specified to be the same in the interface body as in the procedure definition, but in order to invoke such a procedure, the calling routine is required to specify a length other than *. [54:2] "rank or the rank and shape are" -> "rank or shape is" X3J3/96-030 (Page 2 of 6) [61:16] Change 'an' to 'a nonpointer'. [83:28] Change 'PROCES' to 'PROCESS'. [115:47] Capitalize the first word and add ',' at the end. [115:48] Capitalize the first word and add ', and' at the end. [116:1] Capitalize the first word and add '.' at the end. [119:16] Replace ' variables' by ' expressions'. [129:6] Add period at end of line in constraint after R834. [199:5] "shall" -> "shall not" in 4th constraint after R1215 [212:5-8] Capitalize the first word of each item. [214:20] "simillar" -> "similar" [245:31] "is absent or present with the value..." -> "is absent or has the value..." The original wording invited strange misreadings (which could alternatively be fixed by adding "is" before "present"). This fix also repairs a bad line break. [253:31] 13.14.67 heading. MAXLOC -> MAXVAL [256:19 13.14.72 heading. MAXLOC -> MINVAL [260:27] 13.14.83 heading. MAXLOC -> PRODUCT [266:37-40] Replace all 4 lines by Case (iv): If B is of type real and is zero, then (a) If the processor cannot distinguish between positive and negative real zero, the value of the result is |A|. (a) If B is positive real zero, the value of the result is |A|. (b) If B is negative real zero, the value of the result is -|A|. [268:37] 13.14.105 heading. MAXLOC -> SUM [273:30] "present with" -> "has" [293:30] Delete hyphen from 'non-pointer'. [305:30] Replace R504 by R512. [305:31] Replace (10) by (11). [305:45] "in" -> "In" [310:22] "compoents" -> "components" --------------Some global items from email comments. Index. Make font size for index entries 10 pt like the rest of the document instead of 12 pt. X3J3/96-030 (Page 3 of 6) Change font for "FORTRAN 66" and "FORTRAN 77" to be consistently large "F" with "ORTRAN" in small capitals as in section 1.5.2 on pp 3-4. Changes are needed in the following lines: FORTRAN 66: 303:16, 303:20, 303:25, 303:27, 307:15 FORTRAN 77: Contents at 1.5.2, 6:20, 6:24, 303:9, 303:13, 303:16, 303:20, 303:21, 303:24, 307:15, index at "compatibility", index at "FORTRAN 77 compatibility". (The heading for section 1.5.2 is ok on page 3. However, my attempts to get the font size change into the table of contents entry for this section on pg i failed. The index entries were also tricky, but they worked). ----------------- from interpretations passed in Jan 96. interp 27 1. In section 13.14.13, [232:19] in the description of the TARGET dummy argument add ". It shall have the same type, type parameters, and rank as POINTER" following "shall be a pointer or target" 2. Section 13.14.13, replace Case (ii) [232:25-27] and Case (iii) [232:28-30] with (Editor's note: I added commas after "otherwise" and "If POINTER is disassociated". Also deleted "the" before "POINTER"). "Case (ii): If TARGET is present and is a scalar target, the result is true if TARGET is not a zero-sized storage sequence and the target associated with POINTER occupies the same storage units as TARGET. Otherwise, the result is false. If POINTER is disassociated, the result is false. Case (iii): If TARGET is present and is an array target, the result is true if the target associated with POINTER and TARGET have the same shape, are neither of size zero nor arrays whose elements are zero-sized storage sequences, and occupy the same storage units in array element order. Otherwise, the result is false. If POINTER is disassociated, the result is false. Case (iv): If TARGET is present and is a scalar pointer, the result is true if the target associated with POINTER and the target associated with TARGET are not zero-sized storage sequences and they occupy the same storage units. Otherwise, the result is false. If either POINTER or TARGET is disassociated, the result is false. X3J3/96-030 (Page 4 of 6) Case (v): If TARGET is present and is an array pointer, the result is true if the target associated with POINTER and the target associated with TARGET have the same shape, are neither of size zero nor arrays whose elements are zero-sized storage sequences, and occupy the same storage units in array element order. Otherwise, the result is false. If either POINTER or TARGET is disassociated, the result is false. " interp 81 1. In section 12.4.1.6 [203:26-28], delete the first sentence of (1). 2. In section 12.4.1.6 [203:34] after 2nd ',' in (c) insert " the dummy argument is a scalar object or an assumed-shape array," 3. In section 12.4.1.6 [204:17], change "pointer association status of A" to "allocation of B" 4. In section 12.4.1.6 [204:20-21] change ", but would ... attribute." to ". If B were declared with the POINTER attribute, either of the statements DEALLOCATE(A) and DEALLOCATE(B) would be permitted, but not both." 5. In section 12.4.1.6 [205:5-7], delete the first sentence of (2). 6. In section 12.4.1.6 [205:14] after 2nd "," in (c) insert " the dummy argument is a scalar object or an assumed-shape array," interp 125 1. In section 12.4.1.1 delete the last sentence of the 4th paragraph [200:30-32] 2. In section 12.4.1.1, add to the end of the 7th paragraph [200:45] "If such a dummy argument is associated with a dummy argument with the TARGET attribute, whether any pointers associated with the original actual argument become associated with the dummy argument with the TARGET attribute is processor dependent." 3. In section 12.4.1.2, 8th paragraph, [201:1] Change 'is either scalar or is an assumed-shape array' to 'is either a scalar or an assumed-shape array' X3J3/96-030 (Page 5 of 6) 4. In section 12.4.1.2 replace the 9th paragraph [201:8-10] by "If the dummy argument has the TARGET attribute and is an explicit-shape array or is an assumed-size array, and the corresponding actual argument has the TARGET attribute but is not an array section with a vector subscript (1) On invocation of the procedure, whether any pointers associated with the actual argument become associated with the corresponding dummy argument is processor dependent and (2) When execution of the procedure completes, the pointer association status of any pointer that is pointer associated with the dummy argument is processor dependent. 5. In section C.9.5 [336:32] Change "and is scalar or assumed-shape" to "and is either a scalar or an assumed-shape array" interp 148 (As mentioned in email, the following text reflects some editorial changes from the exact text of the interpretation). 1. [262:15+] In Section 13.14.86, before "Examples", insert the following paragraph: "The pseudorandom number generator used by RANDOM_NUMBER maintains a seed that is updated during the execution of RANDOM_NUMBER and that may be specified or returned by RANDOM_SEED. Computation of the seed from argument PUT is performed in a processor-dependent manner. The value returned by GET need not be the same as the value specified by PUT in an immediately preceding reference to RANDOM_SEED. For example, following execution of the statements CALL RANDOM_SEED(PUT=SEED1) CALL RANDOM_SEED(GET=SEED2) SEED2 need not equal SEED1. When the values differ, the use of either value as the PUT argument in a subsequent call to RANDOM_SEED shall result in the same sequence of pseudorandom numbers being generated. For example, after execution of the statements CALL RANDOM_SEED(PUT=SEED1) CALL RANDOM_SEED(GET=SEED2) CALL RANDOM_NUMBER(X1) CALL RANDOM_SEED(PUT=SEED2) CALL RANDOM_NUMBER(X2) X2 equals X1." X3J3/96-030 (Page 6 of 6) interp 187 1. Delete the second sentence of 5.1.2.8 [57:18-19]. 2. Section 5.5.2.3 [70:22] (95-007r2) Change 'shall' to 'may' 3. Section 5.5.2.3 [70:23] (95-007r2) Change 'attribute.' to 'attribute and the same type and type parameters.' interp 201 1. In section 13.14.95, the paragraph prefaced with "Result Value", [265:40-41] change "if the precision is not available" to "if the processor does not support a real data type with a precision greater than or equal to P" 2. In section 13.14.95, the paragraph prefaced with "Result Value", [265:41] change "if the exponent range is not available" to "if the processor does not support a real data type with an exponent range greater than or equal to R" 3. In section 13.14.95, the paragraph prefaced with "Result Value", [265:41] change "if neither is available" to "if neither is supported" interp 203 (Note, deleted the comma from the second edit; it didn't belong) 1. In section 14.4, 2nd sentence [281:28], Add "that is not an extended intrinsic operator" after "A defined operator" 2. In section 14.5, 2nd sentence [281:33], Add "or replace the intrinsic derived type assignment operation" after "operations" ----------- Final adjustments After all the above edits were done, some adjustments around tables and notes (which are implemented as Frame tables) were made to improve page breaks. The automatic page breaking doesn't deal well with tables, so they often need to be hand-tuned. None of these adjustments involved any changes to text. They do, however, generate change bars, so you may notice a few unexpected change bars around tables and notes even though there are no text changes. Section 12 needed the most manual adjustment, and section 13 needed a few cases; I don't recall any in other sections, but I might have forgotten to record one.