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 ;
Build your skills. Make connections. Enjoy creative freedom. Maybe change the world. Registration is now open through August 30th. Visit the SAS Hackathon homepage.
Register today!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.
Select SAS Training centers are offering in-person courses. View upcoming courses for: