storage_prog.mod 451 B

12345678910111213141516171819
  1. MODULE StorageProg;
  2. (* Storage.ALLOCATE/DEALLOCATE with a typed pointer variable,
  3. plus ADR and SIZE builtins. Exit 42. *)
  4. FROM Storage IMPORT ALLOCATE, DEALLOCATE;
  5. TYPE P = RECORD x, y : INTEGER END;
  6. TYPE PP = POINTER TO P;
  7. VAR ExitCode : INTEGER;
  8. VAR p : PP;
  9. BEGIN
  10. ALLOCATE(p, SIZE(p^));
  11. p^.x := 30;
  12. p^.y := 12;
  13. IF ADR(p^.x) # NIL THEN
  14. ExitCode := p^.x + p^.y
  15. ELSE
  16. ExitCode := 0
  17. END;
  18. DEALLOCATE(p, SIZE(p^))
  19. END StorageProg.