Different type loops evaluate loop index at different stage. Take a look examples below.
data _null_;
do n=1 to 5;
put n=;
end;
put n=;
run;
data _null_;
n=0;
do until (n=5);
n+1;
put n=;
end;
put n=;
run;
data _null_;
n=0;
do while (n<=5);
n+1;
put n=;
end;
put n=;
run;