new; cls; t1=1; t2=5; dim=3; /* 3 numbers between t1 and t2 */ N=t2-t1+1-(dim-1); low=t1+seqa(0,1,dim); up=low+N-1; x=low; print/lz x'; /* Initial sequence should be included. */ do while not x==up; x=recD1index(x,up); print/lz x'; endo; proc recD1index(x,up); local dim,j; dim=rows(x); x[dim]=x[dim]+1; j=dim; do until j==0; if x[j]==up[j]+1; x[j-1]=x[j-1]+1; if x[j-1]/=up[j-1]+1; x[j-1:dim]=x[j-1]+seqa(0,1,dim+1-(j-1)); endif; endif; j=j-1; endo; retp(x); endp;