If you have 100 groups of 10, then you can do below, too. Just assign 100 to the macro variable, g, instead of 4. This assumes that in your input data the d varaibles are correctly ordered, without gaps, like: d1start ... d1stop d2start ... d2stop ... d100start ... d100stop.
BTW, 1K vars per obs seems quite a strange way to organize information to me, but you may have your reasons... 🙂
[pre]
/* count missings by "group" */
%let g = 4;
data two;
set one;
array d{1:&g,1:10} d1start--d&g.stop;
array m{1:&g} m1-m&g;
drop i;
do i = 1 to &g;
m{i} = nmiss(of d{i,1},d{i,2},d{i,3},
d{i,4}, d{i,5}, d{i,6}, d{i,7},
d{i,8}, d{i,9}, d{i,10});
end;
mall = sum(of m1-m&g);
run;
[/pre]
... View more