Subroutine XXXXDECO:

V100     TITLE 'XXXXDECO'
00010001
*        PUNCH ' CATALR XXXXDECO'
00020001
XXXXDECO CSECT
00030001
**--> MODULE : XXXXDECO EXTENDED DECIMAL OUTPUT CONVERSION MODULE * * *
00040001
*        XXXXDECO IS CALLED BY MACRO XDECO TO CONVERT A REGISTER      *
00050001
*        VALUE TO EDITED DECIMAL IN A 12 BYTE AREA, WITH SIGN.        *
00060001
*        ENTRY CONDITIONS :                                           *
00070001
*   R14= ADDRESS OF XDECOB DSECT CREATED BY XDECO                     *
00080001
*   R15= ENTRY POINT ADDRESS =V(XXXXDECO)                             *
00090001
*        EXIT CONDITIONS :                                            *
00100001
*   EDITED 12-BYTE RESULT OF REGISTER ARGUMENT STORED AT ADDRESS ARG. *
00110001
*        USES DSECT: XDECOB                                           *
00120001
*        NAMES: XXDO----                                              *
00130001
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
00140001
         USING *,15                NOTE ENTRY POINT USING FOR BASE
00150001
         USING XDECOB,14           NOTE XDECO CONTROL BLOCK
00160001
         STM   1,2,XXDOSAVE        SAVE WORK REGISTERS
00170001
         LR    2,0                 MOVE @ AREA WHERE CAN BE USED
00180001
         L     0,XDECOV            GET VALUE TO BE CONVERTED
00190001
         CVD   0,XXDODWOR          CONVERT THE VALUE
00200001
         MVC   0(12,2),XXDODECP    MOVE EDIT PATTERN IN
00210001
         LA    1,11(2)             SET UP FOR NEG NUMBER FOR EDMK
00220001
         EDMK  0(12,2),XXDODWOR+2  EDIT THE VALUE OVER
00230001
         BNM   XXDORETN            SKIP INSERTION OF - IF >= 0
00240001
         BCTR  1,0                 MOVE @ POINTER BACK 1
00250001
         MVI   0(1),C'-'           INSERT - IN FRONT OF FIRST DIGIT
00260001
XXDORETN LM    1,2,XXDOSAVE        RESTORE WORKING REGS
00270001
         SPM   14                  RESTORE ORIGINAL COND CODE
00280001
         B     XDECORET            RETURN TO CALLING XDECO
00290001
         SPACE 1
00300001
XXDODECP DC    X'402020202020202020202120'     EDIT PATTERN
00310001
XXDODWOR DS    D                   WORKAREA
00320001
XXDOSAVE DS    2F                  SAVE AREA FOR REGS 1-2
00330001
         DROP  14,15               DROP BASE REGISTERS
00340001
         EJECT
00350001
XDECOB   DSECT
00360001
**--> DSECT : XDECOB    CONTROL BLOCK CREATED BY XDECO MACRO  * * * * *
00370001
*        AN XDECOB IS CREATED FOR EACH XDECO CALL, AND CONTAINS THE   *
00380001
*        @ XXXXDECO MODULE, SAVEWORDS FOR REGS R14,R15,R0, AND A WORD *
00390001
*        FOR THE VALUE TO BE CONVERTED TO DECIMAL.                    *
00400001
*        XDECOB IS USED ONLY IN MODULE XXXXDECO.                      *
00410001
*        GENERATION: XDECO                                            *
00420001
*        NAMES: XDECO---                                              *
00430001
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
00440001
         DS    V(XXXXDECO)         ADCON TO GET HERE
00450001
         DS    3F                  SAVE AREA FOR REGS 14,15,0
00460001
XDECOV   DS    F                   VALUE FOR CONVERSION
00470001
XDECORET LM    14,0,4(14)          RETURN POINT @
00480001
         END   ,
00490001

Reply via email to