J3/02-154r1 To: J3 From: Subgroup C Date: 1 Mar 2002 Subject: Unresolved issues 350 and 343 References: 02-007 1. Unresolved issue 350 (page 155). Unresolved issue 350 states: "Shouldn't the above requirement that the selector be present be mentioned in `Restrictions on dummy arguments not present'?" Indeed. The following fixes that omission. Edits: [258:27+] Add 10 "It shall not be used as the in a SELECT TYPE or ASSOCIATE construct." [155:1-] Delete unresolved issue 350. 2. Unresolved issue 343 (page 174). With respect to the following paragraph (page 174, lines 1-3) and note 9.19: In the following subclauses, the term ``existing file'' refers to a file that exists at the moment the connection is established, and the term ``new file'' refers to a file the does not exist at the moment the connection is established. Note 9.19 A file might exist at the moment the OPEN statement begins execution, but cease to exist before the connection is established. This might occur, for example, if a STATUS= specifier appears and has the value REPLACE. unresolved issue 343 states: "The above para and note in 9.4.5, added by paper 01-265r1, adds more confusion than it solves in my mind. I found the concepts of new and existing files pretty clear before. The only possible confusion was with replace, which I thought was clarified pretty explicitly in the subclause on status (where it says that replace causes a new file to be created). The new text tries to define these terms based on a concept of ``the moment the connection is established''. I cannot find that concept defined anywhere and its definition is far from obvious to me. If the OPEN creates a file, I could well imagine that one might consider the OPEN to first create the file and then establish the connection to it. Perhaps we have stuff defined in such a way that this can't be but if so it is subtle and non-obvious. It seems to me that we are trying to define a simple concept in terms of a complicated (and undefined) one. The only ``definition'' of this concept appears to be in the new note, which is so full of qualifiers that it doesn't establish any case where this situation does, in fact, happen. And its ``for example'' phrasing imples that there are other possibilities in addition to the status=replace one. Are there? So the note neither tells me where this does actually happen or where it doesn't - not much of a definition. This frankly sounds more like it is talking about race conditions where some other process deleted the file while the OPEN statement was executing. If so, that is far out of scope to even be discussing - might as well talk about how shared memory and race conditions could case the assignment x=x to change the value of x. Since J3 passed this paper (over my objection about insufficient review), I don't feel it within editorial prerogative to just not do this part. But I will use this note to point out how bad I think it is (pretty bad)." The subsection describing the STATUS= clause (page 176) contains: "The shall evaluate to OLD, NEW, SCRATCH, REPLACE, or UNKNOWN. If OLD is specified, the file shall exist. If NEW is specified, the file shall not exist. Successful execution of an OPEN statement with NEW specified creates the file and changes the status to OLD. If REPLACE is specified and the file does not already exist, the file is created and the status is changed to OLD. If REPLACE is specified and the file does exist, the file is deleted, a new file is created with the same name, and the status is changed to OLD. If SCRATCH is specified, the file is created and connected to the specified unit for use by the program but is deleted at the execution of a CLOSE statement referring to the same unit or at the normal termination of the program." The following is said about existing files (page 165, lines 2+): "At any given time, there is a processor-dependent set of external files that are said to exist for a program. A file may be known to the processor, yet not exist for a program at a particular time. Note 9.5 Security reasons may prevent a file from existing for a program. A newly created file may exist but contain no records. To create a file means to cause a file to exist that did not exist previously. To delete a file means to terminate the existence of the file." The above clauses seem to define all of the following aspects - what it means for a file to "exist", i.e., what an "existing file" is - what it means to "create" a file, i.e., what a "new file" is - under what conditions the file to be opened is required to exist - under what conditions the file to be opened is required to not exist - under what conditions the existence of the file to be opened is immaterial - under what conditions a "new file" will be "created" without the need for invoking the concept of "moment of connection", so the extra paragraph and note that are the subject of unresolved issue 343 can be deleted. Edits: [174:1-3] Delete; delete note 9.19 [174:3+] Delete unresolved issue 343