J3/02-234 To: J3 Subject: Improving corrigendum 2 (including issue 370) From: Malcolm Cohen. Date: 2002-07-19 1. Introduction Some errors and inconsistencies have crept in in the process of integrating Corrigendum 2. This paper attempts to fix them. 2. Interp F95/000094. Apart from general readability, which the editor complained about, the edit is incomplete for F2002 because F2002 has parameterised derived types, and thus other non-kind parameters than simply the character length one. 3. Interp F90/000209. The editor thought that the text introduced for this new restriction was not very readable, but in fact there is a serious technical flaw in the text. 9.10.6 has effectively re-introduced the old "no recursive i/o" restriction. This restriction was deliberately lifted in F2002. We've got new, much less restrictive, restrictions instead. Otherwise uddtio doesn't work! Looking at interp F90/209, we see that the intent of this interp is merely to add some clarifying text saying that STOP could not be executed during execution of an i/o statement. We need to remove this new restriction and replace it with the clarifying text about STOP statements. There's no appropriate pre-existing restriction on which to piggy-back it, so we'll just come right out and say it on its own. 4. Interp F95/000009 This interp added some clarifying text about TRANSFER to the F95 standard, but the text was not added to F2002 by 02-204r1 because the section to which it was added had been deleted. However, the subject matter is still germane, and there is an appropriate place to put it - in the description of TRANSFER itself. 5. Interp JP-08 (issue 370) As the editor noted, this needs to be completely rewritten for F2002 because - it needs to restrict itself to named variables, not components or ALLOCATE or structure constructors - it needs to cover parameterised derived types Additionally (and these were true in F95, but our BNF usage has changed since then because of PDTs): - it needs to cover implicitly declared entities - it needs to cover character length overrides (e.g. "CHARACTER*(N) X,Y*M"); referring to the actual type parameter values, not the syntax, might be appropriate here. Also, the phrase "at the entry of" should be replaced by "on entry to". The latter phrase is widely used throughout the standard, the former only this once. 666. Edits to 02-007r2 [72:26-27] Replace "If ... affected" by "If a type parameter in a or in a in an is defined in a specification statement by an expression that is not an initialization expression, the type parameter value is established on entry to the procedure and is not affected" Also, remove issue 370. {JP-08.} [129:21-23] Replace with "(7) A reference to the transformation intrinsic function NULL that does not have an argument with a type parameter that is assumed or is defined by an expression that is not an initialization expression," {F95/000094.} [218:25-ENDOFPAGE] Delete misguided restriction. [219:25+] Add "A STOP statement shall not be executed during execution of an input/output statement." {F90/000209. We don't need the blather about function references - indeed that would be wrong, since we can now also call procedures by uddtio without a function reference necessarily appearing anywhere.} [219:1] Change first letter "n" to "ns". {Fix number agreement.} [349:29] Append "If it is a variable, it need not be defined." {F95/000009.}