While I strongly suggest that you study @mkeintz's suggested solution in-depth (to see how some quite arcane SAS functions can be used), I probably would not use it in practice/production.
Why?
most performance can be gained by reducing I/O; both methods require the same number of reads through the dataset
using the peek/poke functions this way is equivalent to C pointer math, which a prominent hacker I admire quite a lot has recently called a "defect attractor".
Such code meets my definition of "clever" (see Maxim 29), and can cause unnecessary confusion when it needs to be maintained by a novice. If you constantly write code that only you can understand, you'll never be able to delegate work.
So it all ends up as a clear case for Maxims 4 & 30. Only if a significant performance gain is observed (say, reducing runtime from 5 to 3 hours), should a more complex method be implemented.
Even if you shave off 90%, but only gain 9 seconds because the original run took just 10, I'd stay with the simple algorithm. Unless you know that the job has to scale up to much larger data in the future.
... View more