Это можно сделать с помощью простого шага макроса и данных с массивом:
Этот макрос циклически перебирает список имен (значения XXX) и перечисляет переменные, которые на нем заканчиваются.
%macro var_names(names, prefix=);
%local i n var;
%let n=%sysfunc(countw(&names));
%do i=1 to &n;
%let var=%scan(&names,&i);
&prefix.&var
%end;
%mend;
Теперь используйте это, шаг данных и 2 массива.
data have;
_100_Section_a = 1;
_100_Section_b = 0;
_100_Section_c = 10;
run;
data want;
set have;
array vars[*] %var_names(a b c, prefix=_100_Section_);
format %var_names(a b c, prefix=error_100_Section_) $8.;
array errors[*] %var_names(a b c, prefix=error_100_Section_);
do i=1 to dim(vars);
if vars[i] > 1 then
errors[i] = "yes";
end;
drop i;
run;
Обратите внимание, я добавил _
к именам переменных.Переменные SAS обычно не могут начинаться с цифры.