Hi, I am using a macro program originally written in SUGI 069-2012. I am trying to implement this for my scenario but running into issues - %macro split (dataset=lkbkreq.ftmonlkbk_trn_match, varname= alert_id, outlib=WORK ); %local sel sets; %if %INDEX(&dataset,.) eq 0 %then %do; %let libname = WORK ; %let setname = &dataset ; %end; %else %do; %let libname = %SUBSTR(&dataset,1,%INDEX(&dataset,.)-1); %let setname = %SUBSTR(&dataset,%INDEX(&dataset,.)+1) ; %end; proc sql noprint; select type into :vartype from sashelp.vcolumn where libname = upcase("&libname") and memname = upcase("&setname") and memtype = "DATA" and upcase(name) = upcase("&varname") ; quit; data _null_; retain sel sets; format sel sets $20000.; if _n_=1 then do; dcl hash members (ordered: 'a'); rc = members.definekey("&varname"); rc = members.definedone(); sel="select (&varname);"; sets=''; end; set &dataset (keep=&varname) end = eof; rc=members.add(); if rc eq 0 then do; flag+1; sets=trim(sets)||"&outlib..set"||trim(left(&varname.)); if "&vartype" eq "num" then sel=trim(sel)||" when ("||trim(left(&varname.))|| ") output &outlib..set"||trim(left(&varname.))||";"; else sel=trim(sel)||" when ('"||trim(left(&varname.))|| "') output &outlib..set"||trim(left(&varname.))||";"; end; if eof then call symputx('sel',trim(sel)||' otherwise; end;','L'); if eof then call symputx('sets',trim(sets),'L'); run; data &sets; set &dataset; &sel. run; proc export data=&sets outfile='/.../&sets..txt' dbms=dlm; delimiter='|'; run; proc export data=&sets outfile='/..../&sets..csv' dbms=csv; run; %mend split; %split I have 2 issues. One this macro needs to be modified to fit this new requirement - 1. if an alert_id has >50000 txn, the output csv or text files need to be multiple in order to fit only 50000 txn 2. the variable sets is giving an error WORK.set0000057174FIBI120101 WORK.set0000090969FIBI120101 WORK.set0000164483FIBI120101 WORK.set0000522144EIBI120101 ____________________________ 22 76 NOTE: The SAS System stopped processing this step because of errors. NOTE: Line generated by the macro variable "SETS". Thanks, thecoolking
... View more