Rick,
I remembered @PGStat taught me a great function in data step to get all the combination. --> GRAYCODE()

data want;
array set{8} $ _temporary_ ('Dasher' 'Dancer' 'Prancer' 'Vixen' 'Comet' 'Cupid' 'Donner' 'Blitzen');
array want{8} $;
array x[8];
n=dim(x);k=-1;
do i=1 to 2**n;
rc=graycode(k, of x{*});
do j=1 to n;
want{j}=ifc(x{j}=1,set{j},' ');
end;
output;
end;
keep want:;
run;