To: J3 J3/26-183 From: Malcolm Cohen Subject: Invalid branching Date: 2026-June-17 1. Introduction Our rules for branching within constructs one is not permitted to branch out of, viz CHANGE TEAM, CRITICAL, and DO CONCURRENT, on the face of it permit branching to the beginning statement of the construct, which is not part of the block, and will in fact re-enter the construct thus effectively branching out. This paper contains edits to correct this. This is already interp F23/019 (see 26-111), so will be fixed in the upcoming Corrigendum 2, which is expected before the DIS stage. Even without that fix, the absence of unambiguous semantics means this does not need to be considered to be a compatibility problem. 2. Approach We could state in 11.1.2.1 that for the purposes of branching, the initial statement of a construct is not considered to be part of the construct. That is the approach taken by F23/019. That interp assumes that DO CONCURRENT and CRITICAL are already handled correctly, but it is hard to find normative text that clearly states this. As this is perhaps too subtle an approach, so instead this paper proposes inserting explicit prohibitions in each place. NOTE: If anyone knows where we did impose the restriction on CRITICAL and DO CONCURRENT, please let me know. We can tweak the text later if such requirements are found. NOTE 2: This paper is, in a sense, low priority, as we can just wait for the interp request. But maybe the edits here are better anyway? 2. Edits to 26-007r1 [220:14] 11.1.5.1 Purpose and form of the CHANGE TEAM construct, C1111 which begins "A branch", insert before the full stop "or that is the CHANGE TEAM statement of the construct", making that whole constraint read: "C1111 A branch (11.2) within a CHANGE TEAM construct shall not have a branch target that is outside the construct or that is the CHANGE TEAM statement of the construct." [222:22] 11.1.6 CRITICAL construct, C1120 which begins "A branch", insert before the full stop "or that is the CRITICAL statement of the construct", making the whole constraint read: "C1120 A branch (11.2) within a CRITICAL construct shall not have a branch target that is outside the construct or that is the CRITICAL statement of the construct." [228:30] 11.1.7.5 Additional semantics for DO CONCURRENT constructs, C1142 which begins "A branch", insert before the full stop "or that is the DO statement of the construct", making that whole constraint read: "C1142 A branch (11.2) within a DO CONCURRENT construct shall not have a branch target that is outside the construct or that is the DO statement of the construct." ===END===