proc.ob 615 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. MODULE m;
  2. TYPE
  3. P1 = PROCEDURE(a1: INTEGER);
  4. P2 = PROCEDURE(): P2;
  5. PROCEDURE p1(arg1: INTEGER);
  6. TYPE
  7. T1 = RECORD
  8. field1: INTEGER END;
  9. T2 = RECORD (T1)
  10. field2: BOOLEAN END;
  11. VAR
  12. i, j: INTEGER;
  13. b: BOOLEAN;
  14. t1: T1;
  15. t2: T2;
  16. BEGIN
  17. i := arg1 + 1;
  18. t1.field1 := i;
  19. t2.field1 := t1.field1;
  20. b := TRUE;
  21. t2.field2 := b
  22. END p1;
  23. PROCEDURE p2; BEGIN p1(123) END p2;
  24. PROCEDURE p3(i: INTEGER): INTEGER;
  25. BEGIN
  26. p1(123);
  27. p2;
  28. p2()
  29. RETURN 123
  30. END p3;
  31. PROCEDURE p4(): INTEGER;
  32. RETURN p3(123) + p3(p3(123))
  33. END p4;
  34. PROCEDURE p5(): P2;
  35. RETURN p5
  36. END p5;
  37. END m.