Showcase3.LST 1.1 KB

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