t_fwdvar.mod 739 B

1234567891011121314151617181920212223242526272829303132333435
  1. MODULE TFwdVar;
  2. // Forward module-level variables: a procedure body may reference a
  3. // global declared further down the module. Exit 42.
  4. VAR ExitCode : INTEGER;
  5. PROCEDURE Bump;
  6. BEGIN
  7. counter := counter + 1;
  8. IF counter >= 3 THEN ready := TRUE END
  9. END Bump;
  10. PROCEDURE Twice;
  11. BEGIN
  12. Bump; Bump
  13. END Twice;
  14. VAR counter : INTEGER;
  15. VAR ready : BOOLEAN;
  16. VAR label : ARRAY [0..15] OF CHAR;
  17. PROCEDURE SetLabel;
  18. BEGIN
  19. label[0] := "o"; label[1] := "k"; label[2] := CHR(0)
  20. END SetLabel;
  21. BEGIN
  22. Twice; (* counter = 2 *)
  23. Bump; (* counter = 3, ready = TRUE *)
  24. SetLabel;
  25. IF ready AND (counter = 3) AND (label[0] = "o") THEN
  26. ExitCode := 42
  27. ELSE
  28. ExitCode := 1
  29. END
  30. END TFwdVar.