39 lines
1.7 KiB
Text
39 lines
1.7 KiB
Text
* Floyd's triangle 21/06/2018
|
|
FLOYDTRI PROLOG
|
|
L R5,NN nn
|
|
BCTR R5,0 -1
|
|
M R4,NN nn*(nn-1)
|
|
SRA R5,1 /2
|
|
A R5,NN m=(nn*(nn-1))/2+nn; max_value
|
|
CVD R5,XDEC binary to packed decimal (PL8)
|
|
EDMK ZN,XDEC+4 packed dec (PL4) to char (CL8)
|
|
S R1,=A(ZN) r1=number of spaces
|
|
L R9,=A(L'ZN+1) length(zn08)+1
|
|
SR R9,R1 s=length(m)+1
|
|
SR R8,R8 k=0
|
|
LA R6,1 i=1
|
|
DO WHILE=(C,R6,LE,NN) do i=1 to nn
|
|
LA R10,PG pgi=0
|
|
LA R7,1 j=1
|
|
DO WHILE=(CR,R7,LE,R6) do j=1 to i
|
|
LA R8,1(R8) k=k+1
|
|
XDECO R8,XDEC k
|
|
LA R11,XDEC+12 +12
|
|
SR R11,R9 -s
|
|
LR R2,R9 s
|
|
BCTR R2,0 -1
|
|
EX R2,MVCX mvc @PG+pgi,@XDEC+12-s,LEN=s
|
|
AR R10,R9 pgi+=s
|
|
LA R7,1(R7) j++
|
|
ENDDO , enddo j
|
|
XPRNT PG,L'PG print buffer
|
|
LA R6,1(R6) i++
|
|
ENDDO , enddo i
|
|
EPILOG
|
|
MVCX MVC 0(0,R10),0(R11) mvc PG,XDEC
|
|
NN DC F'14' number of rows
|
|
PG DC CL80' ' buffer
|
|
XDEC DS CL12 temp
|
|
ZN DC X'4020202020202020' mask CL8 7num
|
|
YREGS
|
|
END FLOYDTRI
|