You could make the macro return a value if you really have to have it that way, but it's not great programming practice in SAS:
%MACRO checkForVars(var1,var2,var3);
%let var1=%sysfunc(dequote(&var1));
%let var2=%sysfunc(dequote(&var2));
%let var3=%sysfunc(dequote(&var3));
%let dsid=%sysfunc(open(&inDS));
%let check=%sysfunc(varnum(&dsid,&var1));
%if &check ^= 0 %then %do;
%let check=%sysfunc(varnum(&dsid,&var2));
%if &check ^= 0 %then %do;
%let check=%sysfunc(varnum(&dsid,&var3));
%let rc=%sysfunc(close(&dsid));
%if &check ^= 0 %then %let out=Y;
%end;
%end;
%else %do;
%let rc=%sysfunc(close(&dsid));
%let out=N;
%end;
&out
%MEND checkForVars;
%let end_date_flg="%checkForVars('cdexpm','cdexpd','cdexpy')";
Notice the missing semicolon at the &out part of the macro. This will send the value of the variable out back to wherever the macro was called from. In this case, this macro sends back a value of "Y" or "N" to indicate whether one of the three variables passed to it exists in the dataset.
Dear
You can have a view using the "Hash Iterator Object" inside this document "http://support.sas.com/rnd/base/datastep/dot/iterator-getting-started.pdf"
This one use a comparison between date and you can adapte using index funtion. The small table can be used as hash table.
Regards
April 27 – 30 | Gaylord Texan | Grapevine, Texas
Walk in ready to learn. Walk out ready to deliver. This is the data and AI conference you can't afford to miss.
Register now and lock in 2025 pricing—just $495!
Still thinking about your presentation idea? The submission deadline has been extended to Friday, Nov. 14, at 11:59 p.m. ET.
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.
Ready to level-up your skills? Choose your own adventure.