Hi SAS community, I am a new-ish SAS programmer and need some help. I need to step through obs in one data set (MyIDList) and "do stuff" to data in another data set (MyDat) based on the value that I read. Here is a simple made-up example of code that hopefully helps describes the situation: DATA Work.MyDat;
INPUT ID VarA $ VarB $ VarC $1.;
CARDS;
20058529 AAB Z2345 Y
10058529 BAA D2345 N
30058529 ACC C2345 N
40058529 DDD B2345 Y
50058529 EAH A2345 Y
;
RUN;
DATA Work.MyIDList;
INPUT ID ;
CARDS;
20058529
10058529
30058529
40058529
50058529
;
RUN;
%MACRO MyMac(IDp);
DATA Work.MyOut;
SET Work.MyDat;
IF ID=&IDp. THEN VarD=VarC||VarA;
ELSE VarD=VarB;
RUN;
%MEND;
%LET MyMacList=
20058529
10058529
30058529
40058529
50058529
;
%macro MacForSmallList;
%do i = 1 %to %sysfunc(countw(&MyMacList));
%let current_word = %scan(&MyMacList,&i);
%PUT ¤t_word.;
%MyMac(IDp=¤t_word.)
%end;
%mend;
%MacForSmallList; I need to run MyMac for every ID in MyIDList, BUT MyIDList (in reality) contains over 300,000 IDs. If it only contained 1000 IDs I could make a macro variable like MyMacList and be done no problem, but 300,000 puts me way over the macro variable size limit (and beyond my current programming capabilities). How do I do the same type of operation in this simple example for a big ID list? Thanks, Kevin
... View more