Вы можете макроварировать, а затем использовать его.Но это долгий утомительный процесс, и процесс обработки данных намного проще.Вы можете сделать это в proc sql, как показано ниже.
/*first create dataset to test*/
data have;
input var1 var2 var3 var4 newvar a;
datalines;
10 20 30 40 60 10
10 20 30 40 60 90
10 20 30 40 60 20
;
run;
/* create macro variable*/
proc sql;
select catt(name, " = ", " a or ") into :VAR SEPARATED by " "
from dictionary.columns
where memname = 'HAVE'
and prxmatch("m/^VAR\d+$/i", trim(name)) > 0;/* to find variable var with digit*/
%put &VAR;
Это дает var1 = a или var2 = a или var3 = a или var4 = a или
/* do a substring to remove last or */
%let final_var = %substr(&var, 1, %length(&var)-2);
%put &final_var;
Это дает var1= a или var2 = a или var3 = a или var4 = a
/*Now you can use the macro variable in your query, will give you desired
result*/
proc sql;
select * from have
where &final_var;