t_constfold.mod 572 B

123456789101112131415161718192021
  1. MODULE TConstFold;
  2. // Named CONST folding in bounds, subranges and expressions. Exit 42.
  3. CONST
  4. Base = 4;
  5. N = Base * 2 - 1; // folds to 7
  6. Top = N - 2; // folds to 5
  7. TYPE
  8. Vec = ARRAY [0 .. N] OF INTEGER;
  9. Sub = [Base .. Top];
  10. VAR ExitCode : INTEGER;
  11. VAR v : Vec;
  12. VAR s : Sub;
  13. VAR i, sum : INTEGER;
  14. BEGIN
  15. sum := 0;
  16. FOR i := 0 TO N DO v[i] := i; sum := sum + v[i] END; // 28
  17. sum := sum + v[Base] + v[Top]; // 4 + 5 = 9
  18. s := Base + 1; // 5
  19. sum := sum + s;
  20. ExitCode := sum // 42
  21. END TConstFold.