Hi:
Please read both the papers from the links I posted. My paper explictly talks about the difference between %DO and the DATA step language DO.
And, as ballardw explains, the %DO loop is intended to be used inside a macro program for the sole purpose of controlling what program statements are generated to be sent to the compiler.
The "regular" DATA step language DO loops are meant to interact with data and to impact data and to control the flow of processing in a DATA step program when the program executes.
cynthia