Showcase3.mod 731 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. MODULE Showcase3;
  2. (* Step-10 tour: module BEGIN bodies run at startup in declaration order,
  3. cross-module reads, and calls to the module's own procedures
  4. (plain and M.-qualified) from inside its init body. *)
  5. MODULE A EXPORT x;
  6. VAR x : INTEGER;
  7. BEGIN
  8. x := 1
  9. END A;
  10. MODULE B EXPORT y;
  11. VAR y : INTEGER;
  12. BEGIN
  13. y := A.x + 10
  14. END B;
  15. MODULE C EXPORT cnt, Inc;
  16. VAR cnt : INTEGER;
  17. PROCEDURE Inc;
  18. BEGIN
  19. cnt := cnt + 5
  20. END Inc;
  21. BEGIN
  22. Inc();
  23. C.Inc()
  24. END C;
  25. MODULE D EXPORT val;
  26. VAR val : INTEGER;
  27. BEGIN
  28. val := 42
  29. END D;
  30. VAR total : INTEGER;
  31. VAR ExitCode : INTEGER;
  32. BEGIN
  33. total := 0;
  34. WriteString("show3");
  35. C.Inc();
  36. total := A.x * 100 + B.y + C.cnt + D.val;
  37. WriteInt(total);
  38. ExitCode := total
  39. END Showcase3.