t_lower5arr.mod 698 B

12345678910111213141516171819202122232425262728293031
  1. MODULE TLower5Arr;
  2. (* Lower slice L5: open-array (VAR and value) and VAR record parameters.
  3. Exit 42. *)
  4. TYPE
  5. Vec = ARRAY [0..3] OF INTEGER;
  6. Rec = RECORD a, b : INTEGER; END;
  7. VAR
  8. v : Vec;
  9. r : Rec;
  10. i, ExitCode : INTEGER;
  11. PROCEDURE Sum (VAR a : ARRAY OF INTEGER; n : INTEGER) : INTEGER;
  12. VAR k, s : INTEGER;
  13. BEGIN
  14. k := 0; s := 0;
  15. WHILE k < n DO s := s + a[k]; INC(k) END;
  16. RETURN s
  17. END Sum;
  18. PROCEDURE First (a : ARRAY OF INTEGER) : INTEGER;
  19. BEGIN RETURN a[0] END First;
  20. PROCEDURE SetB (VAR x : Rec);
  21. BEGIN x.b := 5 END SetB;
  22. BEGIN
  23. v[0] := 10; v[1] := 11; v[2] := 12; v[3] := 13;
  24. SetB(r);
  25. i := Sum(v, 4) + First(v) + r.b;
  26. ExitCode := i - 19
  27. END TLower5Arr.