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)); %end; %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 %do; /* Something */ %end;
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); &Result %mend; %let sum = %add(no1=2, no2=2);