I'm not sure I understood your question, but if I did, there are two approaches.
The lag function is designed to give you the value of a variable the previous time it was called. If you call it every loop, it will give you the value from the previous row. It is easy, but can get tricky with more complicated code.
Using a retain statement is a little more work, but is much more flexible and not a tricky.
data have;
infile datalines dsd;
input id amount;
datalines;
12,2000
167,2500
256,1300
3445,4000
;
run;
data want_lag;
set have;
amount1 = lag(amount);
run;
data want_retain;
set have;
retain amount1 .;
output;
amount1 = amount;
run;
... View more