* Permutations 26/10/2015 PERMUTE CSECT USING PERMUTE,R15 set base register LA R9,TMP-A n=hbound(a) SR R10,R10 nn=0 LOOP LA R10,1(R10) nn=nn+1 LA R11,PG pgi=@pg LA R6,1 i=1 LOOPI1 CR R6,R9 do i=1 to n BH ELOOPI1 LA R2,A-1(R6) @a(i) MVC 0(1,R11),0(R2) output a(i) LA R11,1(R11) pgi=pgi+1 LA R6,1(R6) i=i+1 B LOOPI1 ELOOPI1 XPRNT PG,80 LR R6,R9 i=n LOOPUIM BCTR R6,0 i=i-1 LTR R6,R6 until i=0 BE ELOOPUIM LA R2,A-1(R6) @a(i) LA R3,A(R6) @a(i+1) CLC 0(1,R2),0(R3) or until a(i)0 BNP ILE0 LR R7,R6 j=i LA R7,1(R7) j=i+1 LOOPWA LA R2,A-1(R7) @a(j) LA R3,A-1(R6) @a(i) CLC 0(1,R2),0(R3) do while a(j)0 BNE LOOP XR R15,R15 set return code BR R14 return to caller A DC C'ABCD' <== input TMP DS C temp for swap PG DC CL80' ' buffer YREGS END PERMUTE