I don't know why you bother with this code:
%do ProgNum=1 %to &LNumProgOnGrid; /* 21 - LOOP OPEN */
data _null_;
ProgInList_ = (&SessNum-1)*(&LNumProgOnGrid-&ProgNum)+&SessNum*&ProgNum;
call symput("ProgInList",strip(put(ProgInList_,best.)));
put ProgInList_;
run;
%put &ProgInList.;
%put &checker.;
%end;/* 21 - LO
The way you attempt to create the macro varible &Proginlist will only ever have the value where ProgNum = &LNumProgOnGrid. Each loop involving Prognum overwrites the previous &ProgInList.
Have you run your %check macro with OPTIONS MPRINT turned on? And possibly SYMBOLGEN?
... View more