MODULE TFwdVar; // Forward module-level variables: a procedure body may reference a // global declared further down the module. Exit 42. VAR ExitCode : INTEGER; PROCEDURE Bump; BEGIN counter := counter + 1; IF counter >= 3 THEN ready := TRUE END END Bump; PROCEDURE Twice; BEGIN Bump; Bump END Twice; VAR counter : INTEGER; VAR ready : BOOLEAN; VAR label : ARRAY [0..15] OF CHAR; PROCEDURE SetLabel; BEGIN label[0] := "o"; label[1] := "k"; label[2] := CHR(0) END SetLabel; BEGIN Twice; (* counter = 2 *) Bump; (* counter = 3, ready = TRUE *) SetLabel; IF ready AND (counter = 3) AND (label[0] = "o") THEN ExitCode := 42 ELSE ExitCode := 1 END END TFwdVar.