MODULE TLower5Arr; (* Lower slice L5: open-array (VAR and value) and VAR record parameters. Exit 42. *) TYPE Vec = ARRAY [0..3] OF INTEGER; Rec = RECORD a, b : INTEGER; END; VAR v : Vec; r : Rec; i, ExitCode : INTEGER; PROCEDURE Sum (VAR a : ARRAY OF INTEGER; n : INTEGER) : INTEGER; VAR k, s : INTEGER; BEGIN k := 0; s := 0; WHILE k < n DO s := s + a[k]; INC(k) END; RETURN s END Sum; PROCEDURE First (a : ARRAY OF INTEGER) : INTEGER; BEGIN RETURN a[0] END First; PROCEDURE SetB (VAR x : Rec); BEGIN x.b := 5 END SetB; BEGIN v[0] := 10; v[1] := 11; v[2] := 12; v[3] := 13; SetB(r); i := Sum(v, 4) + First(v) + r.b; ExitCode := i - 19 END TLower5Arr.