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.
Join us for SAS Innovate April 16-19 at the Aria in Las Vegas. Bring the team and save big with our group pricing for a limited time only.
Pre-conference courses and tutorials are filling up fast and are always a sellout. Register today to reserve your seat.
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.