Hello,
I have seen a lot of message on how to check if a dataset is empty but many of the proposed codes generate errors.
Here's my little contribution to the community.
I have test this code and it seems to works properly.
Please note that my dataset named base is empty (no column, no observations) and &records gives zero.
You can replace the dataset by sashelp.class to test with a non zero dataset. It works fine with both situation.
you can use the macro variable &records with a conditionnal statement to do what you want.
data _null_; /*data step to check for number of records in your dataset*/
%global records;
%let records=0;
set base end=last;
if last then call symput("Records",put(_n_,8.)); /*_n_ is observation number in sas dataset*/
run;
%put &records;
if it is zero ,then table is empty .
%let dsid=%sysfunc(open(sashelp.class));
%let nobs=%sysfunc(attrn(&dsid,nlobs));
%let dsid=%sysfunc(close(&dsid));
%put nobs= &nobs ;
Nice, but for most (except DB libnames) datasets the observation count is already present in sashelp.vtables (or the SQL dictionary equivalent). So if you really need a macro variable (and for most operations you wouldn't, only maybe fr create an output report):
data _null_; set sashelp.vtable (where=(libname="<yourlib>" and memname="<yourds>")); call symput("records",put(nobs,best.)); run;
If I need a report though, simpler to do:
data _null_; set sashelp.vtable (where=(libname="<yourlib>" and memname="<yourds>")); if nobs > 0 then call execute('%Do_Report'); run;
if it is zero ,then table is empty .
%let dsid=%sysfunc(open(sashelp.class));
%let nobs=%sysfunc(attrn(&dsid,nlobs));
%let dsid=%sysfunc(close(&dsid));
%put nobs= &nobs ;
Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!
What’s the difference between SAS Enterprise Guide and SAS Studio? How are they similar? Just ask SAS’ Danny Modlin.
Find more tutorials on the SAS Users YouTube channel.