* Combinations 26/05/2016 COMBINE CSECT USING COMBINE,R13 base register B 72(R15) skip savearea DC 17F'0' savearea STM R14,R12,12(R13) prolog ST R13,4(R15) " ST R15,8(R13) " LR R13,R15 " SR R3,R3 clear LA R7,C @c(1) LH R8,N v=n LOOPI1 STC R8,0(R7) do i=1 to n; c(i)=n-i+1 LA R7,1(R7) @c(i)++ BCT R8,LOOPI1 next i LOOPBIG LA R10,PG big loop {------------------ LH R1,N n LA R7,C-1(R1) @c(i) LH R6,N i=n LOOPI2 IC R3,0(R7) do i=n to 1 by -1; r2=c(i) XDECO R3,PG+80 edit c(i) MVC 0(2,R10),PG+90 output c(i) LA R10,3(R10) @pgi=@pgi+3 BCTR R7,0 @c(i)-- BCT R6,LOOPI2 next i XPRNT PG,80 print buffer LA R7,C @c(1) LH R8,M v=m LA R6,1 i=1 LOOPI3 LR R1,R6 do i=1 by 1; r1=i IC R3,0(R7) c(i) CR R3,R8 while c(i)>=m-i+1 BL ELOOPI3 leave i CH R6,N if i>=n BNL ELOOPBIG exit loop BCTR R8,0 v=v-1 LA R7,1(R7) @c(i)++ LA R6,1(R6) i=i+1 B LOOPI3 next i ELOOPI3 LR R1,R6 i LA R4,C-1(R1) @c(i) IC R3,0(R4) c(i) LA R3,1(R3) c(i)+1 STC R3,0(R4) c(i)=c(i)+1 BCTR R7,0 @c(i)-- LOOPI4 CH R6,=H'2' do i=i to 2 by -1 BL ELOOPI4 leave i IC R3,1(R7) c(i) LA R3,1(R3) c(i)+1 STC R3,0(R7) c(i-1)=c(i)+1 BCTR R7,0 @c(i)-- BCTR R6,0 i=i-1 B LOOPI4 next i ELOOPI4 B LOOPBIG big loop }------------------ ELOOPBIG L R13,4(0,R13) epilog LM R14,R12,12(R13) " XR R15,R15 " BR R14 exit M DC H'5' <=input N DC H'3' <=input C DS 64X array of 8 bit integers PG DC CL92' ' buffer YREGS END COMBINE