MODULE TGoto; (* GOTO/labels: backward loop, forward jump, and a procedure-local label. Exit 42. *) VAR ExitCode, i, s : INTEGER; PROCEDURE P () : INTEGER; VAR i, s : INTEGER; BEGIN i := 0; s := 0; top: IF i < 4 THEN s := s + i; INC(i); GOTO top END; RETURN s END P; BEGIN i := 0; s := 0; loop: IF i < 5 THEN s := s + i; INC(i); GOTO loop END; GOTO done; s := 999; done: IF (s = 10) AND (P() = 6) THEN ExitCode := 42 ELSE ExitCode := s + P() END END TGoto.