Сохранить значения в нескольких макропеременных, а затем сохранить имена макропеременных в другой макропеременной.
Таким образом, этот код создаст серию макропеременных с именами M1, M2, .... и затем установит ID_LIST в & M1, & M2 ....
data _null_;
length list $20200 mlist $20000;
do until(eof or length(list)>20000);
set LOCAL_TBL end=eof;
list=catx(',',list,id);
end;
call symputx(cats('m',_n_),list);
mlist=catx(',',mlist,cats('&m',_n_));
if eof then call symputx('id_list',mlist);
run;
Затем при расширении ID_LIST макропроцессор раскроет все отдельные макропеременные Mx. Этот маленький шаг данных создаст пару примеров макропеременных, чтобы продемонстрировать идею.
data _null_;
call symputx('m1','a,b,c');
call symputx('m2','d,e,f');
call symputx('id_list','&m1,&m2');
run;
Результаты:
70 %put ID_LIST=%superq(id_list);
ID_LIST=&m1,&m2
71 %put ID_LIST=&id_list;
ID_LIST=a,b,c,d,e,f