@average_joe small suggestion, maybe test if the all are 0 first, that way you can skip the do loop if it's all 0 to be more efficient?
Changing the do loop to an ELSE would help?
data want;
set have;
length faloc $6;
array locs(*) CHADRG CHBNE CHBRN CHLVR CHLNG CHLYND CHMES CHSKN CHOTH;
if sum(of locs(*)) = 0 then do;
faloc = '';
output;
end;
else do i = 1 to dim(locs);
if locs(i) = 1 then do;
faloc = vname(locs(i));
output;
end;
end;
drop i CHADRG CHBNE CHBRN CHLVR CHLNG CHLYND CHMES CHSKN CHOTH;
run;
... View more