Hi,
I've got a macro set up but I want SAS to only run it when the number of observations in the input dataset >0
So for example, for the code below, I only want it to run for datasets that aren't empty. Assume that dataset source2 is empty in this instance.
%macro abc(input);
data want;
set &input.;
run;
%mend abc;
%abc(source1);
%abc(source2);
%abc(source3);
options mprint;
data source1;
set sashelp.class;
run;
data source2;
input name;
datalines;
;
run;
data source3;
set sashelp.cars;
run;
%macro abc(input);
proc sql noprint;
select count(*)
into :obs_count
from &input;
quit;
%if &obs_count gt 0 %then
%do;
data want;
set &input.;
run;
%end;
%mend abc;
%abc(source1);
%abc(source2);
%abc(source3);
options mprint;
data source1;
set sashelp.class;
run;
data source2;
input name;
datalines;
;
run;
data source3;
set sashelp.cars;
run;
%macro abc(input);
proc sql noprint;
select count(*)
into :obs_count
from &input;
quit;
%if &obs_count gt 0 %then
%do;
data want;
set &input.;
run;
%end;
%mend abc;
%abc(source1);
%abc(source2);
%abc(source3);
Thanks heaps
data _null_; set sashelp.vtable (where=(libname="WORK" and substr(memname,1,6)="SOURCE" and nobs > 0)); call execute(cats('%abc (',catx('.',libname,memname),');')); run;
Simplest form, you can change WORK (must be upcase) to yout lib and use the where to restrict tables/libraries - for instance if you dropped the lib, it would check any dataset source: from any lib.
Registration is now open for SAS Innovate 2025 , our biggest and most exciting global event of the year! Join us in Orlando, FL, May 6-9.
Sign up by Dec. 31 to get the 2024 rate of just $495.
Register now!
Learn the difference between classical and Bayesian statistical approaches and see a few PROC examples to perform Bayesian analysis in this video.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.