BookmarkSubscribeRSS Feed
krisraa
Quartz | Level 8

Hi

 

I have 2 data sets (Current and Prev month).

 

I need to compare the 2 datasets no. of observations and if the current month data set has more no. of records then I need to run or call a macro?

 

How do I achieve that?

 

 

6 REPLIES 6
ShiroAmada
Lapis Lazuli | Level 10

Try this....

 

proc sql noprint;
  select nobs into: curr from dictionary.tables
  where upcase(libname)="MYLIB" and upcase(memname)='MY_CURR';

  select nobs into: PREV from dictionary.tables
  where upcase(libname)="MYLIB" and upcase(memname)='MY_PREV';
QUIT;

%macro HasMore;
%if %eval(&prev<curr) %then %do;
  %MyMacro;
%end;

%mend

%HasMore;

Hope this helps.

ChrisNZ
Tourmaline | Level 20

Like this?

data _null_;
  if NOBS1 ne NOBS2 then call execute('%mymacro;');
  set TABLE1 nobs=NOBS1;
  set TABLE2 nobs=NOBS2;
  stop;
run;

Simple since there is no macro language, and fast since we don't use the dictionary.

 

krisraa
Quartz | Level 8

Thanks Chris it did the job for me....

 

Any specific reason why the if logic before reading the data sets?

SAS_inquisitive
Lapis Lazuli | Level 10

nobs are obtained during compile time so they can be used before SET statement.

ChrisNZ
Tourmaline | Level 20

If you put it after the SET statements and one of the data sets is empty, it will never be executed.

hackathon24-white-horiz.png

2025 SAS Hackathon: There is still time!

Good news: We've extended SAS Hackathon registration until Sept. 12, so you still have time to be part of our biggest event yet – our five-year anniversary!

Register Now

How to Concatenate Values

Learn how use the CAT functions in SAS to join values from multiple variables into a single value.

Find more tutorials on the SAS Users YouTube channel.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 6 replies
  • 2139 views
  • 6 likes
  • 5 in conversation