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);