J3/10-127
To: J3
Subject: Contradictions concerning execution sequence and branching
From: Stan Whitlock
Date: 2010 February 15
Reference: 09-007r3, 09-289r1, N1802
Paper 09-289r1 was passed at J3 m190 and was comment US-1 on the FCD
ballot (see N1802). It is re-presented here with line numbers for
09-007r3.
1. The second bullet of the list in 2.3.5p2 [33:17] claims that
control constructs have "implicit internal branching".
Contradicting that, 8.2.1p1 [186:17+] says "although ... control
constructs can cause transfer of control, they are not branches."
[33:17 2.3.5p2]---------------------------------------------------------
Editor: Replace "branching" by "transfer of control" in the second
bullet of the list to remove this contradiction.
2. The second sentence of 2.3.5p2 [33:8] says "within its scoping
unit". 1.3.115 [15:31] 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.
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.
[33:22-23 2.3.5p3]------------------------------------------------------
Editor: Delete the entire paragraph