Return value from SAS macro

The code below shows how to return a value from a SAS macro.

Returns 0 if a specific variable is not found in a dataset and 1 if it is found.
%macro VarExist(_Dataset=, _Variable=);
  %local dsid rc ;
  %let dsid = %sysfunc(open(&_Dataset));

  %if (&dsid) %then %do;
     %if %sysfunc(varnum(&dsid,&_Variable)) %then 1;
     %else 0 ;
     %let rc = %sysfunc(close(&dsid));
  %else 0;
%mend VarExist;

Go to do something if the dataset sashelp.class contains the variable
age - and it does.
%if %VarExist(_Dataset=sashelp.class, _Variable=age) %then
/* Something */

It is also possible to return a value from a macro using the code below. This only works for simple macros.

%macro add(no1=, no2=);
 %let result = %eval(&no1 + &no2);


%let sum = %add(no1=2, no2=2);


Leave a Reply

Your email address will not be published. Required fields are marked *