If you want to create a macro you can make it more efficient. First you do not need to query twice to find the number of variables. SAS will set the automatic variable SQLOBS with the count. Second can depend it not changing the value of the existing variable when there are no rows selected. %macro vnumlist(lib, sds, svar); %global g_vnumsum; %let g_vnumsum=; proc sql noprint; select name into :g_vnumsum separated by ' ' from dictionary.columns where libname="%upcase(&lib)" and memname="%upcase(&sds)" and type='num' ; quit; %if &sqlobs %then %let g_vnumsum=&svar = sum(of &g_vnumsum); %else %put WARNING: No Numeric Variables to Sum; %mend vnumlist;
... View more