It helps to understand why this simple DATA step ends:
data new;
set old;
num=5;
run;
The SET statement will read the observations one at a time. If there are 100 observations in OLD, they each get read in separately. However, reading the 100th observation does not end the DATA step. Instead, the SET statement continues and tries to read the 101st observation. Since there is no 101st observation, that's when the DATA step ends. The key step is trying to read another observation, and finding that there are no more observations to read.
Compare that to the DATA step that you posted. Because of POINT= the SET statement always finds an observation. The normal mechanism to end the DATA step (having the SET statement fail to find the observation it is looking for) never comes into play. That's why you get an infinite loop without the STOP statement.