# (*$U+ -- enables underscores in identifiers *) program markrelease; type iptr = ^integer; var ptr1 : iptr; ptr2 : iptr; procedure finished; extern; procedure fail(line: integer); extern; #define ASSERT(cond) \ if (not (cond)) then fail(__LINE__) begin New(ptr1); New(ptr2); ASSERT(ptr1 <> ptr2); Dispose(ptr1); Dispose(ptr2); (* Not required by the Pascal standard, but our implementation sets the * pointers to NULL after freeing them. *) ASSERT(ptr1 = ptr2); finished end.