new; cls; n=6; r=3; x=zeros(n,1); do while not x==ones(n,1); x=recbin(x); if sumc(x)==r; print/rz x'; /* or use this x as some index number vector in your program */ endif; endo; proc recbin(x); local n,j; n=rows(x); x[n]=x[n]+1; j=n; do until j==0; if x[j]==2; x[j]=0; x[j-1]=x[j-1]+1; endif; j=j-1; endo; retp(x); endp;