What version of Pascal is this supposed to have been?
Both standard Pascal (
ISO 7185, §6.6.5.3) and standard Extended Pascal (
ISO 10206, §6.7.5.3). Note that the definitions of
new provide no mechanism for regaining control if the allocation fails. It's possible that certain compiler vendors like Borland may have added non-portable procedures for allocating memory, but portable programs cannot rely on their existence. It is rather strange that they never provided a variant
procedure new(var success: boolean; var ptr: ^T; ...) that takes a reference to a (non-pointer) boolean before the pointer reference and records whether the allocation succeeded or failed. All of this stems from Pascal's origin as a teaching language, where student programs aren't expected to allocate memory for things that aren't absolutely necessary for program correctness but are nice to have for performance (e.g., caching and memoization of functions), which you might be able to free if you run out of memory.
As an aside: To me, the strangest thing about Pascal's memory allocation is that Brian Kernighan didn't include it in his
famous list of gripes about the language, though he did mention the other truly awful feature, namely that the bounds of an array are part of its type, so if you have an array of 100 integers and another array of 500 integers, you couldn't write a single procedure that can sort both, you had to write two nearly-identical procedures, at least until the standard provided the "conformant arrays" feature to alleviate this. (Also note that
array [0..99] of integer and
array [1..100] of integer are also distinct types despite having the same length, so in pre-standard Pascal they would have also required separate procedures for each type.)