J3/12-008r1 Date: 2012/10/12 To: J3 From: Malcolm Cohen Subject: Editorial enhancements for future revisions This is the editor's list of things which have been and are being considered for future Draft revisions. The edits in Section A have been applied to the LaTeX sources and are included in the 007. The edits in Section B have not been applied to the LaTeX sources. Both of these sections are by reference to 10-007r1, and will be closed when revision of the standard begins. Section B includes the edits resulting from Corrigendum 1. The editor will make additional changes to these, noted with "{{COMMENT". Sections C to E will become progressively smaller; suggestions that are implemented will be removed from this document. A. Post-FDIS edits that have been applied to 007 ------------------------------------------------ None. B. Agreed post-FDIS edits awaiting action ----------------------------------------- [throughout] Delete running subclause numbers (J3 version only). {12-113r1} [throughout] Delete running clause name (J3 version only). {12-113r1} [c13-c15] Index definitions of all intrinsic procedures and intrinsic module entities. {12-113r1} [xv] Introduction, p2, end of bullet 4 (beginning "Data declaration"), Append "An array or an object with a nonconstant length type parameter can have the VALUE attribute." {Corrigendum 1, F08/0046} [xvi] Introduction, p2, last bullet (beginning "Programs and procedures"), Before "An impure", Insert "An argument to a pure procedure can have default INTENT if it has the VALUE attribute." {Corrigendum 1, F08/0051} [xvi] Introduction, p2, last bullet (beginning "Programs and procedures"), Before "The FUNCTION and SUBROUTINE", Insert "The PROTECTED attribute can be specified by the procedure declaration statement." {Corrigendum 1, F08/0037} [1:29] 1.1p4, some bullet point "the IEEE International Standard" -> "IEC 60559:1989". {10-250} [24:9,10,11+] 1.6.2 "Fortran 2003 compatibility", Change "This" to "Except as identified in this subclause, this", Change "Any" to "Except as identified in this subclause, any", Insert two new paragraphs "Fortran 2003 specified that array constructors and structure constructors of finalizable type are finalized. This part of ISO/IEC 1539 specifies that these constructors are not finalized. Fortran 2003 permitted an INTENT (OUT) argument of a pure subroutine to be polymorphic; that is not permitted by this part of ISO/IEC 1539." {Corrigendum 1, F08/0011 and F08/0033} [44:22] 3.2.5p3, After "Any statement may", "have" -> "begin with". {12-105r1} [45:24+] 3.3.2.2p3+ Turn the fake table "Adjacent keywords where separating blanks are optional" into a real table with a table number. {11-107r1} [46:29] 3.3.2.6p1, index "statement label" here. {12-105r1} [47:24] 3.3.3.5p1, index "statement label" here. {12-105r1} [73:12,17] Hyperlink "" to the syntax term, twice. {11-140r1} [74:8] Hyperlink "" to the syntax term. {11-140r1} [74:14] 4.5.5p2 Replace "may" by "can". {11-130r2} [74:26] Hyperlink "" to the syntax term. {11-140r1} [75:19] In 4.5.6.1 Declaration (of 4.5.6 Final subroutines), p2, Append sentence to paragraph "No other entity is finalizable.". {12-112r1} [76:10-] 4.5.6.3, before p1, Move p9, as modified by the edit to [76:25-26] below, to precede p1. {Corrigendum 1, F08/0013} [76:10] 4.5.6.3, p1, After "it is finalized" insert "unless it is the variable in an intrinsic assignment (7.2.1.3) or a component thereof". {Corrigendum 1, F08/0013} [76:15] In 4.5.6.3 When finalization occurs, p4, Before "function" insert "nonpointer". {12-112r1} [76:17-18] 4.5.6.3p5 Delete this paragraph, which begins "If an executable construct references a structure". {Corrigendum 1, F08/0013} [76:21-22] 4.5.6.3p7 Delete this paragraph, which begins "If a specification expression in a scoping unit references a structure". {Corrigendum 1, F08/0013} [76:23-24] 4.5.6.3p8 Replace this paragraph, which begins "When a procedure", with "When a procedure is invoked, an object that becomes argument associated with a nonpointer, nonallocatable INTENT (OUT) dummy argument of that procedure is finalized. The finalization caused by INTENT (OUT) is considered to occur within the invoked procedure; so for elemental procedures, an INTENT(OUT) argument will be finalized only if a scalar or elemental final subroutine is available, regardless of the rank of the actual argument." {Corrigendum 1, F03/0085 and F08/0034} [76:25-26] 4.5.6.3p9 Change "the variable is" to "if the variable is not an unallocated allocatable variable, it is", and append new sentence to the end of the paragraph: "If the variable is an allocated allocatable that would be deallocated by intrinsic assignment, the finalization occurs before the deallocation.". {Corrigendum 1, F08/0013} [78:4] 4.5.7.3p1 Change "as a type-bound" to "as an accessible type-bound". {Corrigendum 1, F08/0052} [93:18-19] 5.3.7p2 item (6) subitem (c), Replace text with "the array element ordering of the elements of the section is the same as the array element ordering of those elements of the base object," Insert new item (c2) "in the array element ordering of the base object, every element of the base object that is not an element of the section either precedes every element of the section or follows every element of the section," {12-112r1} [95:24] In 5.3.8.4 Deferred-shape array, p5, second bullet item, After "pointer assignment" delete "statement". {12-112r1} [105:41] 5.4.7p9 After "data-pointer-initialization compatible" insert "(4.5.4.6)" viz "(\ref{Default initialization for components})". {12-105r1} [109:21-23] 5.5p4 Delete "The mapping may ... scoping unit.", change "in the outermost inclusive scope in which it appears" to "; if the outermost inclusive scope in which it appears is not a type definition, it is declared in that scope, otherwise it is declared in the host of that scope". {Corrigendum 1, F03/0123 and F08/0015} [111:19-20] 5.6p5 Change "type parameters, and shape" to "kind type parameters, and rank". {Corrigendum 1, F08/0002} [124:4-7] 6.5.3.3.2p2, Replace the bullet list with "finalized by a nonelemental final subroutine.", making the whole paragraph read: "An array section with a vector subscript shall not be finalized by a nonelemental final subroutine." {Corrigendum 1, F08/0014 and F08/0016} [124:9] 6.5.4.4.2p3, Change "shall not appear in a variable definition context (16.6.7)" to "is not definable and shall not be defined or become undefined", making the whole paragraph read: "If a vector subscript has two or more elements with the same value, an array section with that vector subscript is not definable and shall not be defined or become undefined." {Corrigendum 1, F08/0039} [130:23] 6.7.3.2p1, append sentence to paragraph "An allocatable variable shall not be deallocated if it or any subobject of it is argument associated with a dummy argument or construct associated with an associate name." {Corrigendum 1, F08/0010} [131:27] 6.7.3.3p1, append sentence to paragraph "A pointer shall not be deallocated if its target or any subobject thereof is argument associated with a dummy argument or construct associated with an associate name." {Corrigendum 1, F08/0010} [133:4] 7.1.1p1, first sentence, After "either a data" insert "object" before "reference". {10-214} [137:5] 7.1.3p2, "definedoperation" -> "defined operation". {11-206} [150:17-18] 7.1.11p2(17), if it will fit on the line, "contai-ning"->"contain-ing". {12-105r1} [150:22] 7.1.11p2(9) Delete "function". {11-107r1} [150:42] 7.1.11p4, item (5), delete "inquiry". {12-112r1} [151:13-15] 7.1.11p9, Change "If" to "A generic entity referenced in", Change "module or submodule includes a reference to a generic entity, that generic entity" to "scoping unit", Change "the module or submodule" to "that scoping unit, or its host scoping unit,", Making the whole paragraph read: "A generic entity referenced in a specification expression in the \si{specification-part} of a scoping unit shall have no specific procedures defined in that scoping unit, or its host scoping unit, subsequent to the specification expression." {Corrigendum 1, F08/0050} [151:27] 7.1.12p1(4) Delete "function". {11-107r1} [152:4] In 7.1.12 Constant expression, p1, list item (6), Insert "or" before "THIS_IMAGE". {12-112r1} [152:26-28] 7.1.12p3, Change "If" to "A generic entity referenced in", Change "module or submodule includes a reference to a generic entity, that generic entity" to "scoping unit", Change "the module or submodule" to "that scoping unit, or its host scoping unit,", Making the whole paragraph read: "A generic entity referenced in a constant expression in the \si{specification-part} of a scoping unit shall have no specific procedures defined in that scoping unit, or its host scoping unit, subsequent to the constant expression." {Corrigendum 1, F08/0050} [160:15] 7.2.2.4p6, Delete "either both be deferred or both". {11-206} [168:4-5] Hyphenate "pointer assign". {12-113r1} [175:40] 8.1.6.4p2, "Transfer of control" -> "Branching". {11-169r2} [177:28-29] 8.1.6.6.4p1, In the 4th bullet item, Change "Control is transferred from" to "A branch occurs", Making that bullet item: "- A branch occurs within the range of a DO construct and the branch target statement is neither the \si{end-do} nor within the range of the same DO construct.". {Corrigendum 1, F08/0028} [178:8-9] 8.1.6.7p1, 2nd bullet item, Change "referenced" to "used", After "an iteration" insert "other than as the pointer in pointer assignment, allocation, or nullification,", After "that iteration" delete comma. {Corrigendum 1, F08/0023} [178:13-14] 8.1.6.7p1, 3rd bullet item, Change "An object that is allocated or deallocated in only one iteration shall not be deallocated, allocated, referenced, defined, or become undefined in a different iteration." to "An allocatable object that is referenced, defined, deallocated, or has its allocation status, dynamic type, or a deferred type parameter value inquired about, in any iteration, either shall be previously allocated in that iteration or shall not be allocated or deallocated in any other iteration." {Corrigendum 1, F08/0025} [178:15-16] 8.1.6.7p1, 4th bullet item, Change "An input/output statement shall not write data to a file record or position in one iteration and read from the same record or position in a different iteration." to "If data are written to a file record or position in one iteration, that record or position in that file shall not be read from or written to in a different iteration." {Corrigendum 1, F08/0022} [178:17-18+] 8.1.6.7p1, 5th (and last) bullet item, Delete bullet item "Records ... order.", and Insert a new normal paragraph after the list "If records are written to a file connected for sequential access by more than one iteration, the ordering between records written by different iterations is indeterminate." {Corrigendum 1, F08/0022} [202:24] 9.3.4.4p6, "data" -> "a datum". {10-147r2} [226:10-11] 9.6.4.8p13, After "data transfer statement." Delete " , if contained ... DT edit descriptor.". {11-170r1} [227:15,17-18] 9.6.4.8p25-p26, In p25, delete "record positioning", In p26, Change "A record positioning edit descriptor, such as TL and TR," to "The edit descriptors T and TL", and Change "record position" to "file position", twice. {Corrigendum 1, F03/0048} [229:6] 9.6.4.8.4p2 Dehyphenate "derived-type". {11-107r1} [246:15+] 10.3.1, after C1002, insert new constraint "C1002A (R1005) An \si{unlimited-format-item} shall contain at least one data edit descriptor." {Corrigendum 1, F08/0030} [249:11+,19-20] 10.4, Between p7 and p8, insert a new paragraph 7a: "If format control encounters the rightmost parenthesis of an unlimited format item, format control reverts to the leftmost parenthesis of that unlimited format item. This reversion of format control has no effect on the changeable modes (9.5.2)." And in the last sentence of p8, Change "If ..., the" to "The". [275:6] In 11.2.3 Submodules, p2, After "second element is the submodule name" insert "; the submodule name by itself is not a local or global identifier". {12-112r1} [284:8] 12.4.3.4.2p1 Replace "function" by "dummy". {11-107r1} [286:4] 12.4.3.4.5p3, 3rd bullet item, After "the other has the POINTER attribute" insert "and not the INTENT (IN) attribute". {Corrigendum 1, F08/0001} [286:12-13,38] 12.4.3.4.5, constraint C1214 and p5, In C1214, change "two ... identifier" to "if two procedures have the same generic identifier, their \cf{dtv} arguments (9.6.4.8.3)", After the contraint, insert new UTI: "\begin{UTI}{C1-F08/0053} This means that in any scope where defined i/o is available, two procedures that have the generic identifier e.g. \cf{fred} will need to have \cf{dtv} arguments that are distinguishable, regardless of the rest of their argument lists. This would seem to be a serious problem with backwards compatibility. \end{UTI}" In p5, Change "applies to" to "is consistent with". {Corrigendum 1, F08/0053} [287:15+] 12.4.3.6, R1213, After "\bnfo{POINTER}\\" insert "\bnfo{PROTECTED\\". {Corrigendum 1, F08/0037} [289:0+11] NOTE 12.15 Add ", NOPASS" after "POINTER" in the declaration of "COMPONENT". {11-130r2} [286:31] C1215: Replace the full stop at the end of the line with a comma. {11-136r3} [293:10-11] 12.5.2.4p3, Replace "a default character or character with the C character kind (15.2.2) actual argument" with "an actual argument of type character with default kind or C character kind (15.2.2)". {10-147r2} [293:13] 12.5.2.4p4, Replace "default character or of type character with the" with "of type character with default kind or". {10-147r2} [293:16] 12.5.2.4p5, "the actual" -> "its effective". {11-170r1} [295:3] 12.5.2.4p18, Between "If" and "the actual argument is an array section having a vector subscript", insert "the procedure is nonelemental and". {Corrigendum 1, F08/0014} [295:NOTE 12.27] Hyphenate "pointer assigning". {12-113r1} [296:32] 12.5.2.7p2, After "does not have" Delete "the". {10-147r2} [297:5+2] 12.5.2.8 NOTE 12.29, Delete blank line at beginning of note. {11-206} [297:5+13,5+33] 12.5.2.8 NOTE 12.29 and NOTE 12.30, After "REAL A(1000)", change "[:]" to "[*]", twice. {11-206} [298:22] 12.5.2.9p5 Delete "the" before "INTENT(IN)". {11-107r1} [302:14-15] 12.5.4p1 Replace "control may be transferred to one of the statements indicated" by "a branch to one of the statements indicated might occur". {11-102r2} [312:23+] 12.7, after Note 12.47, Insert new constraint "C1278a An INTENT (OUT) dummy argument of a pure procedure shall not be polymorphic." {Corrigendum 1, F08/0033} [313:4+] 12.7, after constraint C1284, Insert new constraint and note: "C1284a A statement that might result in the deallocation of a polymorphic entity is not permitted in a pure procedure." NOTE 12.48x Apart from the DEALLOCATE statement, this includes intrinsic assignment if the variable has a polymorphic allocatable component at any level of component selection that does not involve a pointer component but which might involve one or more allocatable components." {Corrigendum 1, F08/0033} [314:4-5] 12.8.1, in constraint C1290, Delete ", and shall not have a type parameter ... constant expression". {Corrigendum 1, F08/0049} [314:5+] After constraint C1290, insert two new constraints "C1290a The of an elemental subprogram shall specify the intents of all of its dummy arguments that do not have the VALUE attribute. C1290b In the that specifies a type parameter value of the result of an elemental function, an object designator with a dummy argument of the function as the base object shall only appear as the subject of a specification inquiry, and that specification inquiry shall not depend on a property that is deferred." {Corrigendum 1, F08/0024 and F08/0049} [314:5+] At the end of subclause 12.8.1 (after the new constraints), Insert the new paragraph "In a reference to an elemental procedure, if any argument is an array, all actual arguments that correspond to INTENT (OUT) or INTENT (INOUT) dummy arguments shall be arrays. All actual arguments shall be conformable." {Corrigendum 1, F08/0018} [314:9-10] 12.8.2p1, delete the sentence "For those elemental ... conformable.". {Corrigendum 1, F08/0018} [314:14] 12.8.3p1 Replace "subroutine" by "procedure". Then move the first sentence "An elemental ... arguments" to be at the end of 12.8.1p1 at [313:13]. {11-107r1} [314:14-17] 12.8.3p1, delete the sentence "In a reference ... conformable with them.". {Corrigendum 1, F08/0018} [316:23-25] 13.2.4 DIM arguments and reduction functions, p1, In the second sentence, which begins "These functions", Change "an optional" to "a", and change ", if present, specifies" to "can specify". {Corrigendum 1, F08/0003} [319:8+4] 13.5 Standard generic intrinsic procedures, Table 13.1, entry for ACHAR, "Convert ASCII code value to character" ->"Character from ASCII code value". {12-126r2} [319:8+7] Same table, entry for ADJUSTL, "Rotate string to remove leading blanks" -> "Left-justified string value". {12-126r2} [319:8+8] Same table, entry for ADJUSTR, "Rotate string to remove leading blanks" -> "Right-justified string value". {12-126r2} [319:8+11] Same table, entry for ALL, "Reduce logical array by AND operation" ->"Array reduced by .AND. operator" {12-126r2} [319:8+11] Same table, same entry, "(MASK [, DIM])" -> "(MASK) or (MASK, DIM)". {Corrigendum 1, F08/0003} [319:8+12] Same table, entry for ALLOCATED, "Query allocation status", ->"Allocation status of allocatable variable". {12-126r2} [319:8+14] Same table, entry for ANY, "Reduce logical array with OR operation" ->"Array reduced by .OR. operator" {12-126r2} [319:8+14] Same table, same entry, "(MASK [, DIM])" -> "(MASK) or (MASK, DIM)". {Corrigendum 1, F08/0003} [319:8+17] Same table, entry for ASSOCIATED, "Query pointer association status" ->"Pointer association status inquiry" {12-126r2} [320:top+5] Same table, entry for CHAR, "Convert code value to character" ->"Character from code value". {12-126r2} [320:top+14] Same table, entry for CPU_TIME, "Return the processor time" -> "Processor time used". {12-126r2} [320:top+16] Same table, entry for DATE_AND_TIME, "Return date and time" -> "Date and time". {12-126r2} [320:bottom-20] Same table, entry for EXTENDS_TYPE_OF, "Query dynamic type for extension" ->"Dynamic type extension inquiry". {12-126r2} [320:bottom-12] Same table, entry for GET_COMMAND, "Query program invocation command" ->"Get program invocation command". {12-126r2} [320:bottom-9-10] Same table, entry for GET_COMMAND_ARGUMENT, "Query arguments from program invocation" ->"Get program invocation argument". {12-126r2} [320:bottom-8] Same table, entry for GET_ENVIRONMENT_VARIABLE, "Query environment variable" ->"Get environment variable". {12-126r2} [320:bottom-3] Same table, entry for IACHAR, "Return ASCII code ..." -> "ASCII code ...". {12-126r2} [320:bottom-1-2] Same table, entry for IALL, "Reduce array with bitwise AND operation" -> "Reduce array by IAND function". {12-126r2} [321:top+4-5] Same table, entry for IANY, "Reduce array with bitwise OR operation" -> "Reduce array by IOR function". {12-126r2} [321:top+9] Same table, entry for ICHAR, "Return code ..." -> "Code ...". {12-126r2} [321:top+11] Same table, entry for IMAGE_INDEX, "Convert cosubscripts to image index" ->"Image index from cosubscripts". {12-126r2} [321:top+12] Same table, entry for INDEX, "Search for a substring" ->"Character string search". {12-126r2} [321:top+16-17] Same table, entry for IPARITY, "with bitwise exclusive OR operation" ->"by IEOR function". {12-126r2} [321:top+20] Same table, entry for IS_CONTIGUOUS, "Test contiguity of an array (5.3.7)" -> "Array contiguity test (5.3.7)". {12-126r2} [321:top+21] Same table, entry for IS_IOSTAT_END, "Test IOSTAT value for end-of-file" -> "IOSTAT value test for end-of-file". {12-126r2} [321:top+22] Same table, entry for IS_IOSTAT_EOR, "Test IOSTAT value for end-of-record" -> "IOSTAT value test for end-of-record". {12-126r2} [321:bottom-8] Same table, entry for MERGE, "Choose between two expression values" -> "Expression value selection". {12-126r2} [322:top+13] Same table, entry for NORM2, "(X [, DIM])" -> "(X) or (X, DIM)". {Corrigendum 1, F08/0003} [322:top+18] Same table, entry for PACK, "Pack an array into a vector" ->"Array packed into a vector". {12-126r2} [322:top+20] Same table, entry for PARITY, "Reduce array with .NEQV. operation" -> "Array reduced by .NEQV. operator". {12-126r2} [322:top+20] Same table, same entry, "(MASK [, DIM])" -> "(MASK) or (MASK, DIM)". {Corrigendum 1, F08/0003} [322:top+24] Same table, entry for PRESENT, "Query presence of ..." -> "Presence of ...". {12-126r2} [322:top+25] Same table, entry for PRODUCT, "Reduce array by multiplication" -> "Array reduced by multiplication". {12-126r2} [322:bottom-22] Same table, entry for REPEAT, "Repeatedly concatenate a string" ->"Repetitive string concatenation". {12-126r2} [322:bottom-20-21] Same table, entry for RESHAPE, "Construct an array of an arbitrary shape" -> "Arbitrary shape array construction". {12-126r2} [322:bottom-17] Same table, entry for SAME_TYPE_AS, "Query dynamic types for equality" ->"Dynamic type equality test". {12-126r2} [322:bottom-15-16] Same table, entry for SCALE, "Scale real number by a power of the base" ->"Real number scaled by radix power". {12-126r2} [322:bottom-14] Same table, entry for SCAN, "Search for any one of a set of characters" ->"Character set membership search". {12-126r2} [322-bottom-12] Same table, entry for SELECTED_CHAR_KIND, "Select a character kind" -> "Character kind selection". {12-126r2} [322-bottom-10] Same table, entry for SELECTED_INT_KIND, "Select an integer kind" -> "Integer kind selection". {12-126r2} [322-bottom-8] Same table, entry for SELECTED_REAL_KIND, "Select a real kind" -> "Real kind selection". {12-126r2} [322-bottom-6] Same table, entry for SET_EXPONENT, "Set floating-point exponent" -> "Real value with specified exponent". {12-126r2} [323:top+7] Same table, entry for SPREAD, "Form higher-rank array by replication" -> "Value replicated in a new dimension". {12-126r2} [323:top+17] Same table, second entry for THIS_IMAGE, "(COARRAY [, DIM])" -> "(COARRAY) or (COARRAY, DIM)". {Corrigendum 1, F08/0003} [323:1+-3] Same table, entry for UNPACK, "Unpack a vector into an array" -> "Vector unpacked into an array". {12-126r2} [323:1+-2] Same table, entry for VERIFY, "Search for a character not in a given set" -> "Character set non-membership search". {12-126r2} [c13 entirety] Change "Description" paragraphs to match the new wording. {12-126r2} [323:9] 13.5p5, "results returned from" -> "values assigned by". {12-126r2} [323:10+2] 13.5, Note 13.8, "returns" -> "assigns". {12-126r2} [324:1] 13.6p2, Replace "Note ... bullet (*) is" With "The functions listed in Table 13.3 are". [324:2] "C1220"->"C1235". [324:2] Before "or as", Insert "as an initial target in a procedure declaration statement (12.4.3.6, C1220),". [324:2-3] After "or" replace "as the interface ... statement" with "to specify an interface". [throughout document] Change "specific intrinsic procedure listed in 13.6 and not marked with a bullet (*)" to "specific intrinsic procedure listed in Table 13.2". {11-140r1} [324:3+0-325:1-0] Split the table into two separate tables: "13.2 Unrestricted specific intrinsic functions" "13.3 Restricted specific intrinsic functions" {11-140r1} [325:7-8] 13.7.1 General, p2, "returned in a subroutine argument or function result" -> "assigned to a subroutine argument or returned by a function reference". {12-126r2} [328:2] 13.7.10 heading, "ALL (MASK [, DIM])" -> "ALL (MASK) or ALL (MASK, DIM)". {Corrigendum 1, F08/0003} {{COMMENT: Reversed ordering of forms.}} [328:7] 13.7.10p3 (Arguments), DIM argument, delete "(optional)". {Corrigendum 1, F08/0003} [328:10] 13.7.10p4 (Result Characteristics), "is absent" -> "does not appear". {Corrigendum 1, F08/0003} [329:6] 13.7.13 heading, "ANY (MASK [, DIM])" -> "ANY (MASK) or ANY (MASK, DIM)". {Corrigendum 1, F08/0003} {{COMMENT: Reversed ordering of forms.}} [329:11] 13.7.13p3 (Arguments), DIM argument, delete "(optional)". {Corrigendum 1, F08/0003} [329:14] 13.7.13p4 (Result Characteristics), "is absent" -> "does not appear". {Corrigendum 1, F08/0003} [330:8] 13.7.16p1 Insert a description for ASSOCIATED: "Query pointer association status". {11-107r1} [332:25] 13.7.21 ATOMIC_REF, p4 (Example), "(I [3], VAL)" -> "(VAL, I [3])". {Corrigendum 1, F08/0027} [333:12-14] 13.7.24 BESSEL_JN etc., p3 (Arguments), for both N1 and N2, "of type integer and nonnegative" ->"an integer scalar with a nonnegative value", for X, after "real" insert "; if the function is transformational, X shall be scalar". {Corrigendum 1, F08/0019} [334:12-14] 13.7.27 BESSEL_YN etc., p3 (Arguments), for both N1 and N2, "of type integer and nonnegative" ->"an integer scalar with a nonnegative value", for X, after "real" insert "; if the function is transformational, X shall be scalar". {Corrigendum 1, F08/0019} [337:26] 13.7.36 CMPLX, Result Value paragraph, second sentence, Delete ", KIND". {12-115r2} [337:28] Append new sentence to paragraph "The result of CMPLX(X,Y) is the same as that of CMPLX(X,Y,KIND(0.0)).". {12-115r2} [338:31] 13.7.41 COUNT, p3 (Arguments), DIM argument, after "optional dummy argument" insert ", a disassociated pointer, or an unallocated allocatable". {Corrigendum 1, F08/0003} [339:4] 13.7.41 COUNT, Result Value paragraph, Change "The result of COUNT(MASK)" to "If DIM is absent or MASK has rank one, the result". {12-115r2} [339:6] Delete "If MASK ... COUNT (MASK).". {12-115r2} [339:7-8] Change "Otherwise" to "If DIM is present and MASK has rank n>1", Change "of COUNT(MASK,DIM)" to "of the result", Change "COUNT (MASK ($s_1$, ..., $s_n$))" to "the number of true elements of MASK ($s_1$, ..., $s_n$)". NOTE: Thus making that sentence read "If DIM is present and MASK has rank $n > 1$, element ( $s_1$, $s_2$, ..., $s_{\text{DIM}-1}, $s_{\text{DIM}+1}$, ..., $s_n$) of the result has a value equal to the number of true elements of MASK( $s_1$, $s_2$, ..., $s_{\text{DIM}-1}, :, $s_{\text{DIM}+1}$, ..., $s_n$)." {12-115r2} [339:17-18] 13.7.42 CPU_TIME, Argument paragraph, Replace last two sentences "It ... returned" with "It is an INTENT (OUT) argument. If the processor cannot provide a meaningful value for the time, it is assigned a processor-dependent negative value; otherwise it is assigned a processor-dependent approximation to the processor time in seconds." {12-126r2} [341:6] 13.7.44 DATE_AND_TIME, Arguments paragraph, "returned in" -> "assigned to". {12-126r2} [344:13-14] Delete the line "bits B'0'" {12-109} [347:31-32] 13.7.61 FINDLOC, p3 (Arguments), VALUE argument, "for relational ... 7.1.5.5.2" -> "for the operator == or the operator .EQV.". {Corrigendum 1, F08/0020} [348:9] 13.7.61 FINDLOC, paragraph 5 (Result Value), Case (i), "the $i^{th}$ subscript returned lies" -> "the $i^{th}$ element value is". [348:13] Same paragraph, Case (ii) "the $i^{th}$ subscript returned lies" -> "the $i^{th}$ element value is". [348:26-29] 13.7.61, paragraph (still in Result Value!), replace with "If DIM is not present, more than one element matches VALUE, and BACK is absent or present with the value false, the value returned indicates the first such element, taken in array element order. If DIM is not present and BACK is present with the value true, the value returned indicates the last such element, taken in array element order." {12-126r2} [350:11-12] "argument. It" -> "argument that", i.e. joining the unnumbered subparagraphs together. [350:13-15] 13.7.66 GET_COMMAND_ARGUMENT, p3 (Arguments), NUMBER, Delete "Useful ... below).". [350:16] Change "is defined to be" -> "always exists, and is". [350:17] After "concept" insert "; otherwise, the value of command argument 0 is processor dependent". [350:17-18] Delete "NUMBER ... arguments.". [350:19-20] Typesetting: join this unnumbered paragraph to the remnants of the previous one. [350:22-23] Replace "It is ... blanks." with "If the command argument specified by NUMBER exists, its value is assigned to VALUE; otherwise, VALUE is assigned all blanks." [350:24-25] "It is assigned ... NUMBER." -> "If the command argument specified by NUMBER exists, its significant length is assigned to LENGTH; otherwise, LENGTH is assigned the value 0." [350:25-26] "The significant length ... blanks." -> "It is processor dependent whether the significant length includes trailing blanks.". [350:28-29] Delete "If the ... assigned.". [350:30-33] "It is assigned the ... fails." -> "If NUMBER is less than zero or greater than the argument count that would be returned by the intrinsic function COMMAND_ARGUMENT_COUNT, or command argument retrieval fails, STATUS is assigned a processor-dependent positive value. Otherwise, if VALUE is present and has a length less than the significant length of the specified command argument, it is assigned the value -1.". [350:33+1-3] Delete NOTE 13.13. {12-127r2} [351:22] 13.6.67 GET_ENVIRONMENT_VARIABLE, p3 (Arguments), TRIM_NAME, "returned" -> "assigned". {12-126r2} [352:16-17] Change "and satisfies the inequality ... 127)" to "; it is non-negative and less than or equal to 127". {12-115r2} [352:17] 13.7.70 IACHAR, p5 (Result Value), "A processor-dependent value is returned" -> "The value of the result is processor dependent". {12-126r2} [355:11] 13.7.77, Result Value paragraph, Change "and is in the range ... $n - 1$" to "; it is non-negative and less than $n$". {12-115r2} [355:12] Before "For any", insert new sentence. "The kind type parameter of the result shall specify an integer kind that is capable of representing $n$." {12-115r2} SUPERCEDED: [356:18,21] In 13.7.80 INDEX, Result Value, Case (i) and Case (ii), Replace "value of I" with "integer I" {12-112r1} [356:18-24] 13.7.80 INDEX, Result Value, replace entire paragraph with 12-129.tex {12-129}. {***The LaTeX source from 12-129.tex is as follows***} \insubsection{INDEX}{~(STRING,~SUBSTRING~[,~BACK, KIND])} \desc{Character string search.} \class{Elemental function.} \arguments{} \intrinarg{STRING}{shall be of type character.} \intrinarg{SUBSTRING}{shall be of type character with the same kind type parameter as STRING.} \intrinarg{BACK (optional)}{shall be of type logical.} \intrinarg{KIND (optional)}{shall be a scalar integer initialization expression.} \reschar{Integer. If KIND is present, the kind type parameter is that specified by the value of KIND; otherwise the kind type parameter is that of default integer type.} \resvalue{} \begin{incase} \item If STRING \% LEN $<$ SUBSTRING \% LEN, the result has the value zero. \item Otherwise, if there is an integer I in the range 1 $\leq$ I $\leq$ STRING \% LEN $-$ SUBSTRING \% LEN $+$ 1, such that STRING(I : I + SUBSTRING \% LEN $-$ 1) is equal to SUBSTRING, the result has the smallest such I if BACK is absent or present with the value false, and the greatest such I if BACK is present with the value true. \item Otherwise, the result has the value zero if BACK is absent or present with the value false, or has a value equal to STRING \% LEN + 1 if BACK is present with the value true. \end{incase} \examples{INDEX~('FORTRAN',~'R') has the value 3.\\ INDEX~('FORTRAN',~'R',~BACK~=~.TRUE.) has the value 5.} {***END 12-129.txt inclusion***} [360:4] 13.7.90 LBOUND, p3 (Arguments), DIM argument, after "optional dummy argument" insert ", a disassociated pointer, or an unallocated allocatable.". {Corrigendum 1, F08/0003} [360:10-11] 13.7.90 LBOUND, Result Value paragraph, Before "ARRAY is a whole array" insert "DIM is present," and after "whole array" insert a comma, Change "LBOUND (ARRAY, DIM)" to "the result" [360:12] After "Otherwise" insert ", if DIM is present,". [360:14] Append sentence "LBOUND(ARRAY,KIND=KIND) has a value whose $i^{th}$ element is equal to LBOUND (ARRAY, $i$, KIND), for $i =$ 1, 2, ..., $n$, where $n$ is the rank of ARRAY." {12-115r2} [360:25] 13.7.91 LCOUND, p3 (Arguments), DIM argument, after "optional dummy argument" insert ", a disassociated pointer, or an unallocated allocatable.". {Corrigendum 1, F08/0003} [360:31] 13.7.91 LCOBOUND, Result Value paragraph, Change "LCOBOUND (COARRAY, DIM)" to "If DIM is present, the result". And change "cosubscript" to "codimension". [360:33] Replace "LCOBOUND (COARRAY)" with "If DIM is absent, the result". [360:34] Replace "LCOBOUND (COARRAY, $i$)" with "the lower cobound for codimension $i$ of COARRAY". {12-115r2} [365:4] Change "Bits." to "Integer." {12-110} [367:1] "The result of MAXLOC (ARRAY)" ->"If DIM does not appear and MASK is absent, the result" [367:5] "The result of MAXLOC (ARRAY, MASK = MASK)" ->"If DIM does not appear and MASK is present, the result". [367:10-11] ", MAXLOC (ARRAY, DIM = DIM [, MASK = MASK]) is a scalar whose value is" ->"and DIM is specified, the result has a value equal to" [367:11,14] Before "]" insert ", KIND = KIND, BACK = BACK". [367:11] After "Otherwise," insert "if DIM is specified,". {12-115r2} [MINLOC] Same as MAXLOC [367:1;5;10-11;11,14;11] mutatis mutandis. [UBOUND] Same as LBOUND [360:10-11;12;14] mutatis mutandis. [UCOBOUND] Same as LCOBOUND [360:31;33;34] mutatis mutandis. [374:24] 13.7.123 heading "NORM2 (X [, DIM])" -> "NORM2 (X) or NORM2 (X, DIM)". {Corrigendum 1, F08/0003} [374:29] 13.7.123p3 (Arguments), DIM argument, delete "(optional)". {Corrigendum 1, F08/0003} [374:31] 13.7.123p4 (Result Characteristics), "is absent" -> "does not appear". {Corrigendum 1, F08/0003} [374:32] 13.7.123 NORM2, p4 (Result Characteristics), "$d_{\text{DIM-1}}$, $d_{\text{DIM+1}}$" ->$d_{\text{DIM}-1}$, $d_{\text{DIM}+1}$". {12-126r2} [377:20] 13.7.128 heading, "PARITY (MASK [, DIM])" -> "PARITY (MASK) or PARITY (MASK, DIM)". {Corrigendum 1, F08/0003} {{COMMENT: Reversed ordering of forms.}} [377:25] 13.7.128p3 (Arguments), DIM argument, delete "(optional)". {Corrigendum 1, F08/0003} [377:28] 13.7.128p4 (Result Characteristics), "is absent" -> "does not appear". {Corrigendum 1, F08/0003} [378:30-31] 13.7.132p3, Replace "It may have any type ... INTENT attribute." With "There are no other requirements on A.". {10-147r2} [380:25] 13.7.136 RANDOM_SEED, p5 (within Arguments), "may be specified or returned" ->"can be retrieved or changed". [380:26] "returned by" -> "assigned to". [380:27] "specified by" -> "of". {12-126r2} [390:6] 13.7.160 STORAGE_SIZE, p3 (Arguments), A argument, around "has any deferred type parameters", insert "is unlimited polymorphic or" before, and insert a comma after. {Corrigendum 1, F08/0021} [392:6] 13.7.165 heading "or THIS_IMAGE (COARRAY [, DIM])" -> ", THIS_IMAGE (COARRAY), or THIS_IMAGE (COARRAY, DIM)". {Corrigendum 1, F08/0003} {{COMMENT: Added comma.}} [392:11] 13.7.165p3 (Arguments), DIM argument, delete "(optional)". {Corrigendum 1, F08/0003} [394:27] 13.7.171 UBOUND, p3 (Arguments), DIM argument, after "optional dummy argument" insert ", a disassociated pointer, or an unallocated allocatable". {Corrigendum 1, F08/0003} [395:11] 13.7.172 UCOBOUND, p3 (Arguments), DIM argument, after "optional dummy argument" insert ", a disassociated pointer, or an unallocated allocatable". {Corrigendum 1, F08/0003} [397:23] In 13.8.2.6 COMPILER_OPTIONS, Class paragraph, Change "Inquiry" to "Transformational". {12-112r1} [398:1] In 13.8.2.7 COMPILER_VERSION, Class paragraph, Change "Inquiry" to "Transformational". {12-112r1} [406:15+] 14.9 IEEE arithmetic, p1, after second item in bullet list, insert new bullet item "- the IEEE function abs shall be provided by the intrinsic function ABS,". {Corrigendum 1, F08/0003} [407:24+7] 14.10, table 14.1, Delete the second IEEE_IS_FINITE line (the one ending "being finite."). {10-214} [443:12] In 16.5.1.2 Argument association, p1, Change "correspondance" to "correspondence". {12-112r1} [448:16-] 16.5.2.5p1, before item (9), insert new item, "(8a) execution of an instance of a subprogram completes, the pointer is associated with a dummy argument of the procedure, and (a) the effective argument does not have the TARGET attribute or is an array section with a vector subscript, or (b) the dummy argument has the VALUE attribute," {11-247} [448:42] Hyphenate "pointer assigned". {12-113r1} [455:4-10] 16.6.6 Events that cause variables to become undefined, replace item "(1) With the exceptions ... to become undefined." with "(1) When a scalar variable of intrinsic type becomes defined, all totally associated variables of different type become undefined. When a double precision scalar variable becomes defined, all partially associated scalar variables become undefined. When a scalar variable becomes defined, all partially associated double precision scalar variables become undefined." {Corrigendum 1, F03/0124} [462:6+] Insert new bullet points at an appropriate point in Annex A, "- the value of command argument zero, if the processor does not support the concept of a command name; - whether the significant length of a command argument includes trailing blanks;" {12-127r2} [Annex B] Move B.1p3, appropriately modified, into 1.6. {12-113r1} [487:28] C.6.2 Nonadvancing input/output, p1, immediately before "ADVANCE= specifier" delete "record positioning". {Corrigendum 1, F03/0048} [505:5] C.8.4p16, last sentence, Change "these these entities" to "these entities". {10-214} [527:18] C.13.3.6 Vector norms, p3, "|X_i|" -> "X_i^2", i.e. square it not abs it. {Corrigendum 1, F08/0036} {{COMMENT: removed redundant abs-ing.}} [index] Index "label" as "see statement label" instead of having a separate list of pages. {12-105r1} C. Edits under consideration ---------------------------- [c14] Investigate reorganisation of the IEEE module descriptions to make it easier to find and understand the non-procedure entities (including rewriting 14.9p1). {Deferred to WG5 decision.} D. Rationale for accepted edits ------------------------------- None. E. For future consideration --------------------------- (1) [36:4] 2.4.3.3 change "rank" to "shape". Discussion: 7.1.9 claims to specify the "Type, type parameters, and shape of an expression", but a disassociated pointer (this is an acceptable result of an expression in some contexts) has rank but no shape. 2.4.3.3 is probably ok as is, but 7.1.9 looks dubious. (2) [441:17-20 16.3.3] Delete subclause 16.3.3. Discussion: This is because it duplicates 12.6.2.2p4 [307:13-21]. F. Rejected suggestions. ------------------------ [133:8] 7.1.1p3, make wording more like 2.4.3.3, After "Evaluation of an expression produces a " Change "value, which has" To "data entity. The data entity has" Answer: Use of the term "data entity", which can refer to practically anything, instead of the term "value", would be unnatural and lose specificity. {10-214} (2) [36:7] 2.4.3.4 change "rank" to "shape". Answer: The shape of a function result is not necessarily determined by the interface of the function, so this change would be incorrect. {10-214} ===END===