09-138 To: J3 From: Malcolm Cohen Subject: Applying F03 corrigendum 4 to 09-007. Date: 2009 February 09 1. Introduction --------------- This document lists the interps in F2003 Corrigendum 4 together with their required action in F2008. 2. The Interps -------------- F95/0074: Interpretation - no edit required. F95/0102: Interpretation - no edit required. F03/0003: Erratum - edit required. F03/0004: Erratum - edit required. F03/0049: Erratum - edit required. F03/0073: Interpretation - no edit required. F03/0074: Erratum - edit required. F03/0075: Erratum - edit required. F03/0076: Interpretation - no edit required. F03/0077: Erratum - edit required. F03/0081: Interpretation - no edit required. F03/0082: Interpretation - no edit required. F03/0087: Interpretation - edit suggested for F2008 already done. F03/0098: Erratum - edit required. F03/0099: Erratum - edit required. Partially done already. F03/0102: Clarification - edit suggested for F2008. F03/0109: Erratum - edit required. F03/0111: Clarification - no edit required. F03/0113: Erratum - edit required. F03/0114: Erratum - already applied compatibly to F2008. F03/0117: Erratum - edit required. 3. Edits to 09-007 ------------------ [100-101: Notes in the middle of VOLATILE] Move to the end. {The edit from F03/0099 has already been applied here, but when looking at it I noticed there was no good reason for these notes to violate the recommendation in the ISO guidelines.} [122:7-8] Replace the existing definition which is "A <> is a named array, which may be either a named constant (5.1.2.10, 5.2.9) or a variable; no subscript list is appended to the name." with "A <> is a named array or a structure component whose final is an array component name; no subscript list is appended." {F03/0077. Make "whole array" include the whole array component case.} [122:10-11] Replace "whole array name" with "whole array designator", twice. {F03/0077.} [131:21] At the end of the last sentence in 6.3.1.1 insert "unless the SOURCE= specifier appears and the corresponding component of the is allocated". {F03/0098.} [214:19] In 9.5.1 Control information list, "ID = " -> "ID = " {F03/0113.} [215:1+] Insert new BNF rule and constraint "R913a <> C908a (R913a) The shall have a decimal range no smaller than that of default integer." {F03/0113. Require default integer or larger.} [218:3] In 9.5.1.8 ID= specifier in a data transfer statement, Change "This value" to "If this value is zero, the data transfer operation has been completed. A nonzero value" {F03/0113. Zero = "it was done synchronously already" value.} [218:4] After "operation." insert "This identifier is different from the identifier of any other pending data transfer operation for this unit." {F03/0113. Require uniqueness.} [222:26+] In 9.5.3 "Execution of a data transfer input/output statement", immediately before Note 9.38 insert a new paragraph "If execution of the program is terminated during execution of a WRITE or PRINT statement, the contents of the file become undefined.". {F03/0117.} [233:8] Before "the identifier" insert "zero or". [233:9] After "operation" insert ", if any,". {F03/0113. Make ID=zero do nothing in WAIT.} [245:17] Delete the last paragraph of 9.11 which currently reads "A STOP statement or ALL STOP statement shall not be executed during execution of an input/output statement." {F03/0117.} [267:5] In Section 10.9.2, add the following to the end of the first paragraph: "Two undelimited character sequences are considered adjacent when both were written using list-directed input/output, no intervening data transfer or input/output file positioning operations on that unit occurred, and both were written either by a single data transfer statement, or during the execution of a parent data transfer statement along with its child data transfer statements." {F03/0049. NOTE: Before the sentences added by F03/0101 (Corrigendum 3).} [293:3+(12.4.3.7 C1229+)] Insert new constraint "C1229a (R1221) "The shall not be an unallocated allocatable variable or a pointer whose association status is disassociated or undefined." {F03/0003, F03/0004.} [297:15] After "default character", insert "or of type character with the C character kind (15.2.2)". {F03/0074. "\ref{D15:Named constants and derived types in the module}".} [297:17,19] After each "default character", Insert "or of type character with the C character kind", twice. {F03/0074.} [303:39+(12.5.2.12p3)] Add new items to the numbered list in 12.5.2.12 "(11) It shall not be supplied as the in a . (12) It shall not be supplied as the in a ." {F03/0109.} [365:19] After "a whole array" delete "or array structure component". {F03/0077. No longer need kludgy wording in LBOUND.} [400:4-5] After "a whole array" delete "or array structure component". {F03/0077. No longer need kludgy wording in UBOUND.} [439:15-16] In the first sentence of the first paragraph after NOTE 15.11 in subclause 15.3.4, replace "have types and type parameters that are interoperable with the types of the corresponding components of the struct type" with "would interoperate with corresponding components of the C struct type as described in 15.3.5 and 15.3.6 if the components were variables". {F03/0075. 15.3.5 and 15.3.6 are \ref{D15:Interoperability of scalar variables} and \ref{D15:Interoperability of array variables} respectively.} [456:32+] Add a new paragraph at the end of 16.5.2.6, "The association status of a pointer object with the VOLATILE attribute might change by means not specified by the program." {F03/0099.} [462:24] 16.6.5, before "causes that" insert ", except by an ALLOCATE statement with a SOURCE= specifier," {F03/0098.} [462:25+] 16.6.5, insert new list item after (19) "(19a) Successful execution of an ALLOCATE statement with a SOURCE= specifier causes a subobject of the allocated object to become defined if the corresponding subobject of the SOURCE= expression is defined." {F03/0098.} [462:28] In item (21), change "Execution of a pointer assignment statement that associates a pointer" to "When a pointer becomes associated" {Not part of F03/0102, but spotted while looking at it. A pointer can become associated with a target via argument association.} [462:39] In 16.6.5 list item (26) change "becomes" to "might become". {F03/0099.} [463:43-44] 16.6.6, list item (12), replace list item with "Successful allocation of an ALLOCATE statement with no SOURCE= specifier causes a subcomponent of an allocated object to become undefined if default initialization has not been specified for that subcomponent." {F03/0098.} [463:45+] 16.6.6, add a new list item after (12), "(12a) Successful execution of an ALLOCATE statement with a SOURCE= specifier causes a subobject of the allocated object to become undefined if the corresponding subobject of the SOURCE= expression is undefined." {F03/0098.} [464:29+] In 16.6.6 after the last list item insert a new list item "(24) An object with the VOLATILE attribute (5.3.19) might become undefined by means not specified by the program." {F03/0099.} [464:29+] In 16.6.6 after the last list item insert a new list item "(25) When a pointer becomes associated with a target that is undefined, the pointer becomes undefined." {Recommendation from F03/0102.} ===END===