MODULE StorageProg; (* Storage.ALLOCATE/DEALLOCATE with a typed pointer variable, plus ADR and SIZE builtins. Exit 42. *) FROM Storage IMPORT ALLOCATE, DEALLOCATE; TYPE P = RECORD x, y : INTEGER END; TYPE PP = POINTER TO P; VAR ExitCode : INTEGER; VAR p : PP; BEGIN ALLOCATE(p, SIZE(p^)); p^.x := 30; p^.y := 12; IF ADR(p^.x) # NIL THEN ExitCode := p^.x + p^.y ELSE ExitCode := 0 END; DEALLOCATE(p, SIZE(p^)) END StorageProg.