09-167r2 To: J3 From: Van Snyder Subject: "Innermost" is an incorrect term Date: 2009 May 7 References: 09-007r1 1. Discussion 7.2.2.4p2 [09-007r1:161:33-35], 12.5.2.9p1 [09-007r1:300:2-5] and 16.5.5p3 [09-007r1:456:3-7] use the term "innermost" to refer to the most recently invoked and still currently executing instance (except 16.5.5 doesn't bother to say "currently executing"). "Innermost" is a static term that should only be used to refer to lexical nesting. "currently executing" is a meaningless term that shouldn't be used." 2. Edits [11:7-8 1.3.70]--------------------------------------------------------- Editor: Replace "a" by "an internal procedure, or a dummy procedure or". Replace "7.2.2.4" by "12.6.2.4. [161:33-35 7.2.2.4p2]--------------------------------------------------- Editor: Replace 7.2.2.4p2 by "When a procedure pointer becomes associated with a target, its host instance is the host instance of the target (12.5.2.9, 12.6.2.4)." [300:2-5 12.5.2.9p1]---------------------------------------------------- Editor: Replace 12.5.2.9p1 by "When the actual argument is a procedure the host instance of the dummy argument is the host instance of the actual argument (7.2.2.4, 12.6.2.4)." [311:12-14 12.6.2.4p1]-------------------------------------------------- Editor: Delete the second sentence of 12.6.2.4p1 because it repeats 2.3.5p2. [311:17-23 12.6.2.4p4]-------------------------------------------------- Editor: Move the first sentence of 12.6.2.4p4 to the end of what's left of 12.6.2.4p1. Delete the rest of 12.6.2.4p4 [311:24 12.6.2.4p5]----------------------------------------------------- Editor: Move 12.6.2.4p5 to the end of what's left of 12.6.2.4p1. [311:24+ 12.6.2.4p5+]--------------------------------------------------- Editor: Insert a new paragraph. "The caller of an instance of a procedure is the instance of the \obs{statement function,} main program\obs{,} or subprogram that invoked it. The call sequence of an instance of a procedure is its caller, followed by the call sequence of its caller. The call sequence of the main program is empty. The host instance of an instance of an internal procedure \obs{or statement function} is the first element of the call sequence that is an instance of the host of the internal subprogram \obs{or statement function}. The host instance of a module procedure is the module in which it is defined. The host instance of a submodule procedure is the submodule in which it is defined. The main program or an external subprogram has no host instance." [448:2-3 16.5.1.4p1]---------------------------------------------------- Editor: Replace the first line "An internal ... body, or" and "a" on the second line by the following: "An instance of an internal subprogram, module subprogram, or submodule subprogram has access to its host instance (12.6.2.4) by host association. A module procedure interface body or". [456:3-7 16.5.5p3]------------------------------------------------------ Editor: Replace the paragraph: "For host association, the associating entity is the entity in the contained scoping unit. When a procedure is invoked, the pre-existing entity that participates in the association is the one from its host instance (12.6.2.4). Otherwise the pre-existing entity that participates in the association is the entity in the containing scoping unit.