var_parameter.ob 789 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. MODULE m;
  2. TYPE R = RECORD i: INTEGER; p: POINTER TO R END;
  3. VAR
  4. i: INTEGER;
  5. b: BOOLEAN;
  6. a: ARRAY 5 OF INTEGER;
  7. PROCEDURE p1(VAR i1, i2: INTEGER);
  8. BEGIN
  9. i1 := 1;
  10. i2 := 2
  11. END p1;
  12. PROCEDURE p2(i: INTEGER; b: BOOLEAN);
  13. END p2;
  14. PROCEDURE index(VAR i: INTEGER): INTEGER;
  15. RETURN i
  16. END index;
  17. PROCEDURE array(VAR a: ARRAY OF INTEGER): INTEGER;
  18. RETURN a[0]
  19. END array;
  20. PROCEDURE p3(VAR i: INTEGER; VAR b: BOOLEAN);
  21. VAR j: INTEGER;
  22. r: R;
  23. ar: ARRAY 5 OF R;
  24. ai: ARRAY 5 OF INTEGER;
  25. BEGIN
  26. j := i + 1;
  27. j := 2 * i;
  28. j := i / 2;
  29. j := -i;
  30. b := ~b;
  31. a[i] := i;
  32. p1(j, i);
  33. p1(i, j);
  34. p1(i, a[index(i)]);
  35. p2(i, b);
  36. p1(r.i, ar[index(r.i)].i);
  37. NEW(r.p);
  38. NEW(ar[j].p);
  39. p1(r.p.i, ar[j].p.i);
  40. p2(ar[j].p.i, r.p.i = ar[j].p.i);
  41. j := array(ai)
  42. END p3;
  43. BEGIN
  44. p3(i, b)
  45. END m.