J3/13-257 From: Van Snyder To: J3 Date: 2013 May 21 Subject: Trivial technical change concerning the EXIT statement 1. The problem -------------- There appears not to be a problem caused by an EXIT statement belonging to a CRITICAL construct. There will similarly not be a problem caused by an EXIT statement belonging to a CHANGE TEAM construct. Allowing an EXIT statement to belong to a CHANGE TEAM or CRITICAL construct is better than expecting to use a GO TO statement with a branch target that is the END TEAM or END CRITICAL statement, or enclosing the of the construct with a BLOCK construct, and exiting the BLOCK construct. 2. Edits to 12-007 ------------------ [12-007:186:8-9 C845] Replace the constraint "C845 An within a DO CONCURRENT construct shall not belong to that construct or an outer construct; an within a CRITICAL construct shall not belong to an outer construct." 3. For integration of TS 18508 ------------------------------ [13-251/N1967:27:3+] Insert edits to 12-007: "{In 8.10.10 EXIT statement, replace C845} "C845 An within a DO CONCURRENT construct shall not belong to that construct or an outer construct; an within a CHANGE TEAM or CRITICAL construct shall not belong to an outer construct." 3. Possible but not proposed ---------------------------- There is no technical problem caused by an EXIT statement belonging to a construct outer to a CHANGE TEAM or CRITICAL construct. There is similarly no technical problem caused by a branch statement within a CHANGE TEAM or CRITICAL construct having a target outwith the construct, a RETURN statement appearing within the construct, or a CYCLE statement belonging to an outer construct. The processor could perform the end-of-construct actions (lifting the entry barrier at the END CRITICAL statement, or synchronizing at the END TEAM statement) no matter how execution of the construct is completed. It is probably better, however, to prohibit these on stylistic grounds, under the hypothesis that it is easier to understand the program, and believe it is correct.