MODULE TConstFold; // Named CONST folding in bounds, subranges and expressions. Exit 42. CONST Base = 4; N = Base * 2 - 1; // folds to 7 Top = N - 2; // folds to 5 TYPE Vec = ARRAY [0 .. N] OF INTEGER; Sub = [Base .. Top]; VAR ExitCode : INTEGER; VAR v : Vec; VAR s : Sub; VAR i, sum : INTEGER; BEGIN sum := 0; FOR i := 0 TO N DO v[i] := i; sum := sum + v[i] END; // 28 sum := sum + v[Base] + v[Top]; // 4 + 5 = 9 s := Base + 1; // 5 sum := sum + s; ExitCode := sum // 42 END TConstFold.