showcase2.mod 650 B

123456789101112131415161718192021222324252627282930
  1. MODULE Showcase2;
  2. // Stage 1.7 tour: scalar TYPEs used for real work — subranges with
  3. // decimal and hex bounds, aliases, folded CONSTs, all operators.
  4. // Expected ExitCode: 71 (hand-computed, truncating DIV).
  5. IMPORT Dummy;
  6. FROM Elsewhere IMPORT Thing;
  7. CONST
  8. Step = 7;
  9. Bonus = -5;
  10. TYPE
  11. Score = [0..100];
  12. Nibble = [0x0..0xF];
  13. Amount = INTEGER;
  14. VAR
  15. ExitCode : INTEGER;
  16. s : Score;
  17. i : Nibble;
  18. a : Amount;
  19. BEGIN
  20. s := 90;
  21. i := 0xB; (* 11 *)
  22. (* (90 + 11) * 7 DIV 10 + (-5) = 707 DIV 10 - 5 = 70 - 5 = 65 *)
  23. a := (s + i) * Step DIV 10 + Bonus;
  24. (* 65 + 90 MOD 7 = 65 + 6 = 71 *)
  25. ExitCode := a + s MOD Step
  26. END Showcase2.