Ackermann function: Difference between revisions

Content added Content deleted
Line 32: Line 32:
To simplify, the program is recursive not reentrant.
To simplify, the program is recursive not reentrant.
<lang 360asm>* Ackermann function 07/09/2015
<lang 360asm>* Ackermann function 07/09/2015
&LAB XDECO &REG,&TARGET
.*------------------------------------------------------------------*
.* THIS MACRO DISPLAYS THE REGISTER CONTENTS AS A TRUE *
.* DECIMAL VALUE. *
*------------------------------------------------------------------*
AIF (T'&REG EQ 'O').NOREG
AIF (T'&TARGET EQ 'O').NODEST
&LAB B I&SYSNDX BRANCH AROUND WORK AREA
W&SYSNDX DS XL8 CONVERSION WORK AREA
I&SYSNDX CVD &REG,W&SYSNDX CONVERT TO DECIMAL
MVC &TARGET,=XL12'402120202020202020202020'
ED &TARGET,W&SYSNDX+2 MAKE FIELD PRINTABLE
BC 2,*+12 BYPASS NEGATIVE
MVI &TARGET+12,C'-' INSERT NEGATIVE SIGN
B *+8 BYPASS POSITIVE
MVI &TARGET+12,C'+' INSERT POSITIVE SIGN
MEXIT
.NOREG MNOTE 8,'INPUT REGISTER OMITTED'
MEXIT
.NODEST MNOTE 8,'TARGET FIELD OMITTED'
MEXIT
MEND
ACKERMAN CSECT
ACKERMAN CSECT
USING ACKERMAN,R12 r12 : base register
USING ACKERMAN,R12 r12 : base register