J3/13-008r1 Date: 2013/08/21 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} [throughout] Unindex "separate interface body" on p281, index "module procedure interface body" in 12.4.1 (p279), 12.4.3.2p4 (p281) as definition, 12.6.2.1 C1249-51, {13-233} [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} [xv] Introduction, bullet 5 (beginning "Data usage and computation"), After the second sentence insert a new sentence "Multiple allocations are permitted in a single ALLOCATE statement with SOURCE=.". {Corrigendum 2, F08/0042} [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 six new paragraphs "Fortran 2003 permitted a sequence type to have type parameters; that is not permitted by this part of ISO/IEC 1539. 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. The form produced by the G edit descriptor for some values and some I/O rounding modes differs from that specified by Fortran 2003. Fortran 2003 required an explicit interface only for a procedure that was actually referenced in the scope, not merely passed as an actual argument. This part of ISO/IEC 1539 requires an explicit interface for a procedure under the conditions listed in 12.4.2.2, regardless of whether the procedure is referenced in the scope. Fortran 2003 permitted the result variable of a pure function to be a polymorphic allocatable variable, or to be finalizable by an impure final subroutine. These are not permitted by this part of ISO/IEC 1539. 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, subsequently modified by Corrigendum 2, F03/0120, F08/0032, F08/0054 and F08/0055} [24:27+] 1.6.3, append new bullet item to the list "- The form produced by the G edit descriptor with equal to zero differs from that specified by Fortran 95 for some values.". {Corrigendum 2, F08/0055} [25:6] 1.6.4, append new bullet item to the list (changing the previously last item to end with a semicolon) "- the G edit descriptor with equal to zero for some values.". {Corrigendum 2, F08/0055} [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} [54:18+2] 4.4.2.3, p3+, Note 4.8 Change "can distinguish" to "distinguishes". {Corrigendum 2, F08/0078} [62:19] 4.5.2.3, C436, after "sequence type," insert "the derived type shall not have type parameters,". {Corrigendum 2, F03/0120} [63:1-2] 4.5.2.3p1 delete "no type parameters,". {13-233} [63:9] 4.5.2.4, p2, second sentence, Delete "type parameters and". {Corrigendum 2, F03/0120} [73:12-13] 4.5.5, insert paragraph break between R448 and R449. {12-192r1} [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:15] Change "attribute attribute" to "attribute". {12-192r1} [74:26] Hyperlink "" to the syntax term. {11-140r1} [75:10] 4.5.6.1, C480, second sentence, Insert "noncoarray," before "nonpointer". {Corrigendum 2, F08/0072} [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:6-7] 4.5.6.2p2s2, change "A final ... been finalized." to "During this process, execution of a final subroutine for one of these entities shall not reference or define any of the other entities that have already been finalized." {13-277r1} [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, p2 (was p1 until previous edit), append new sentence "If an error condition occurs during deallocation, it is processor dependent whether finalization occurs.". {Corrigendum 2, F08/0081} [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, a nonpointer, nonallocatable, INTENT(OUT) dummy argument of that procedure is finalized before it becomes undefined. 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, as modified by Corrigendum 2, F08/0070} [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} [85:8-9] 4.8, p1, C4105, Change "all expressions in the shall be of that derived type and" to "the declared type of each expression in the shall be that derived type and" {Corrigendum 2, F08/0080} [85:10+] 4.8, after C4106 insert new constraint "C4106a (R472) The declared type of an shall not be abstract." {Corrigendum 2, F08/0080} [85:13-14] 4.8, p2, Change "each expression in the array constructor shall have the same length type parameters;" to "corresponding length type parameters of the declared type of each expression shall have the same value;". {Corrigendum 2, F08/0080} [85:18] 4.8, p3, After "Each value is converted to the" insert "type and". {Corrigendum 2, F08/0080} [93:7-8] 5.3.7p1, Change "can only be argument associated with a contiguous effective argument" to "is contiguous". {Corrigendum 2, F08/0061} [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} [97:13] 5.3.10, C541, Change "An entity" to "A dummy argument of a nonintrinsic procedure". {Corrigendum 2, F08/0040} [104:26-27] 5.4.7, C566, replace whole constraint with "C566 (R536) A that is a shall be a . Each subscript, section subscript, substring starting point, and substring ending point in the variable shall be a constant expression.". {Corrigendum 2, F08/0077} [105:41] 5.4.7p9 After "data-pointer-initialization compatible" insert "(4.5.4.6)" viz "(\ref{Default initialization for components})". {12-105r1} [109:16] 5.5, p3, last sentence, Change "an internal or module procedure" to "a BLOCK construct, internal subprogram, or module subprogram". {F08/0074} [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, type parameters, and shape" to "declared type, kind type parameters of the declared type, and rank". {Corrigendum 1, F08/0002, as modified by Corrigendum 2, F08/0079} [118:22-23] In 6.4.1p3, change "Both the starting point and the ending point shall be within the range 1, 2, ..., n [where n is the length of the string] unless the starting point exceeds the ending point, in which case the substring has length zero." to "If the starting point is greater than the ending point, the substring has length zero; otherwise, both the starting point and the ending point shall be within the range 1, 2, ..., n." {12-192r1} [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} [126:31-33] 6.7.1.1, C633, replace whole constraint with two constraints: "C633 (R626) If an is an array, either shall appear in its , or shall appear in the ALLOCATE statement and have the same rank as the . C633a (R631) If is scalar, shall not appear.". {Corrigendum 2, F08/0042} [127:5] 6.7.1.1, C639, replace whole constraint with "C639 (R626) If appears, the kind type parameters of each shall have the same values as the corresponding type parameters of .". {Corrigendum 2, F08/0042} [127:18-19] 6.7.1.1, p4, replace whole paragraph with "If an is a coarray, the ALLOCATE statement shall not have a with a dynamic type of C_PTR, C_FUNPTR, or LOCK_TYPE, or which has a subcomponent whose dynamic type is LOCK_TYPE.". {Corrigendum 2, F08/0042} [128:24-26] 6.7.1.2, p7, Before "On successful", insert new sentence "If an is not polymorphic and the is polymorphic with a dynamic type that differs from its declared type, the value provided for that is the ancestor component of the that has the type of the ; otherwise, the value provided is the value of the ." And in the sentence that begins "On successful", Change "that of " to "the value provided", twice. {Corrigendum 2, F08/0056} [128:26] 6.7.1.2, p7, append new sentence "The is evaluated exactly once for each execution of an ALLOCATE statement.". {Corrigendum 2, F08/0042} [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} [130:27] 6.7.3.2p3, "an unsaved" -> "any unsaved allocated". {12-192r1} [131:12] 6.7.3.2, p8, append new sentence "If an error condition occurs during deallocation, it is processor dependent whether an allocated allocatable subobject is deallocated.". {Corrigendum 2, F08/0081} [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), After "THIS_IMAGE" insert ", or TRANSFER". {Corrigendum 2, F08/0066, overrides change in 12-112r1} [152:5] "A" -> "a". {13-233} [152:6+] 7.1.12, after list item (7) insert new item "(7a) A reference to the intrinsic function TRANSFER where each argument is a constant expression and each ultimate pointer component of the SOURCE argument is disassociated.". {Corrigendum 2, F08/0066} [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} [158:33-159:2] 7.2.2.2, C729, Change "an external ... bullet (.)" to "a specific intrinsic function listed in 13.6 and not marked with a bullet (.), or an external procedure that is accessed by use or host association, referenced in the scoping unit as a procedure, or that has the EXTERNAL attribute". {Corrigendum 2, F08/0060} [159:30-33] 7.2.2.3p9 Replace whole paragraph with "If appears, it specifies the upper and lower bounds of each dimension of the pointer, and thus the extents; the pointer target shall be simply contiguous (6.5.4) or of rank one, and shall not be a disassociated or undefined pointer. The number of elements of the pointer target shall not be less than the number implied by the . The elements of the pointer object are associated with those of the pointer target, in array element order; if the pointer target has more elements than specified for the pointer object, the remaining elements are not associated with the pointer object." {13-233} [160:15] 7.2.2.4p6, Delete "either both be deferred or both". {11-206} [168:4-5] Hyphenate "pointer assign". {12-113r1} [171:12] 8.1.3.3p2, prepend new sentence "The associating entity itself is a variable, but if the selector is not a definable variable, the associating entity is not definable and shall not be defined or become undefined." {13-277r1} [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} [188:23+] 8.5.1, p2, bullet list, before "STOP" bullet, insert new bullet "- a CALL statement that invokes the intrinsic subroutine MOVE_ALLOC with coarray arguments;". {Corrigendum 2, F08/0040} [200:13] 9.3.3.4p2, append "While connected for stream access, the file storage units of the file shall be read or written only by stream access input/output statements." {13-277r1} [200:15] 9.3.3.4p3, first bullet, delete. {13-277r1} [200:30-31] 9.3.3.4p4, fourth bullet, delete. {13-277r1} [202:24] 9.3.4.4p6, "data" -> "a datum". {10-147r2} [204:8,10] 9.5.1p2, before "or a NEWUNIT" insert "the \cf{unit} argument of an active defined input/output procedure (9.6.4.8)", Delete existing " (9.6.4.8)". {13-277r1} [213:3] 9.6.2.1, C917, Delete entire constraint C917. {13-277r1} [216:32-36] 9.6.2.15p1-2 replace entirely with "The SIZE= specifier in a nonadvancing input statement causes the variable specified to become defined with the count of the characters transferred from the file by data edit descriptors during the nonadvancing input operation. Blanks inserted as padding are not counted. For a synchronous input statement, this definition occurs when execution of the statement completes. For an asynchronous input statement, this definition occurs when the corresponding wait operation is performed." {13-233} [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} [243:3-5] 9.12, p5, Delete "on any , , or", and append this new sentence to the end of the paragraph "The value of an or of a FMT=, ID=, IOMSG=, IOSTAT= or SIZE= specifier shall not depend on the values of any or in the same statement.". {Corrigendum 2, F08/0096} [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". [258:14-] 10.7.5.2.2, p3+, insert new paragraph "If \si{d} is zero, \si{k}PE\si{w}.0 or \si{k}PE\si{w}.0E\si{e} editing is used for G\si{w}.0 editing or G\si{w}.0E\si{e} editing respectively." {Corrigendum 2, F08/0055} [258:15-20+8] Replace the second and subsequent sentences of paragraph 4 including the two internal pseudo-tables by "If the internal value is a zero value, let $s$ be one. If the internal value is a number other than zero, let $N$ be the decimal value that is the result of converting the internal value to \si{d} significant digits according to the I/O rounding mode and let $s$ be the integer such that $10^{s-1} \leq N < 10^s$. If $s < 0$ or $s > \si{d}$, \si{k}PE\si{w}.\si{d} or \si{k}PE\si{w}.\si{d}E\si{e} editing is used for G\si{w}.\si{d} editing or G\si{w}.\si{d}E\si{e} editing respectively, where \si{k} is the scale factor (10.8.5). If 0\leq$s$\leq\si{d}, the scale factor has no effect and F(\si{w}-\textit{n}).(\si{d}-$s$),n('b') editing is used where \textit{b} is a blank and \textit{n} is 4 for G\si{w}.\si{d} editing and \si{e}+2 for G\si{w}.\si{d}E\si{e} editing.". {Corrigendum 2, F08/0055} [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} [279:7] 12.4.1p1 Before "interface body", "separate"->"module procedure". {13-233} [279:11-17] 12.4.2.1p1 Replace the whole paragraph with "The interface of a procedure is either explicit or implicit. It is explicit if it is - an internal procedure, module procedure, or intrinsic procedure, - a subroutine, or a function with a separate result name, within the the scoping unit that defines it, or - a procedure declared by a procedure declaration statement that specifies an explicit interface, or by an interface body. Otherwise, the interface of the identifier is implicit. \obs{The interface of a statement function is always implicit.}" {12-173r2} [279:19] In 12.4.2.2p1, replace "A procedure ... and" with "Within the scope of a procedure identifier, the procedure shall have an explicit interface if \obs{it is not a statement function and}" {Corrigendum 2, F08/0054} [281:8] C1207 Replace "be" with "denote". {12-173r2} [281:9] C1208 Replace "be ... as" with "denote". {12-173r2} [281:11-12] 12.4.3.2, C1209, Replace entirely by "C1209 (R1201) An in a generic interface block shall not specify a procedure that is specified previously in any accessible interface with the same generic identifier.". {Corrigendum 2, F03/0019} [281:20] 12.4.3.2p4 Before "interface body", "separate"->"module procedure". {13-233} [284:1-] 12.4.3.4.1 Note 12.6+ Insert a new note: "NOTE 12.6a A within a derived type definition (4.5.5) specifies a generic identifier for a set of type-bound procedures." {12-173r2} [284:8] 12.4.3.4.2p1 Replace "function" by "dummy". {11-107r1} [285:13] 12.4.3.4.5p1 Delete "name". {12-173r2} [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 that generic identifier, their \cf{dtv} arguments (9.6.4.8.3)", In p5, Change "applies to" to "is consistent with". {Corrigendum 1, F08/0053, as modified by Corrigendum 2, F08/0082} [287:15+] 12.4.3.6, R1213, After "\bnfo{POINTER}\\" insert "\bnfo{PROTECTED\\". {Corrigendum 1, F08/0037} [288:2,4-5,8,9-10] 12.4.3.6p6-5 Change "procedures or procedure pointers" to "procedure entities" four times. {12-173r2} [286:31] C1215: Replace the full stop at the end of the line with a comma. {11-136r3} [289:0+11] NOTE 12.15 Add ", NOPASS" after "POINTER" in the declaration of "COMPONENT". {11-130r2} [289:22] 12.5.1 C1227 Insert "a generic name or" after "shall be", Delete "or procedure pointer". {12-173r2} [290:20+] 12.5.1p4, after C1235, insert "C1235a (R1223) shall not be a variable." {13-277r1} [292:16] 12.5.2.3p2, Change "the dummy argument" to a bullet item with "if the dummy argument is polymorphic, it" Insert after "that target" a semi-colon and another bullet item "if the dummy argument is nonpolymorphic, it becomes argument associated with the declared type part of that target". {Corrigendum 2, F08/0068} [292:18] p3 Change "it" to a bullet item with "if the dummy argument is polymorphic, it", Insert after "that actual argument" a semi-colon and another bullet item "if the dummy argument is nonpolymorphic, it becomes argument associated with the declared type part of that actual argument". {Corrigendum 2, F08/0068} [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:5] In 12.5.2.4 Ordinary dummy variables, paragraph 2, append "If the actual argument is a polymorphic assumed-size array, the dummy argument shall be polymorphic." {Corrigendum 2, F08/0067} [293:6] 12.5.2.4, beginning of paragraph 3, insert new sentence "The kind type parameter values of the actual argument shall agree with the corresponding ones of the dummy argument." and change "The type parameter values of the actual argument" to "The length type parameter values of a present actual argument". {Corrigendum 2, F03/0103} [293:10] 12.5.2.4, paragraph 4, before "scalar dummy argument" insert "present". {Corrigendum 2, F03/0103} [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} [294:40] 12.5.2.4p17, after "has INTENT (OUT)," change "the actual argument" to "the effective argument". [294:42-295:2] Delete last sentence "If ... undefined.". {Corrigendum 2, F08/0069} [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:16-17] 12.5.2.5, p1, replace whole paragraph with "The requirements in this subclause apply to an actual argument with the ALLOCATABLE or POINTER attribute that corresponds to a dummy argument with the same attribute." {Corrigendum 2, F08/0059} [295:NOTE 12.27] Hyphenate "pointer assigning". {12-113r1} [296:4-5] Delete paragraph 12.5.2.5p4 (and reinsert twice, see [296:12+] and [296:35]) {Corrigendum 2, F08/0059} [296:12+] 12.5.2.6p3+, insert copy of deleted paragraph 12.5.2.5p4 from [296:4-5] as a new paragraph. {Corrigendum 2, F08/0059} [296:32] 12.5.2.7p2, After "does not have" Delete "the". {10-147r2} [296:35] 12.5.2.7p3, append copy of deleted paragraph 12.5.2.5p4 from [296:4-5] as a new sentence. {Corrigendum 2, F08/0059} [297:5] 12.5.2.8, p2, insert at the end of the sentence "or an element of a simply contiguous array". {Corrigendum 2, F08/0048} [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} [298:25] 12.5.2.9p7 Delete" name" twice. {12-173r2} [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} [306:2,4,6] 12.6.2.1, C1249, C1250, and C1251 Before "interface body", "separate"->"module procedure", thrice. {13-233} [309:8-9] 12.6.2.5p1, delete last sentence "Its ... thereof.". {13-233} [309:23-25] 12.6.2.5p3, replace entirely with "The interface of a procedure defined by a module subprogram is explicitly declared by the to be the same as its module procedure interface body, it is recursive if and only if it is declared to be recursive by the interface body, and if it is a function its result variable name is determined by the FUNCTION statement in the interface body." {13-233} [310:20] 12.6.2.6p8, Append new statement: "A name that appears as a in an ENTRY statement shall not appear in any executable statement that precedes the first RESULT clause with that name." {Corrigendum 2, F08/0058} [310:23] 12.6.2.6p9, Append new statement: "A name that appears as a in an ENTRY statement shall not appear in the expression of a statement function that precedes the first RESULT clause with that name unless the name is also a dummy argument of that statement function." {Corrigendum 2, F08/0058} [310:25-26] 12.6.2.6p10 Change "procedure name referenced" to "referenced procedure". {12-173r2} [310:29] 12.6.2.6p11 Change "procedure name referenced" to "referenced procedure". {12-173r2} [312:12+] 12.7p1, Insert a list item as the second bullet "- a module procedure in an intrinsic module, if it is specified to be pure,". {Corrigendum 2, F08/0065} [312:19+] 12.7, after C1276, insert new constraints "C1276a The result variable of a pure function shall not be such that finalization of a reference to the function would reference an impure procedure. C1276b A pure function shall not have a polymorphic allocatable result variable.". {Corrigendum 2, F08/0032} [312:21+] 12.7 after C1277, insert new constraint "C1277a An INTENT(OUT) argument of a pure procedure shall not be such that finalization of the actual argument would reference an impure procedure." {Corrigendum 2, F08/0031} [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:bottom-1] Move BIT_SIZE up two lines (between BGT and BLE). {13-233} [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] Change "is prohibited from invoking" to "shall not invoke". [325:7-8] "returned in" -> "assigned to". [325:8] After "or" insert "returned as a". [325:8-12] Replace "outside ... invoked" with "not representable by objects of the specified type and type parameters". {Corrigendum 2, F08/0008, overrides 12-126r2} [325:12+] Insert new paragraph "If an IEEE infinity is assigned or returned by an intrinsic procedure, the intrinsic module IEEE_ARITHMETIC is accessible, and the actual arguments were finite numbers, the flag IEEE_OVERFLOW or IEEE_DIVIDE_BY_ZERO shall signal. If an IEEE NaN is assigned or returned, the actual arguments were finite numbers, the intrinsic module IEEE_ARITHMETIC is accessible, and the exception IEEE_INVALID is supported, the flag IEEE_INVALID shall signal. If no IEEE infinity or NaN is assigned or returned, these flags shall have the same status as when the intrinsic procedure was invoked." {Corrigendum 2, F08/0008} [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} [330:36+] 13.7.16, p5+, Insert new Note "NOTE 13.8a The references to TARGET in the above cases are referring to properties that might be possessed by the actual argument, so the case of TARGET being a disassociated pointer will be covered by case \textit{(iii)}, \textit{(vi)}, or \textit{(vii)}.". {Corrigendum 2, F08/0004} EDITOR NOTE: Added italicisation of the cases. [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} [335:12+] Move 13.7.32 BIT_SIZE to here, becoming 13.7.30. {13-233} [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:18] 13.7.67, p3, STATUS argument, After "either has no value" change "or" to a comma. After "assigned to VALUE," insert "or the VALUE argument is not present,". {Corrigendum 2, F08/0064} [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. [372:18,19] 13.7.118p3 MOVE_ALLOC, In FROM argument, "type and rank" -> "type, rank, and corank". In TO argument, After "same rank" insert "and corank". {Corrigendum 2, F08/0040} [372:29+] 13.7.118, p6+ Insert new paragraph immediately before "Example:" "When a reference to MOVE_ALLOC is executed for which the FROM argument is a coarray, there is an implicit synchronization of all images. On each image, execution of the segment (8.5.2) following the CALL statement is delayed until all other images have executed the same statement the same number of times.". {Corrigendum 2, F08/0040} [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} [387:32] 13.7.153, p5, Case (iv), Change "cannot distinguish" to "does not distinguish". {Corrigendum 2, F08/0078} [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:7] 13.8.2.1, p2, append new sentence "The module procedures described in 13.8.2 are pure.". {Corrigendum 2, F08/0065} [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} [399:11] 13.8.2.16p1, Delete "or type parameters,". {12-192r1} [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} [425:19+] 15.2.2p1+, insert new paragraph "A Fortran intrinsic type whose kind type parameter is one of the values in the module shall have the same representation as the C type with which it interoperates, for each value that a variable of that type can have. For C_BOOL, the internal representation of .TRUE._C_BOOL and .FALSE._C_BOOL shall be the same as those of the the C values (_Bool)true and (_Bool)false respectively.". {13-277r1} [426:17-18] 15.2.3.2p1, replace whole sentence "True ... entity." with "Query C pointer status." {13-277r1} [431:11-] 15.3.4, p1, before C1505, insert new constraint "C1504a (R425) A derived type with the BIND attribute shall have at least one component.". {Corrigendum 2, F08/0057} [442:4] 16.3.5p1 After the first sentence, insert new sentence "As an argument keyword, the name of a dummy argument of a procedure declared by a procedure declaration statement that specifies an explicit interface has a scope of the scoping unit containing the procedure declaration statement." {12-173r2} EDITOR NOTE: This contradicts other rules about scopes, so don't do it. [442:5] 16.3.5p1 Delete "or interface body". {12-173r2} [443:12] In 16.5.1.2 Argument association, p1, Change "correspondance" to "correspondence". {12-112r1} [443:27] 16.5.1.4p1 delete ", module subprogram, or submodule subprogram". {Module/submodule subprograms don't have host instances.} [443:28] Before "module procedure interface body" insert "module subprogram, submodule subprogram," and after it insert a comma. {13-233} [443:29] 16.5.1.4p1 Before "interface body", "separate"->"module procedure". {13-233} [444:29+2] 16.5.1.4 NOTE 16.8 Before "interface body", "separate"->"module procedure". {13-233} [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} [456:29-30] 16.6.6, item (22), insert spacing between bullet and text (twice). {12-192r1} [459:36+] A.2, After bullet "whether and when an object is finalized ... (4.5.6.3);", insert new bullet "- whether an object is finalized by a deallocation in which an error condition occurs (4.5.6.3);". {Corrigendum 2, F08/0081} [460:5+] A.2, After bullet "the order ... event described in 6.7.3.2;", Insert new bullet "- whether an allocated allocatable subobject is deallocated when an error condition occurs in the deallocation of an object (6.7.3.2);". {Corrigendum 2, F08/0081} [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===