J3/09-289 To: J3 Subject: Contradictions concerning execution sequence and branching From: Van Snyder Date: 2009 September 10 Reference: 09-007r2 [33:17 2.3.5p2]--------------------------------------------------------- The second bullet of the list in 2.3.5p2 claims that control constructs have "implicit internal branching." Contradicting that, 8.2.1p1 says "although ... control constructs can cause transfer of control, they are not branches." Editor: Replace "branching" by "transfer of control" in the second bullet of the list to remove this contradiction. [33:22-23 2.3.5p3]------------------------------------------------------ The second sentence of 2.3.5p2 says "within its scoping unit". 1.3.115 says the scoping unit of a program unit or subprogram excludes any scoping units within it. Therefore 2.3.5p2 prohibits execution to proceed from the executable constructs of a main program or subprogram, across a CONTAINS statement, and into an internal subprogram (because an internal subprogram is a different scoping unit). Therefore the second sentence of 2.3.5p3 isn't needed. It is further harmful because it contradicts the provisions of 2.3.5p2 relating to procedure invocation, since it says, without qualification, "The execution sequence excludes all such [internal procedure] definitions," which means internal procedures cannot be executed, notwithstanding that 2.3.5p2 explains how they are executed. Editor: Delete the second sentence of 2.3.5p3. The first sentence of 2.3.5p3 just restates R1101, R1227, and R1233, and it's a bit of a lie anyway, since an internal subprogram is a subprogram, but it can't contain an internal subprogram. Without the need to introduce the second sentence it is out of place in 2.3.5. Editor: Delete the first sentence of 2.3.5p3 (leaving nothing in 2.3.5p3).