*DECK GMOVRN
          IDENT  GMOVRN 
          TITLE  GMOVRN - GENERATE RN2XX MOVES
  
          MACHINE  ANY,I
          SST 
          COMMENT  GENERATE RN2XX MOVES 
          SPACE  4
**        GMOVRN - GENERATE RN2XX MOVES 
* 
* RN2AE   LINK   CGRN2AE
* RN2AN   LINK   CGRN2AN
* RN2C1   LINK   CGRN2C1
* RN2C2   LINK   CGRN2C2
* RN2NE   LINK   CGRN2NE
* RN2R1   LINK   CGRN2R1
* RN2R2   LINK   CGRN2R2
* RN2R4   LINK   CGRN2R4
* 
*         GENERATES CODE TO PERFORM THE INDICATED MOVE. 
  
  
  
*      COMDECKS 
  
  
  
  
  
 CONTROL  OPSYN  NIL
  
  
  
  
*CALL CCT 
  
          EJECT 
 GMOVRN   MODULE
  
*      REGTABLE EQUATES 
  
  
 MOVEREGA EQU    REGB 
 MOVEREGB EQU    REGC 
 MOVEREGD EQU    REGQ 
 MOVEREGE EQU    REGR 
 MOVEREGF EQU    REGS 
 MOVEREGM EQU    REGM 
  
*      VIRTUAL REGISTER EQUATES 
  
 VREGA    EQU    VREG1
 VREGB    EQU    VREG2
 VREGC    EQU    VREG3
 VREGD    EQU    VREG9
 VREGE    EQU    VREG5
 VREGF    EQU    VREG6
 VREGG    EQU    VREG7
 VREGH    EQU    VREG8
 VREGI    EQU    VREG9
 VREGJ    EQU    VREG10 
 VREGK    EQU    VREG11 
 VREGL    EQU    VREG12 
 VREGU    EQU    VREG16 
 VREGV    EQU    VREG17 
 VREGW    EQU    VREG18 
 VREGX    EQU    VREG4
 VREGAC   EQU    VREG1
  
*      FIXED TABLE EQUATES
  
                                                 RN2AN
  
*      MISCELLANEOUS EQUATES
  
  
*      LINKAGE FROM CALLING ROUTINES IN OTHER MODULES 
  
 RN2AE    KNIL   CGRN2AE
 RN2AN    KNIL   CGRN2AN
 RN2C1    KNIL   CGRN2C1
 RN2C2    KNIL   CGRN2C2
 RN2C4    KNIL   CGRN2C4
 RN2NE    KNIL   CGRN2NE
 RN2R1    KNIL   CGRN2R1
 RN2R2    KNIL   CGRN2R2
 RN2R4    KNIL   CGRN2R4
  
*      LINKAGE TO CALLED ROUTINES IN OTHER MODULES
  
 CEDITPAT EXECUTE  EDITPAT
          RETURN
  
 ADNAT    LINK   ADNAT       * TO CGSTART 
 EDITPAT  LINK   EDITPAT     * TO 
 GTADBCP  LINK   CGGTABP     * TO GMOVSTO 
 PERMDNAT LINK   ADPDNAT     * TO CGSTART 
 RA2AE    LINK   CGRA2AE     * TO GMOVRA
 RN2ND    LINK   CGRN2ND     * TO GMOVSTO 
 RN2RN    LINK   CGRN2RN     * TO GMOVSCA 
 R12R2    LINK   CGR12R2     * TO GMOVR1
 SETBREG  LINK   CGSETB4     * TO GMOVSUB 
 SETBREG4 LINK   CGSETB4     * TO GMOVSUB 
 SETBXPK  LINK   CGSBXPK     * TO GMOVSUB 
 SETXREG  LINK   CGSETXW     * TO GMOVSUB 
 STORC1C2 LINK   CGSTORC     * TO GMOVSUB 
 STORC4   LINK   STORC4     * TO GMOVSUB
 SUBDNAT  LINK   SUBDNAT     * TO CGSTART 
 SUBLOAD  LINK   SUBLOAD     * TO GSUBSC
 SUBREF   LINK   SUBREF      * TO GSUBSC
  
*      SYMBOLIC PARAMETER DEFINITIONS 
  
 RECADDR  SETSY  (FWA$OF,MOVEREGB)
 TMPBFAD  SETSY  (EXT$OF,C.BUFF)
 #400012B CONSTANT  0000000000000040012B
          SPACE  4
          LISTSEC  RN2AE
          TITLE  RN2AE -  REGISTER NUMERIC TO ALPHANUMERIC ITEM 
**        RN2AE -  REGISTER NUMERIC TO ALPHANUMERIC-EDITED ITEM 
* 
*         REGB = DNAT POINTER TO SOURCE REGISTER(S) 
*         (TREGOF,REGB) = VIRTUAL REGISTER NUMBER OF REGISTER 
*           CONTAINING (MOST SIGNIFICANT) DIGITS. 
*         (TREGP1OF,REGB) = VIRTUAL REGISTER NUMBER OF REGISTER 
*           CONTAINING LEAST SIGNIFICANT DIGITS.  (IF 2-REGISTER SOURCE)
*         (NUMLENOF,REGB) = NUMBER OF DIGITS IN SOURCE. 
*         (POINTOF,REGB) = POSITION OF LEAST SIGNIFICANT DIGIT
*           RELATIVE TO DECIMAL POINT.   (E.G. PIC 999V99 _ 2)
*         (SIGNOF,REGB) = 1 IFF SOURCE IS SIGNED. 
*         REGC = DNAT POINTER TO DESTINATION ITEM.
* 
*         CALLZ  RN2AE
* 
*         ASSUMES SOURCE IS UNSIGNED. 
*         CONVERTS TO ALPHANUMERIC FORM  (I.E. LEFT-JUST, BLANK-FILLED) 
*         CALLS OBJECT ROUTINE TO DO THE EDITING. 
* 
*         USES-  (NONE) 
* 
*         ALSO CALLED BY- 
*                ND2AE
  
  
 RN2AE    EGO    2
  
*      CREATE DUMMY DNAT TO REFERENCE EDIT PATTERN
  
          MOVEZ  REGU1,REGT 
          CALLZ  PERMDNAT                        CREATE PERMANENT DNAT
  
*      ANALYZE EDIT PATTERN AND POOL EDIT PATTERN 
  
*         REGC = REGTABL INDEX TO DESTINATION ITEM
*         REGT = REGTABL INDEX FOR EDIT PATTERN 
          EXECUTE  EDITPAT
  
*      SET VREG2 TO EDIT PATTERN
          NOTE   RN2AE
  
          IFTHEN (RECSUBS,NE,0) SUBSCRIPTED 
          GEN    SLRBPK,(VREGOF,VREG2),,((FWA$OF,REGT)) 
          MOVEZ  RECSUBS,P1 
          MOVEZ  (BCPOF,REGC),P2
          GEN    SXBPK,(VREGOF,VREG4),,((FWA$OF,REGC))
          CALLZ  GTADBCP
*         SETS VREG4 = ACTUAL FWA OF SOURCE 
*         SETS VREG5 = ACTUAL BCP OF SOURCE 
          GEN    MASK,(VREGOF,VREG6),42 
          GEN    SHL,VREG2,30 
          GEN    LAND,(VREGOF,VREG6),VREG2,VREG6
          GEN    IADD,(VREGOF,VREG6),VREG6,VREG4
          GEN    SHL,VREG6,6
          GEN    MASK,(VREGOF,VREG7),56 
          GEN    LAND,(VREGOF,VREG6),VREG6,VREG7
          GEN    LOR,(VREGOF,VREG5),VREG6,VREG5 
          GEN    SHL,VREG5,24 
          GEN    SSRAPB,VREG5,VREG2 
          GEN    SBAPB,(VREGOF,VREG2),VREG5 
          ELSEZ 
          GEN    SBBPK,(VREGOF,VREG2),,((FWA$OF,REGT))
          ENDIFZ
  
*      SPLIT ACCORDING TO FORMAT OF SOURCE
  
                             (NUMLENOF,REGC) = NO. CHARACTERS COPIED
          MINZ   (INTLENOF,REGB),(NUMLENOF,REGC),T4  T4=USED DIGITS 
          MOVEZ  (NUMLENOF,REGB),T2 
          MOVEZ  T2,T3                           SET T3 TO CALC. BCP
          IFZ    (T2,GT,10),RN2AE3               IF 2-REGISTER SOURCE 
          IFZ    (T2,LT,10),RN2AE2               IF 1-REGISTER SOURCE 
          IFZ    ((SIGNOF,REGB),EQ,0),RN2AE2     IF UNSIGNED
  
*                            SOURCE IS 10 DIGITS, SIGNED
          NOTE   RN2AE1 
          GEN    XMIT,(VREGOF,VREG4),(TREGOF,REGB)
          GEN    SHR,VREG4,59 
          GEN    LXOR,(VREGOF,VREG1),(TREGP1OF,REGB),VREG4
          GEN    SSRBPK,VREG1,,((EXT$OF,C.BUFF))
          GEN    SBAPB,(VREGOF,VREG1),VREG1 
          SUBZ   10,T3,T1                        3/0, 4/BCP=(10-T3) 
          LSHIFT T1,11                           3/0, 4/BCP, 11/0 
          ADDZ   T1,T4,T1                        3/0, 4/BCP, 11/LEN 
          GEN    SXBPK,(VREGOF,VREG3),,T1 
          GENOBJ N=C.EDIT,I=(VREG1,VREG2,VREG3) 
          RETURN
  
  
*                            SOURCE IS 1-9 DIGITS  (SIGNED) 
*                                      10 DIGITS,  UNSIGNED 
 RN2AE2   LABEL 
          NOTE   RN2AE2 
          SUBZ   10,T3,T1                        3/0, 4/BCP=(10-T3) 
          LSHIFT T1,11                           3/0, 4/BCP, 11/0 
          ADDZ   T1,T4,T1                        3/0, 4/BCP, 11/LEN 
          GEN    SXBPK,(VREGOF,VREG3),,T1 
          GEN    XMIT,(VREGOF,VREG4),(TREGOF,REGB)
          GEN    SSRBPK,VREG4,,((EXT$OF,C.BUFF))
          GEN    SBAPB,(VREGOF,VREG1),VREG4 
          GENOBJ N=C.EDIT,I=(VREG1,VREG2,VREG3) 
          RETURN
  
  
*                            SOURCE IS 2 REGISTERS
 RN2AE3   LABEL 
          IFZ    (T3,LE,10),RN2AE4               IF ONLY 1 REGISTER USED
          NOTE   RN2AE3 
          SUBZ   20,T3,T1                        3/0, 4/BCP=(20-T3) 
          LSHIFT T1,11                           3/0, 4/BCP, 11/0 
          ADDZ   T1,T4,T1                        3/0, 4/BCP, 11/LEN 
          GEN    XMIT,(VREGOF,VREG4),(TREGOF,REGB)
          GEN    XMIT,(VREGOF,VREG4),(TREGOF,REGB)
          GEN    SHR,VREG4,59 
          GEN    LXOR,(VREGOF,VREG1),(TREGOF,REGB),VREG4
          GEN    LXOR,(VREGOF,VREG5),(TREGP1OF,REGB),VREG4
          GEN    SSRBPK,VREG1,,((EXT$OF,C.BUFF))
          GEN    SSRAPB,VREG5,VREG1,VREGB1
          GEN    SBAPB,(VREGOF,VREG1),VREG1 
          GEN    SXBPK,(VREGOF,VREG3),,T1 
          GENOBJ N=C.EDIT,I=(VREG1,VREG2,VREG3) 
          RETURN
  
  
*                            SOURCE IS 2 REGISTERS
*                            FIRST REGISTER IS NOT USED 
*                            T3 = START OF USED DIGITS  (FROM RIGHT)
 RN2AE4   LABEL 
          NOTE   RN2AE4 
          SUBZ   10,T3,T1                        3/0, 4/BCP=(10-T3) 
          LSHIFT T1,11                           3/0, 4/BCP, 11/0 
          ADDZ   T1,T4,T1                        3/0, 4/BCP, 11/LEN 
          GEN    XMIT,(VREGOF,VREG4),(TREGOF,REGB)
          GEN    SHR,VREG4,59 
          GEN    LXOR,(VREGOF,VREG1),(TREGP1OF,REGB),VREG4
          GEN    SSRBPK,VREG1,,((EXT$OF,C.BUFF))
          GEN    SBAPB,(VREGOF,VREG1),VREG1 
          GEN    SXBPK,(VREGOF,VREG3),,T1 
          GENOBJ N=C.EDIT,I=(VREG1,VREG2,VREG3) 
          RETURN
          RETURN
          SPACE  4
          LISTSEC  RN2AN
          TITLE  RN2AN - REGISTER NUMERIC TO ALPHANUMERIC PROCESSOR 
************************************************************************
*                                                                      *
** NAME-  NUMERIC-REGISTER TO ALPHANUMERIC PROCESSOR                   *
*                                                                      *
** PURPOSE-                                                            *
*      GENERATE CODE TO STORE A NUMERIC-REGISTER INTO AN ALPHANUMERIC  *
*      DATA FIELD.  SOURCE IS ASSUMED TO BE UNSIGNED.  RECEIVING       *
*      FIELD IS ONE OF THE FOLLOWING-                                  *
*         ALPHABETIC                                                   *
*         ALPHANUMERIC                                                 *
*         GROUP                                                        *
*                                                                      *
** DESCRIPTION-                                                        *
*      SOURCE IS STORED IN C.BUFF AND C.MOVE IS USED TO MOVE IT (AND   *
*      PAD BLANKS IF NECESSARY) TO RECEIVING FIELD.  NO EFFORT HAS BEEN*
*      MADE TO GENERATE EFFICIENT CODE SINCE (CURRENTLY) THE ONLY WAY  *
*      THIS PROCESSOR IS CALLED IS IF SOMEONE DOES AN ACCEPT A FROM DAY*
*      (OR TIME OR DATE OR DAY-OF-WEEK) AND A IS ALPHANUMERIC OR GROUP *
*      ETC.                                                            *
*         ALSO CALLED BY R12AN AND ND2AN.                              *
*                                                                      *
************************************************************************
  
 RN2AN    EGO    2
  
*      EXTRACT INFORMATION NECESSARY FOR THE DECISION PROCESS AND FOR 
*      CODE GENERATION
  
          MOVEZ  (NUMLENOF,MOVEREGA),SENDSIZE 
  
          IFTHEN (SENDSIZE,LE,10) 
            SUBZ   10,SENDSIZE,SENDBCP
          ELSEZ 
            SUBZ   20,SENDSIZE,SENDBCP
            ENDIFZ
          MOVEZ  (GSCODEOF,MOVEREGB),T1 
          IFTHEN (T1,NE,0)
          ANDIF  ((RFLCPTYP,T1),NE,0) 
            BRANCH  RN2AN800
          ENDIFZ
  
          MOVEZ  (BYTLENOF,MOVEREGB),RECSIZE
          MOVEZ  (BCPOF,MOVEREGB),RECBCP
          SUBZ   SENDSIZE,RECSIZE,SIZEDIFF
          MOVEZ  (JUSTOF,MOVEREGB),JUSTFLG
  
          IFZ    (SIZEDIFF,GT,0),RN2AN400 
          IFZ    (SIZEDIFF,LT,0),RN2AN200 
  
*      GENERATE CODE TO MOVE SENDSIZE CHARS BEGINNING AT SENDBCP OF 
*      A NUMERIC REGISTER TO THE RECEIVING FIELD
  
 RN2AN100 LABEL 
          NOTE   RN2AN100 
          GEN    XMIT,(VREGOF,VREGA),(TREGOF,MOVEREGA)
          GEN    SSRBPK,VREGA,,TMPBFAD
  
          IFTHEN (SENDSIZE,GT,10) 
            GEN    XMIT,(VREGOF,VREGB),(TREGP1OF,MOVEREGA)
            GEN    SSRAPB,VREGB,VREGA,VREGB1
            ENDIFZ
  
          GEN    SBBPK,(VREGOF,VREGB),,TMPBFAD        B5 = FWA SOURCE 
          MOVEZ  SENDBCP,P1 
          CALLZ  SETBREG                              B6 = BCP SOURCE 
          MOVEZ  VREGX,VREGC
          MOVEZ  SENDSIZE,P1
          CALLZ  SETBREG                              B7 = NUM CHARS TO 
*                                                          MOVE 
          MOVEZ  VREGX,VREGD
          MOVEZ  SIZEDIFF,P1
          CALLZ  SETXREG                              X2 = NUM BLANKS TO
*                                                          PAD
          MOVEZ  VREGW,VREGE
          GEN    SBBPK,(VREGOF,VREGF),,RECADDR        B3 = FWA RECEIVING
          IFTHEN (RECSUBS,NE,0) 
            MOVEZ  RECSUBS,P1 
            CALLZ  SUBLOAD
            GEN    SHR,P1,30
            MOVEZ  P1,VREGU 
            MOVEZ  RECBCP,P1
            CALLZ  SETBXPK                            B4 = CHAR OFFSET
*                                                          OF RECEIVING 
            MOVEZ  VREGU,VREGG
          ELSEZ 
            MOVEZ  RECBCP,P1
            CALLZ  SETBREG                            B4 = BCP RECEIVING
            MOVEZ  VREGX,VREGG
          ENDIFZ
          GENOBJ N=C.MOVN,I=(VREGF,VREGG,VREGB,VREGC,VREGD,VREGE) 
          RETURN
          SPACE  4
*      SIZE OF SOURCE IS LESS THAN SIZE OF RECEIVING FIELD
  
 RN2AN200 LABEL 
          NOTE   RN2AN200 
          IFTHEN (JUSTFLG,NE,0) 
            SUBZ   0,SIZEDIFF,SIZEDIFF
          ENDIFZ
          BRANCH RN2AN100 
          SPACE  4
*      SIZE OF SOURCE IS GREATER THAN SIZE OF RECEIVING FIELD 
  
 RN2AN400 LABEL 
          NOTE   RN2AN400 
          MOVEZ  RECSIZE,SENDSIZE 
          IFTHEN (JUSTFLG,NE,0) 
            ADDZ   SENDBCP,SIZEDIFF,SENDBCP 
          ENDIFZ
          MOVEZ  0,SIZEDIFF 
          BRANCH RN2AN100 
*    DESTINATION REFERENCE MODIFIED 
 RN2AN800 LABEL 
          NOTE  RN2AN800
          GEN    XMIT,(VREGOF,VREGA),(TREGOF,MOVEREGA)
          GEN    SSRBPK,VREGA,,TMPBFAD
          IFTHEN (SENDSIZE,GT,10) 
          GEN    XMIT,(VREGOF,VREGB),(TREGP1OF,MOVEREGA)
          GEN    SSRAPB,VREGB,VREGA,VREGB1
          ENDIFZ
          GEN    SBBPK,(VREGOF,VREGA),,TMPBFAD
          GEN    SBBPK,(VREGOF,VREGB),,RECADDR
          GEN    MASK,(VREGOF,VREGC),0
          MOVEZ   MOVEREGB,P2 
          CALLZ  SUBREF 
          GEN    SBXPB,(VREGOF,VREGD),P3
          MOVEZ  P4,VREGE 
          MOVEZ  SENDBCP,P1 
          CALLZ  SETBREG
          MOVEZ  SENDSIZE,P1
          CALLZ  SETXREG
          GENOBJ N=C.MOVRF,I=(VREGB,VREGD,VREGA,VREGX,VREGC,VREGW,VREGE 
,)
          RETURN
          SPACE  4
          LISTSEC  RN2C1
          TITLE  RN2C1 -  REGISTER NUMERIC TO COMP-1 ITEM 
**        RN2C1 -  REGISTER NUMERIC TO COMP-1 ITEM
* 
*         REGB = DNAT POINTER TO SOURCE REGISTER
*         (TREGOF,REGB) = VIRTUAL REGISTER NUMBER OF REGISTER 
*           CONTAINING (MOST SIGNIFICANT) DIGITS OF SOURCE. 
*         (TREGP1OF,REGB) = VIRTUAL REGISTER NUMBER OF REGISTER 
*           CONTAINING LEAST SIGNIFICANT DIGITS.   (IF 2-WORD INPUT)
*         (NUMLENOF,REGB) = NUMBER OF DIGITS IN SOURCE. 
*         (POINTOF,REGB) = POSITION OF LEAST SIGNIFICANT DIGIT
*           RELATIVE TO DECIMAL POINT.   (E.G. PIC 999V99 _ 2)
*         (SIGNOF,REGB) = 1 IFF SOURCE IS SIGNED. 
*         REGC = DNAT POINTER TO DESTINATION ITEM.
*         FWARECV = ADDRESS OF DESTINATION. 
*         (NUMLENOF,REGC) = NUMBER OF DIGITS IN DESTINATION VALUE.
*         (POINTOF,REGC) = POSITION OF LEAST SIGNIFICANT DIGIT
*           RELATIVE TO DECIMAL POINT.   (E.G. PIC 999PP _ -2)
*         (SIGNOF,REGC) = 1 IFF DESTINATION IS SIGNED.
* 
*         CALLZ  RN2C1
* 
*         GENERATES CODE TO PERFORM THE INDICATED MOVE. 
* 
*         USES-  REGU2
*                SAVREGC2 
*                REGU1       (BY RN2R1) 
*                SAVREGC1    (BY RN2R1) 
  
  
 RN2C1    EGO    2
          NOTE   RN2C1
  
*      CREATE A DUMMY DNAT
  
          MOVEZ  (EQUALS,REGU2),REGT             REGU2 TO POINT TO DNAT 
          CALLZ  ADNAT                           CREATE DNAT
          MOVEZ  (NUMLENOF,REGC),(NUMLENOF,REGU2) 
          MOVEZ  (POINTOF,REGC),(POINTOF,REGU2) 
          MOVEZ  (SIGNOF,REGC),(SIGNOF,REGU2) 
  
*      CONVERT RN (IN REGB) TO R1 (IN REGU2)
  
          PUSH   REGC 
          MOVEZ  (EQUALS,REGU2),REGC             THIS DEST. IS REGU2
          CALLZ  RN2R1                           CONVERT (REGB) _ (REGC)
          POP    REGC 
  
*      STORE THE RESULT 
  
 RN2C11   LABEL                                  (CROSS-REFS ONLY)
          NOTE   RN2C11 
          MOVEZ  (TREGOF,REGU2),P1
          CALLZ  STORC1C2 
  
          CALLZ  SUBDNAT                         DELETE REGU2 DNAT
          RETURN
          SPACE  4
          LISTSEC  RN2C2
          TITLE  RN2C2 -  REGISTER NUMERIC DISPLAY TO COMP-2 ITEM 
**        RN2C2 -  REGISTER NUMERIC DISPLAY TO COMP-2 ITEM
* 
*         REGB = DNAT POINTER TO SOURCE REGISTER. 
*         (TREGOF,REGB) = VIRTUAL REGISTER NUMBER OF REGISTER 
*           CONTAINING (MOST SIGNIFICANT) PART OF SOURCE. 
*         (TREGP1OF,REGB) = VIRTUAL REGISTER NUMBER OF REGISTER 
*           CONTAINING LEAST SIGNIFICANT PAR.   (IF 2-WORD INPUT) 
*         (NUMLENOF,REGB) = NUMBER OF DIGITS IN SOURCE. 
*         (POINTOF,REGB) = POSITOIN OF LEAST SIGNIFICANT DIGIT
*           RELATIVE TO DECIMAL POINT.   (E.G. PIC 999PP _ -2)
*         (SIGNOF,REGB) = 1 IFF SOURCE IS SIGNED. 
*         REGC = DNAT POINTER TO DESTINATION ITEM.
*         FWARECV = ADDRESS OF DESTINATION. 
*         (SIGNOF,REGC) = 1 IFF DESTINATION IS SIGNED.
* 
*         CALLZ  RN2C2
* 
*         GENERATES CODE TO PERFORM THE INDICATED MOVE. 
* 
*         USES-  REGU3
*                SAVREGC3 
*                REGU2       (BY RN2R2) 
*                REGU1       (BY RN2R2) 
*                SAVREGC2    (BY RN2R2) 
*                SAVREGC1    (BY RN2R2) 
  
  
 RN2C2    EGO    2
          NOTE   RN2C2
  
*      CREATE A DUMMY DNAT
  
          MOVEZ  (EQUALS,REGU3),REGT             REGU3 TO POINT TO DNAT 
          CALLZ  ADNAT                           CREATE DNAT
          MOVEZ  1,(SIGNOF,REGU3) 
  
*      CONVERT RN (IN REGB) TO R2 (IN REGU3)
  
          PUSH   REGC 
          MOVEZ  (EQUALS,REGU3),REGC             THIS DEST. IS REGU3
          CALLZ  RN2R2                           CONVERT (REGB) _ (REGC)
          POP    REGC 
  
*      STORE THE RESULT 
  
 RN2C21   LABEL                                  (CROSS-REFS ONLY)
          NOTE   RN2C21 
          MOVEZ  (TREGOF,REGU3),P1
          CALLZ  STORC1C2 
  
          CALLZ  SUBDNAT                         DELETE REGU3 DNAT
  
          RETURN
          SPACE  4
          LISTSEC  RN2C4
          TITLE  RN2C4 - REGISTER NUMERIC DISPLAY TO COMP-4 ITEM
************************************************************************
*         RN2C4  REGISTER NUMERIC DISPLAY TO COMP-4 ITEM               *
*                                                                      *
*         REGB=  DNAT POINTER TO SOURCE REGISTER                       *
*                                                                      *
*         REGC=  DNAT POINTER TO DESTINATION ITEM                      *
*                                                                      *
*         CALLZ  RN2C4                                                 *
*                                                                      *
************************************************************************
 RN2C4    EGO    2
          NOTE   RN2C4
* 
*      CREATE DUMMY DNAT
* 
          MOVEZ  REGU2,REGT                      REGU2 POINTS TO DNAT 
          CALLZ  ADNAT                           CREATE DNAT
          MOVEZ  (NUMLENOF,REGC),(NUMLENOF,REGU2) 
          MOVEZ  (POINTOF,REGC),(POINTOF,REGU2) 
          MOVEZ  (SIGNOF,REGC),(SIGNOF,REGU2) 
* 
*      CONVERT RN  (IN REGB) TO R1 (IN REGU2) 
* 
          PUSH   REGC 
          MOVEZ  REGU2,REGC 
          CALLZ  RN2R1                           CONVERT REGB TO REGC 
          POP    REGC 
* 
*      STORE THE RESULT 
* 
 RNC41    LABEL 
          NOTE   RNC41
          MOVEZ  (TREGOF,REGU2),P1
          CALLZ  STORC4 
          CALLZ  SUBDNAT                       DELETE  REGU2  DNAT
          RETURN
          SPACE  4
          LISTSEC  RN2NE
          TITLE RN2NE -  REGISTER NUMERIC DISPLAY TO NUMERIC-EDITED ITEM
**        RN2NE -  REGISTER NUMERIC DISPLAY TO NUMERIC-EDITED ITEM
* 
*         REGB = DNAT POINTER TO SOURCE REGISTER. 
*         (TREGOF,REGB) = VIRTUAL REGISTER NUMBER OF REGISTER 
*           CONTAINING (MOST SIGNIFICANT) DIGITS OF SOURCE. 
*         (TREGP1OF,REGB) = VIRTUAL REGISTER NUMBER OF REGISTER 
*           CONTAINING LEAST SIGNIFICANT DIGITS.   (IF 2-WORD INPUT)
*         (NUMLENOF,REGB) = NUMBER OF DIGITS IN SOURCE. 
*         (POINTOF,REGB) = POSITION OF LEAST SIGNIFICANT DIGIT
*           RELATIVE TO DECIMAL POINT.   (E.G. PIC 999P _ 1)
*         (SIGNOF,REGB) = 1 IFF SOURCE IS SIGNED. 
*         REGC = DNAT POINTER TO DESTINATION ITEM.
* 
*         CALLZ  RN2NE
* 
*         GENERATES CODE TO STORE THE REGISTER(S) INTO THE EDITED 
*           FIELD AS INDICATED. 
* 
*         USES-  REGU1
*                SAVREGC1 
*                ND2NE
* 
*         ALSO CALLED BY- 
*                C12NE
*                C22NE
*                ND2NE
*                R12NE
*                R22NE
*                R42NE
  
  
 RN2NE    EGO    2
  
*      CREATE DUMMY DNAT TO REFERENCE EDIT PATTERN
  
          MOVEZ  (EQUALS,REGU1),REGT
          CALLZ  PERMDNAT                        CREATE PERMANENT DNAT
  
*      ANALYZE EDIT PATTERN AND MAYBE POOL EDIT PATTERN 
  
          MOVEZ  (INTLENOF,REGB),P1 
*         REGC = REGTABL INDEX TO DESTINATION ITEM
*         REGT = REGTABL INDEX FOR POSSIBLE EDIT PATTERN
          CALLZ  CEDITPAT 
*         SETS P1 
  
          IFZ    (P1,NE,0),RN2NE5                IF ZZZ CASE
  
*      SET VREG2 TO EDIT PATTERN
  
          NOTE   RN2NE
          IFTHEN (RECSUBS,EQ,0)       DESTINATION NOT SUBSCRIPTED 
            GEN    SBBPK,(VREGOF,VREG2),,((FWA$OF,REGT))
            BRANCH RN2NE1 
          ENDIFZ
          GEN    SLRBPK,(VREGOF,VREG2),,((FWA$OF,REGT)) 
          MOVEZ  RECSUBS,P1 
          MOVEZ  (BCPOF,REGC),P2
          GEN    SXBPK,(VREGOF,VREG4),,((FWA$OF,REGC))
          CALLZ  GTADBCP
*         SETS VREG4 = ACTUAL FWA OF SOURCE 
*         SETS VREG5 = ACTUAL BCP OF SOURCE 
          GEN    MASK,(VREGOF,VREG6),42 
          GEN    SHL,VREG2,30 
          GEN    LAND,(VREGOF,VREG6),VREG2,VREG6
          GEN    IADD,(VREGOF,VREG6),VREG6,VREG4
          GEN    SHL,VREG6,6
          GEN    MASK,(VREGOF,VREG7),56 
          GEN    LAND,(VREGOF,VREG6),VREG6,VREG7
          GEN    LOR,(VREGOF,VREG7),VREG6,VREG5 
          GEN    SHL,VREG7,24 
          GEN    SSRAPB,VREG7,VREG2 
          GEN    SBAPB,(VREGOF,VREG2),VREG2 
 RN2NE1   LABEL                                  (VREG2 = EDIT PATTERN) 
  
*      DECIDE WHICH PROCESSING IS TO BE DONE
  
          MINZ   (INTLENOF,REGB),(INTLENOF,REGC),T3 
          ADDZ   T3,(POINTOF,REGB),T3            LENGTH ACTUALLY USED 
          MOVEZ  (NUMLENOF,REGB),T2 
          IFZ    (T2,LT,10),RN2NE2               IF 1-REGISTER SOURCE 
          IFZ    (T2,GT,10),RN2NE3               IF 2-REGISTER SOURCE 
          IFZ    ((SIGNOF,REGB),EQ,0),RN2NE6     IF 10 DIGITS, UNSIGNED 
  
*                            SOURCE IS 10 DIGITS, SIGNED
          NOTE   RN2NE1 
          GEN    XMIT,(VREGOF,VREG4),(TREGOF,REGB)
          GEN    SHR,VREG4,59 
          GEN    LXOR,(VREGOF,VREG1),(TREGP1OF,REGB),VREG4
          GEN    SSRBPK,VREG1,,((EXT$OF,C.BUFF))
          GEN    SBAPB,(VREGOF,VREG1),VREG1 
          SUBZ   74,T3,T1                        3/4, 4/BCP=(10-T3) 
          LSHIFT T1,11                           3/4, 4/BCP, 11/0 
          ADDZ   T1,T3,T1                        3/4, 4/BCP, 11/LEN 
          GEN    SXBPK,(VREGOF,VREG3),,T1 
          GENOBJ N=C.EDITS,I=(VREG1,VREG2,VREG3,VREG4)
          RETURN
  
  
*                            SOURCE IS 1-9 DIGITS  (SIGNED) 
 RN2NE2   LABEL 
          NOTE   RN2NE2 
          SUBZ   122,T3,T1                       3/7, 4/BCP=(10-T3) 
          LSHIFT T1,11                           3/7, 4/BCP, 11/0 
          ADDZ   T1,T3,T1                        3/7, 4/BCP, 11/LEN 
          GEN    SXBPK,(VREGOF,VREG3),,T1 
          GEN    XMIT,(VREGOF,VREG4),(TREGOF,REGB)
          GEN    SSRBPK,VREG4,,((EXT$OF,C.BUFF))
          GEN    SBAPB,(VREGOF,VREG1),VREG4 
          GENOBJ N=C.EDIT,I=(VREG1,VREG2,VREG3) 
          RETURN
  
*                            2-REGISTER SOURCE
 RN2NE3   LABEL 
          IFZ    (T3,LE,10),RN2NE4               IF ONLY 1 REGISTER USED
          NOTE   RN2NE3 
          SUBZ   84,T3,T1                        3/4, 4/BCP=(20-T3) 
          LSHIFT T1,11                           3/4, 4/BCP, 11/0 
          ADDZ   T1,T3,T1                        3/4, 4/BCP, 11/LEN 
          GEN    XMIT,(VREGOF,VREG4),(TREGOF,REGB)
          GEN    SHR,VREG4,59 
          GEN    LXOR,(VREGOF,VREG1),(TREGOF,REGB),VREG4
          GEN    LXOR,(VREGOF,VREG5),(TREGP1OF,REGB),VREG4
          GEN    SSRBPK,VREG1,,((EXT$OF,C.BUFF))
          GEN    SSRAPB,VREG5,VREG1,VREGB1
          GEN    SBAPB,(VREGOF,VREG1),VREG1 
          GEN    SXBPK,(VREGOF,VREG3),,T1 
          GENOBJ N=C.EDITS,I=(VREG1,VREG2,VREG3,VREG4)
          RETURN
  
  
*                            2-REGISTER SOURCE
*                            FIRST REGISTER NOT USED
*                            T3 = START OF USED DIGITS  (FROM RIGHT)
 RN2NE4   LABEL 
          NOTE   RN2NE4 
          SUBZ   74,T3,T1                        3/4, 4/BCP=(10-T3) 
          LSHIFT T1,11                           3/4, 4/BCP, 11/0 
          ADDZ   T1,T3,T1                        3/4, 4/BCP, 11/LEN 
          GEN    XMIT,(VREGOF,VREG4),(TREGOF,REGB)
          GEN    SHR,VREG4,59 
          GEN    LXOR,(VREGOF,VREG1),(TREGP1OF,REGB),VREG4
          GEN    SXBPK,(VREGOF,VREG3),,T1 
          GEN    SSRBPK,VREG1,,((EXT$OF,C.BUFF))
          GEN    SBAPB,(VREGOF,VREG1),VREG1 
          GENOBJ N=C.EDITS,I=(VREG1,VREG2,VREG3,VREG4)
          RETURN
  
  
*                            ZZZ CASE 
 RN2NE5   LABEL 
          NOTE   RN2NE5 
  
          PUSH   P1 
          MOVEZ  REGU1,REGT 
          CALLZ  ADNAT
          MOVEZ  (NUMLENOF,REGC),(NUMLENOF,REGT)
          MOVEZ  (POINTOF,REGC),(POINTOF,REGT)
          PUSH   REGC 
          MOVEZ  REGU1,REGC 
          CALLZ  RN2RN
          POP    REGC 
          POP    P1 
          PUSH   REGB 
          MOVEZ  REGU1,REGB 
*      BLANK-FILL RN (IN REGB)
  
          GEN    MASK,(VREGOF,VREG1),P1 
          GENOBJ N=C.EDITZ,I=(VREG1,(TREGOF,REGB)),O=((VREGOF,VREG3)) 
          MOVEZ  VREG3,(TREGOF,REGB)
  
*      CONVERT RN (IN REGB) TO ND (IN REGC) 
  
          MOVEZ  0,(SIGNOF,REGB)                 SOURCE IS UNSIGNED 
          CALLZ  RN2ND
          CALLZ  SUBDNAT
          POP    REGB 
  
          RETURN
  
  
*                            SOURCE IS 10 DIGITS, UNSIGNED
 RN2NE6   LABEL 
          NOTE   RN2NE6 
          SUBZ   10,T3,T1                        3/0, 4/BCP=(10-T3) 
          LSHIFT T1,11                           3/0, 4/BCP, 11/0 
          ADDZ   T1,T3,T1                        3/0, 4/BCP, 11/LEN 
          GEN    SXBPK,(VREGOF,VREG3),,T1 
          GEN    XMIT,(VREGOF,VREG1),(TREGOF,REGB)
          GEN    SSRBPK,VREG1,,((EXT$OF,C.BUFF))
          GEN    SBAPB,(VREGOF,VREG1),VREG1 
          GENOBJ N=C.EDIT,I=(VREG1,VREG2,VREG3) 
          RETURN
          SPACE  4
          LISTSEC  RN2R1
          TITLE  RN2R1 -  REGISTER NUMERIC DISPLAY TO REGISTER COMP-1 
**        RN2R1 -  REGISTER NUMERIC DISPLAY TO REGISTER COMP-1
* 
*         REGB = DNAT POINTER TO SOURCE REGISTER
*         (TREGOF,REGB) = VIRTUAL REGISTER NUMBER OF (MOST SIGNIFICANT) 
*           DIGITS. 
*         (TREGP1OF,REGB) = VIRTUAL REGISTER NUMBER OF LEAST
*           SIGNIFICANT DIGITS   (IF TWO-WORD INPUT). 
*         (NUMLENOF,REGB) = NUMBER OF DIGITS IN SOURCE. 
*         (SIGNOF,REGB) = 1 IFF SOURCE IS SIGNED. 
*         REGC = DNAT POINTER TO DESTINATION REGISTER.
*         (NUMLENOF,REGC) = NUMBER OF DIGITS IN RECEIVING FIELD 
*         (SIGNOF,REGC) = 1 IFF DESTINATION IS SIGNED.
* 
*         CALLZ  RN2R1
* 
*         SETS (TREGOF,REGC) = VIRTUAL REGISTER NUMBER OF RESULT. 
* 
*         USES-  REGU1
*                SAVREGC1 
* 
*         ALSO CALLED BY- 
*                ND2C1
*                ND2R1
*                RN2C1
  
  
 RN2R1    EGO    2
          NOTE   RN2R1
  
*      CREATE A DUMMY DNAT
  
          MOVEZ  (EQUALS,REGU1),REGT             REGU1 TO POINT TO DNAT 
          CALLZ  ADNAT                           CREATE DNAT
          SUBZ   (POINTOF,REGC),(POINTOF,REGB),T1 
          ADDZ   (NUMLENOF,REGB),T1,T1 ADJUSTED LENGTH SOURCE 
          MAXZ   T1,1,T1     AT LEAST ONE CHARACTER 
          MOVEZ  T1,(NUMLENOF,REGU1)
          PUSH   T1 
          MOVEZ  (POINTOF,REGC),(POINTOF,REGU1) 
          MOVEZ  (SIGNOF,REGB),(SIGNOF,REGU1) 
  
*      SCALE RN (IN REGB) TO RN (IN REGU1)
  
          PUSH   REGC 
          MOVEZ  (EQUALS,REGU1),REGC             THIS DEST. IS REGU1
          CALLZ  RN2RN                           SCALE (REGB) _ (REGC)
          POP    REGC 
  
*      CONVERT RN (IN REGU1) TO R1 (IN REGC)
  
          POP    T1 
          IFZ    (T1,LT,10),RN2R11     SOURCE 1 - 9 DIGITS
          IFZ    (T1,GT,10),RN2R13     SOURCE 11 - 18 DIGITS
          IFZ    ((SIGNOF,REGB),EQ,1),RN2R13     IF 10 DIGITS, SIGNED 
          BRANCH RN2R12                          10 DIGITS, UNSIGNED
  
  
*                            SOURCE IS 1-9 DIGITS 
 RN2R11   LABEL 
          CALLZ  RN2R1A 
          CALLZ  SUBDNAT                         DELETE REGU1 DNAT
          RETURN
  
  
*                            SOURCE IS 10 DIGITS, UNSIGNED
 RN2R12   LABEL 
          CALLZ  RN2R1B 
          CALLZ  SUBDNAT                         DELETE REGU1 DNAT
          RETURN
  
  
*                            SOURCE IS 11-18 DIGITS,
*                                      OR 10 DIGITS SIGNED
 RN2R13   LABEL 
          CALLZ  RN2R1C 
          CALLZ  SUBDNAT                         DELETE REGU1 DNAT
          RETURN
RN2R1A    EJECT 
**        RN2R1A -  REGISTER NUMERIC DISPLAY TO REGISTER COMP-1 
*                   SOURCE IS 1-9 DIGITS
* 
*         REGU1 = DNAT POINTER TO SOURCE REGISTER.
*         (TREGOF,REGU1) = VIRTUAL REGISTER NUMBER OF SOURCE REGISTER.
*         (NUMLENOF,REGB) = NUMBER OF DIGITS IN SOURCE REGISTER.
*         (SIGNOF,REGU1) = 1 IFF SOURCE IS SIGNED.
*         REGC = DNAT POINTER TO DESTINATION REGISTER.
*         (NUMLENOF,REGC) = NUMBER OF DIGITS IN DESTINATION REGISTER. 
*         (SIGNOF,REGC) = 1 IFF DESTINATION REGISTER IS SIGNED. 
*         (POINTOF,REGU1) = (POINTOF,REGC). 
* 
*         CALLZ  RN2R1A 
* 
*         SETS (TREGOF,REGC) = VIRTUAL REGISTER NUMBER OF RESULT. 
  
  
 RN2R1A   LABEL 
          MINZ   T1,(NUMLENOF,REGC),T1 DIGITS TO CONVERT
          IFZ    (T1,EQ,1),RN2R1A1               IF 1 DIGIT 
          IFZ    (T1,EQ,2),RN2R1A3               IF 2 DIGITS
          IFZ    (T1,LE,8),RN2R1A5               IF 3-8 DIGITS
          BRANCH RN2R1A7                         9-14 DIGITS RECEIVING
  
  
*                            1 DIGIT RECEIVING
*                            (SOURCE IS UNSIGNED) 
 RN2R1A1  LABEL 
          IFZ    ((SIGNOF,REGB),EQ,1),RN2R1A2    IF SOURCE IS SIGNED
          NOTE   RN2R1A1
          GEN    MASK,(VREGOF,VREG1),54 
          GEN    LIMP,(VREGOF,VREG1),(TREGOF,REGU1),VREG1 
          GEN    SXXPK,(VREGOF,VREG1),VREG1,-1R0
          MOVEZ  VREG1,(TREGOF,REGC)
          RETURN
  
  
*                            1 DIGIT RECEIVING
*                            SOURCE IS SIGNED 
 RN2R1A2  LABEL 
          NOTE   RN2R1A2
          GEN    XMIT,(VREGOF,VREG2),(TREGOF,REGU1) 
          GEN    SHR,VREG2,59 
          GEN    LXOR,(VREGOF,VREG1),VREG2,(TREGOF,REGB)
          GEN    MASK,(VREGOF,VREG3),54 
          GEN    LIMP,(VREGOF,VREG1),VREG1,VREG3
          GEN    SXXPK,(VREGOF,VREG1),VREG1,-1R0
  
          IFTHEN ((SIGNOF,REGC),EQ,1)            IF RECEIVING IS SIGNED 
            GEN    LXOR,(VREGOF,VREG1),VREG1,VREG2
            ENDIFZ
  
          MOVEZ  VREG1,(TREGOF,REGC)
          RETURN
  
  
*                            2 DIGIT RECEIVING
*                            (SOURCE IS UNSIGNED) 
 RN2R1A3  LABEL 
          IFZ    ((SIGNOF,REGU1),EQ,1),RN2R1A4   IF SOURCE IS SIGNED
          NOTE   RN2R1A3
          GEN    MASK,(VREGOF,VREG1),54 
          GEN    LIMP,(VREGOF,VREG2),(TREGOF,REGU1),VREG1 
          GEN    XMIT,(VREGOF,VREG3),(TREGOF,REGU1) 
          GEN    SHR,VREG3,6
          GEN    LIMP,(VREGOF,VREG1),VREG3,VREG1
          GEN    IADD,(VREGOF,VREG3),VREG1,VREG1
          GEN    SHL,VREG1,3
          GEN    IADD,(VREGOF,VREG1),VREG1,VREG3
          GEN    SXXPK,(VREGOF,VREG1),VREG1,-10*1R0-1R0 
          GEN    IADD,(VREGOF,VREG1),VREG1,VREG2
          MOVEZ  VREG1,(TREGOF,REGC)
          RETURN
  
  
*                            2 DIGIT RECEIVING
*                            SOURCE IS SIGNED 
 RN2R1A4  LABEL 
          NOTE   RN2R1A4
          GEN    XMIT,(VREGOF,VREG2),(TREGOF,REGU1) 
          GEN    SHR,VREG2,59 
          GEN    LXOR,(VREGOF,VREG1),VREG2,(TREGOF,REGU1) 
          GEN    MASK,(VREGOF,VREG3),54 
          GEN    LIMP,(VREGOF,VREG4),VREG1,VREG3
          GEN    XMIT,(VREGOF,VREG5),VREG1
          GEN    SHR,VREG5,6
          GEN    LIMP,(VREGOF,VREG1),VREG5,VREG3
          GEN    IADD,(VREGOF,VREG3),VREG1,VREG1
          GEN    SHL,VREG1,3
          GEN    IADD,(VREGOF,VREG1),VREG1,VREG3
          GEN    SXXPK,(VREGOF,VREG1),VREG1,-10*1R0-1R0 
          GEN    IADD,(VREGOF,VREG1),VREG1,VREG4
          IFTHEN ((SIGNOF,REGC),EQ,1)            IF RECEIVING IS SIGNED 
            GEN    LXOR,(VREGOF,VREG1),VREG1,VREG2
            ENDIFZ
          MOVEZ  VREG1,(TREGOF,REGC)
          RETURN
  
  
*                            3-8 DIGIT RECEIVING
*                    ARITH11:  60-FIXED 
 RN2R1A5  LABEL 
          NOTE   RN2R1A5
          IFTHEN ((SIGNOF,REGB),EQ,1)            IF SOURCE SIGNED 
           ANDIF ((SIGNOF,REGC),EQ,0)             AND DESTINATION UNSIGN
            GEN    XMIT,(VREGOF,VREG2),(TREGOF,REGU1) 
            GEN    SHR,VREG2,59 
            GEN    LXOR,(VREGOF,VREG1),(TREGOF,REGU1),VREG2 
          ELSEZ                                  IF PRESERVE SIGN 
            MOVEZ  (TREGOF,REGU1),VREG1 
            ENDIFZ
  
          MULTZ  T1,6,T1
          GEN    MASK,(VREGOF,VREG2),(ARITH11,T1) 
          IFTHEN ((SIGNOF,REGB),EQ,1) 
          ANDIF  ((SIGNOF,REGC),EQ,1) 
            GENOBJ N=C.S08R1,I=(VREG2,VREG1),O=((VREGOF,VREG1)) 
          ELSEZ 
            GENOBJ N=C.U08R1,I=(VREG2,VREG1),O=((VREGOF,VREG1)) 
          ENDIFZ
          MOVEZ  VREG1,(TREGOF,REGC)
          RETURN
  
  
*                            9-14 DIGIT RECEIVING 
 RN2R1A7  LABEL 
          NOTE   RN2R1A7
          IFTHEN ((SIGNOF,REGB),EQ,1)            IF SOURCE SIGNED 
           ANDIF ((SIGNOF,REGC),EQ,0)             AND DESTINATION UNSIGN
            GEN    XMIT,(VREGOF,VREG2),(TREGOF,REGU1) 
            GEN    SHR,VREG2,59 
            GEN    LXOR,(VREGOF,VREG1),(TREGOF,REGU1),VREG2 
          ELSEZ                                  IF PRESERVE SIGN 
            MOVEZ  (TREGOF,REGU1),VREG1 
            ENDIFZ
  
          IFTHEN ((SIGNOF,REGB),EQ,1) 
          ANDIF  ((SIGNOF,REGC),EQ,1) 
            GENOBJ N=C.S09R1,I=VREG1,O=((VREGOF,VREG1)) 
          ELSEZ 
            GENOBJ N=C.U09R1,I=VREG1,O=((VREGOF,VREG1)) 
          ENDIFZ
          MOVEZ  VREG1,(TREGOF,REGC)
          RETURN
RN2R1B    EJECT 
**        RN2R1B -  REGISTER NUMERIC DISPLAY TO REGISTER COMP-1 
*                   SOURCE IS 10 DIGITS UNSIGNED
* 
*         REGU1 = DNAT POINTER TO SOURCE REGISTER.
*         (TREGOF,REGU1) = VIRTUAL REGISTER NUMBER OF SOURCE REGISTER.
*         REGC = DNAT POINTER TO DESTINATION REGISTER.
*         (NUMLENOF,REGC) = NUMBER OF DIGITS IN DESTINATION REGISTER. 
*         (POINTOF,REGU1) = (POINTOF,REGC). 
* 
*         CALLZ  RN2R1B 
* 
*         SETS (TREGOF,REGC) = VIRTUAL REGISTER NUMBER OF RESULT. 
  
  
 RN2R1B   LABEL 
          MOVEZ  (NUMLENOF,REGC),T1              DIGITS IN RECEIVING
          IFZ    (T1,EQ,1),RN2R1B1               IF 1 DIGIT 
          IFZ    (T1,EQ,2),RN2R1B2               IF 2 DIGITS
          IFZ    (T1,LE,8),RN2R1B3               IF 3-8 DIGITS
          BRANCH RN2R1B4                         9-14 DIGITS
  
  
*                            1 DIGIT RECEIVING
 RN2R1B1  LABEL 
          NOTE   RN2R1B1
          GEN    MASK,(VREGOF,VREG1),54 
          GEN    LIMP,(VREGOF,VREG1),(TREGOF,REGU1),VREG1 
          GEN    SXXPK,(VREGOF,VREG1),VREG1,-1R0
          MOVEZ  VREG1,(TREGOF,REGC)
          RETURN
  
  
 RN2R1B2  LABEL 
          NOTE   RN2R1B2
          GEN    MASK,(VREGOF,VREG1),54 
          GEN    LIMP,(VREGOF,VREG1),(TREGOF,REGU1),VREG1 
          GEN    XMIT,(VREGOF,VREG3),(TREGOF,REGU1) 
          GEN    SHR,VREG3,6
          GEN    LIMP,(VREGOF,VREG1),VREG3,VREG1
          GEN    IADD,(VREGOF,VREG3),VREG1,VREG1
          GEN    SHL,VREG1,3
          GEN    IADD,(VREGOF,VREG1),VREG1,VREG3
          GEN    SXXPK,(VREGOF,VREG1),VREG1,-10*1R0-1R0 
          GEN    IADD,(VREGOF,VREG1),VREG1,VREG2
          MOVEZ  VREG1,(TREGOF,REGC)
          RETURN
  
  
*                            3-8 DIGITS RECEIVING 
*                            T1 = (NUMLENOF,REGC) 
*                    ARITH7:  60-6*FIXED
 RN2R1B3  LABEL 
          NOTE   RN2R1B3
          GEN    MASK,(VREGOF,VREG1),(ARITH7,T1)
          GENOBJ N=C.U08R1,I=(VREG1,(TREGOF,REGU1)),O=((VREGOF,VREG1))
          MOVEZ  VREG1,(TREGOF,REGC)
          RETURN
  
  
*                            9-14 DIGITS RECEIVING
*                            T1 = (NUMLENOF,REGC) 
*                    ARITH7: 60-6*FIXED 
 RN2R1B4  LABEL 
          NOTE   RN2R1B4
  
          IFTHEN (T1,GT,10)                      ONLY 10 DIGITS SOURCE
            MOVEZ  10,T1
            ENDIFZ
          GENOBJ N=C.U10R1,I=((TREGOF,REGU1)),O=((VREGOF,VREG1))
          MOVEZ  VREG1,(TREGOF,REGC)
          RETURN
RN2R1C    EJECT 
**        RN2R1C -  REGISTER NUMERIC DISPLAY TO REGISTER COMP-1 
*                   SOURCE IS 10-18 DIGITS
* 
*         REGU1 = DNAT POINTER TO SOURCE REGISTERS. 
*         (TREGOF,REGU1) = VIRTUAL REGISTER NUMBER OF REGISTER
*           CONTAINING MOST SIGNIFICANT DIGITS. 
*         (TREGP1OF,REGU1) = VIRTUAL REGISTER NUMBER OF REGISTER
*           CONTAINING LEAST SIGNIFICANT DIGITS.
*         (SIGNOF,REGU1) = 1 IFF SOURCE IS SIGNED.
*         REGC = DNAT POINTER TO DESTINATION REGISTER.
*         NUMLENOF,REGC) = NUMBER OF DIGITS IN DESTINATION REGISTER.
*         (SIGNOF,REGC) = 1 IFF DESTINATION IS SIGNED.
*         (POINTOF,REGU1) = (POINTOF,REGC). 
* 
*         CALLZ  RN2R1C 
* 
*         SETS (TREGOF,REGC) = VIRTUAL REGISTER NUMBER OF RESULT. 
  
  
 RN2R1C   LABEL 
          MOVEZ  (NUMLENOF,REGC),T1              DIGITS IN RECEIVING
          IFZ    (T1,EQ,1),RN2R1C1               IF 1 DIGIT 
          IFZ    (T1,EQ,2),RN2R1C3               IF 2 DIGITS
          IFZ    (T1,LE,8),RN2R1C5               IF 3-8 DIGITS
          IFZ    (T1,EQ,9),RN2R1C7               IF 9 DIGITS
          BRANCH RN2R1C9                         10-14 DIGITS RECEIVING 
  
  
*                            1 DIGIT RECEIVING
*                            (SOURCE IS UNSIGNED) 
 RN2R1C1  LABEL 
          IFZ    ((SIGNOF,REGU1),EQ,1),RN2R1C2   IF SOURCE IS SIGNED
  
          NOTE   RN2R1C1
          GEN    MASK,(VREGOF,VREG1),54 
          GEN    LIMP,(VREGOF,VREG1),(TREGP1OF,REGU1),VREG1 
          GEN    SXXPK,(VREGOF,VREG1),VREG1,-1R0
          MOVEZ  VREG1,(TREGOF,REGC)
          RETURN
  
  
*                            1 DIGIT RECEIVING
*                            SOURCE IS SIGNED 
 RN2R1C2  LABEL 
          NOTE   RN2R1C2
          GEN    XMIT,(VREGOF,VREG2),(TREGP1OF,REGU1) 
          GEN    SHR,VREG2,59 
          GEN    LXOR,(VREGOF,VREG1),VREG2,(TREGP1OF,REGU1) 
          GEN    MASK,(VREGOF,VREG3),54 
          GEN    LIMP,(VREGOF,VREG1),VREG1,VREG3
          GEN    SXXPK,(VREGOF,VREG1),VREG1,-1R0
  
          IFTHEN ((SIGNOF,REGC),EQ,1)            IF RECEIVING IS SIGNED 
            GEN    LXOR,(VREGOF,VREG1),VREG1,VREG2
            ENDIFZ
  
          MOVEZ  VREG1,(TREGOF,REGC)
          RETURN
  
  
*                            2 DIGIT RECEIVING
*                            (SOURCE IS UNSIGNED) 
 RN2R1C3  LABEL 
          IFZ    ((SIGNOF,REGU1),EQ,1),RN2R1C4   IF SOURCE IS SIGNED
  
          NOTE   RN2R1C3
          GEN    MASK,(VREGOF,VREG1),54 
          GEN    LIMP,(VREGOF,VREG2),(TREGP1OF,REGU1),VREG1 
          GEN    XMIT,(VREGOF,VREG3),(TREGP1OF,REGU1) 
          GEN    SHR,VREG3,6
          GEN    LIMP,(VREGOF,VREG1),VREG3,VREG1
          GEN    IADD,(VREGOF,VREG3),VREG1,VREG1
          GEN    SHL,VREG1,3
          GEN    IADD,(VREGOF,VREG1),VREG1,VREG3
          GEN    SXXPK,(VREGOF,VREG1),VREG1,-10*1R0-1R0 
          GEN    IADD,(VREGOF,VREG1),VREG1,VREG2
          MOVEZ  VREG1,(TREGOF,REGC)
          RETURN
  
  
*                            2 DIGIT RECEIVING
*                            SOURCE IS SIGNED 
 RN2R1C4  LABEL 
          NOTE   RN2R1C4
          GEN    XMIT,(VREGOF,VREG2),(TREGP1OF,REGU1) 
          GEN    SHR,VREG2,59 
          GEN    LXOR,(VREGOF,VREG1),VREG2,(TREGP1OF,REGU1) 
          GEN    MASK,(VREGOF,VREG3),54 
          GEN    LIMP,(VREGOF,VREG4),VREG1,VREG3
          GEN    XMIT,(VREGOF,VREG5),VREG1
          GEN    SHR,VREG5,6
          GEN    LIMP,(VREGOF,VREG1),VREG5,VREG3
          GEN    IADD,(VREGOF,VREG3),VREG1,VREG1
          GEN    SHL,VREG1,3
          GEN    IADD,(VREGOF,VREG1),VREG1,VREG3
          GEN    SXXPK,(VREGOF,VREG1),VREG1,-10*1R0-1R0 
          GEN    IADD,(VREGOF,VREG1),VREG1,VREG4
          IFTHEN ((SIGNOF,REGC),EQ,1)            IF RECEIVING IS SIGNED 
            GEN    LXOR,(VREGOF,VREG1),VREG1,VREG2
            ENDIFZ
          MOVEZ  VREG1,(TREGOF,REGC)
          RETURN
  
  
*                            3-8 DIGIT RECEIVING
*                            T1 = (NUMLENOF,REGC) 
*                    ARITH7: 60-6*FIXED 
 RN2R1C5  LABEL 
          IFTHEN ((SIGNOF,REGB),EQ,1)            IF SOURCE SIGNED 
           ANDIF ((SIGNOF,REGC),EQ,0)             AND DESTINATION UNSIGN
            GEN    XMIT,(VREGOF,VREG2),(TREGP1OF,REGU1) 
            GEN    SHR,VREG2,59 
            GEN    LXOR,(VREGOF,VREG1),(TREGP1OF,REGU1),VREG2 
          ELSEZ                                  IF PRESERVE SIGN 
            MOVEZ  (TREGP1OF,REGU1),VREG1 
            ENDIFZ
  
          GEN    MASK,(VREGOF,VREG2),(ARITH7,T1)
          IFTHEN ((SIGNOF,REGB),EQ,1) 
          ANDIF  ((SIGNOF,REGC),EQ,1) 
            GENOBJ N=C.S08R1,I=(VREG2,VREG1),O=((VREGOF,VREG1)) 
          ELSEZ 
            GENOBJ N=C.U08R1,I=(VREG2,VREG1),O=((VREGOF,VREG1)) 
          ENDIFZ
          MOVEZ  VREG1,(TREGOF,REGC)
          RETURN
  
  
*                            9 DIGIT RECEIVING
 RN2R1C7  LABEL 
          NOTE   RN2R1C7
  
          IFTHEN ((SIGNOF,REGB),EQ,1)            IF SOURCE SIGNED 
           ANDIF ((SIGNOF,REGC),EQ,0)             AND DESTINATION UNSIGN
            GEN    XMIT,(VREGOF,VREG2),(TREGP1OF,REGU1) 
            GEN    SHR,VREG2,59 
            GEN    LXOR,(VREGOF,VREG1),(TREGP1OF,REGU1),VREG2 
          ELSEZ                                  IF PRESERVE SIGN 
            MOVEZ  (TREGP1OF,REGU1),VREG1 
            ENDIFZ
  
          IFTHEN ((SIGNOF,REGB),EQ,1) 
          ANDIF  ((SIGNOF,REGC),EQ,1) 
            GENOBJ N=C.S09R1,I=VREG1,O=((VREGOF,VREG1)) 
          ELSEZ 
            GENOBJ N=C.U09R1,I=VREG1,O=((VREGOF,VREG1)) 
          ENDIFZ
          MOVEZ  VREG1,(TREGOF,REGC)
          RETURN
  
  
*                            10-14 DIGIT RECEIVING
*                            T1 = (NUMLENOF,REGC) 
*                    ARITH7: 60-6*FIXED 
 RN2R1C9  LABEL 
          NOTE   RN2R1C9
  
          IFTHEN ((SIGNOF,REGB),EQ,1)            IF SOURCE SIGNED 
           ANDIF ((SIGNOF,REGC),EQ,0)             AND DESTINATION UNSIGN
            GEN    XMIT,(VREGOF,VREG3),(TREGOF,REGU1) 
            GEN    SHR,VREG3,59 
            GEN    LXOR,(VREGOF,VREG1),(TREGOF,REGU1),VREG3 
            GEN    LXOR,(VREGOF,VREG2),(TREGP1OF,REGU1),VREG3 
          ELSEZ                                  IF PRESERVE SIGN 
          MOVEZ  (TREGOF,REGU1),VREG1 
          MOVEZ  (TREGP1OF,REGU1),VREG2 
            ENDIFZ
  
          SUBZ   T1,10,T1 
          GEN    MASK,(VREGOF,VREG3),(ARITH7,T1)
          IFTHEN ((SIGNOF,REGB),EQ,1) 
          ANDIF  ((SIGNOF,REGC),EQ,1) 
            GENOBJ N=C.S14R1,I=(VREG3,VREG1,VREG2),O=((VREGOF,VREG1)) 
          ELSEZ 
            GENOBJ N=C.U14R1,I=(VREG3,VREG1,VREG2),O=((VREGOF,VREG1)) 
          ENDIFZ
          MOVEZ  VREG1,(TREGOF,REGC)
          RETURN
          SPACE  4
          LISTSEC  RN2R2
          TITLE  RN2R2 -  REGISTER NUMERIC DISPLAY TO REGISTER COMP-2 
**        RN2R2 -  REGISTER NUMERIC DISPLAY TO REGISTER COMP-2
* 
*         REGB = DNAT POINTER TO SOURCE REGISTER. 
*         (TREGOF,REGB) = VIRTUAL REGISTER NUMBER OF REGISTER WITH
*           (MOST SIGNIFICANT) DIGITS.
*         (TREGP1OF,REGB) = VIRTUAL REGISTER NUMBER OF REGISTER WITH
*           LEAST SIGNIFICANT DIGITS.   (IF TWO-WORD INPUT) 
*         (NUMLENOF,REGB) = NUMBER OF DIGITS IN SOURCE. 
*         (POINTOF,REGB) = POSITION OF LEAST SIGNIFICANT DIGIT
*           RELATIVE TO DECIMAL POINT.   (E.G. PIC 99PP - 2)
*         (SIGNOF,REGB) = 1 IFF SOURCE IS SIGNED. 
*         REGC = DNAT POINTER FOR DESTINATION REGISTER. 
*         (SIGNOF,REGC) = 1 IFF DESTINATION IS SIGNED 
* 
*         CALLZ  RN2R2
* 
*         SETS (TREGOF,REGC) = VIRTUAL REGISTER NUMBER OF RESULT. 
* 
*         USES-  REGU2
*                SAVREGB1 
*                SAVREGC2 
*                REGU1       (BY RN2R1) 
*                SAVREGC1    (BY RN2R1) 
* 
*         ALSO CALLED BY- 
*                ND2C2
*                ND2R2
*                RN2R4
*                RN2C2
  
  
 RN2R2    EGO    2
          IFZ    ((NUMLENOF,REGB),GT,14),RN2R21  IF 15-18 DIGIT SOURCE
  
          NOTE   RN2R2
  
*      CREATE A DUMMY DNAT
  
          MOVEZ  (EQUALS,REGU2),REGT             REGU2 TO POINT TO DNAT 
          CALLZ  ADNAT                           CREATE DNAT
          MOVEZ  (SIGNOF,REGC),(SIGNOF,REGU2) 
          MOVEZ  (NUMLENOF,REGB),(NUMLENOF,REGU2) 
          MOVEZ  (POINTOF,REGB),(POINTOF,REGU2) 
  
*      CONVERT RN (IN REGB) TO R1 (IN REGU2)
  
          PUSH   REGC 
          MOVEZ  (EQUALS,REGU2),REGC             THIS DEST. IS REGU2
          CALLZ  RN2R1                           CONVERT
          POP    REGC 
  
*      CONVERT R1 (IN REGU2) TO R2 (IN REGC)
  
          PUSH   REGB 
          MOVEZ  (EQUALS,REGU2),REGB             THIS SOURCE IS REGU2 
          CALLZ  R12R2                           CONVERT (REGB) _ (REGC)
          POP    REGB 
  
          CALLZ  SUBDNAT                         DELETE DUMMY DNAT
  
          RETURN
  
  
*      SOURCE IS 15-18 DIGITS 
  
 RN2R21   LABEL 
          NOTE   RN2R21 
  
          SUBZ   20,(NUMLENOF,REGB),T1
          GEN    MASK,(VREGOF,VREG1),(ARITH8,T1)           6*T1 
  
          IFTHEN ((SIGNOF,REGB),EQ,1)            IF SOURCE SIGNED 
           ANDIF ((SIGNOF,REGC),EQ,0)             AND DEST. UNSIGNED
            GEN    XMIT,(VREGOF,VREG5),(TREGOF,REGB)
            GEN    SHR,VREG5,59 
            GEN    LXOR,(VREGOF,VREG2),(TREGOF,REGB),VREG5
            GEN    LXOR,(VREGOF,VREG3),(TREGP1OF,REGB),VREG5
          ELSEZ 
            MOVEZ  (TREGOF,REGB),VREG2
            MOVEZ  (TREGP1OF,REGB),VREG3
            ENDIFZ
  
          SUBZ   (POINTOF,REGB),(POINTOF,REGC),P1 
          CALLZ  SETBREG4                        SET B-REGISTER VREG4 
  
          GENOBJ N=C.S18R4,I=(VREG1,VREG2,VREG3,VREG4),O=((VREGOF,VREG1)
,,(VREGOF,VREG2)) 
          MOVEZ  VREG1,(TREGOF,REGC)
          RETURN
          SPACE  4
          LISTSEC  RN2R4
         TITLE RN2R4 -  REGISTER NUMERIC DISPLAY TO D.P. REGISTER COMP-2
**        RN2R4 -  REGISTER NUMERIC DISPLAY TO D.P. REGISTER COMP-2 
* 
*         REGB = DNAT POINTER TO SOURCE REGISTER. 
*         (TREGOF,REGB) = VIRTUAL REGISTER NUMBER OF REGISTER WITH
*           (MOST SIGNIFICANT) DIGITS.
*         (TREGP1OF,REGB) = VIRTUAL REGISTER NUMBER OF REGISTRE WITH
*           LEAST SIGNIFICANT DIGITS.   (IF TWO-WORD INPUT) 
*         (NUMLENOF,REGB) = NUMBER OF DIGITS IN SOURCE. 
*         (POINTOF,REGB) = POSITION OF LEAST SIGNIFICANT DIGIT
*           RELATIVE TO DECIMAL POINT.   (E.G. PIC 99PPP _ 3) 
*         (ISGNOF,REGB) = 1 IFF SOURCE IS SIGNED. 
*         REGC = DNAT POINTER FOR DESTINATION REGISTER. 
*         (SIGNOF,REGC) = 1 IFF DESTINATION IS SIGNED.
* 
*         CALLZ  RN2R4
* 
*         SETS (TREGOF,REGC) = VIRTUAL REGISTER NUMBER OF REGISTER WITH 
*           MOST SIGNIFICANT DIGITS.
*         (TREGP1OF,REGC) WILL BE VIRTUAL REGISTER NUMBER OF REGISTER 
*           WITH LEAST SIGNIFICANT DIGITS.
* 
*         USES-  REGU3
*                SAVREGC3 
*                REGU2       (BY RN2R2) 
*                REGU1       (BY RN2R2) 
*                SAVREGC1    (BY RN2R2) 
*                SAVREGC2    (BY RN2R2) 
* 
*         ALSO CALLED BY- 
*                ND2R4
  
  
 RN2R4    EGO    2
          IFZ    ((NUMLENOF,REGB),GT,14),RN2R43  IF D.P. CONVERSION 
  
*                            SOURCE IS 1-14 DIGIS 
 RN2R41   LABEL                                  (CROSS-REFS ONLY)
          NOTE   RN2R41 
  
*      CONVERT RN (IN REGB) TO R2 (IN REGC) 
  
          CALLZ  RN2R2                           CONVERT (REGB) _ (REGC)
  
*      APPEND A ZERO REGISTER AS LEAST SIGNIFICANT PART 
  
          GEN    XMIT,(VREGOF,VREG1),(TREGOF,REGC)         VREG1
          GEN    MASK,(VREGOF,VREG2),0                     VREG2=VREG1+1
          MOVEZ  VREG1,(TREGOF,REGC)
          RETURN
  
  
*                            SOURCE IS 15-18 DIGITS 
 RN2R43   LABEL 
          NOTE   RN2R43 
  
          IFTHEN ((SIGNOF,REGB),EQ,1)            IF SOURCE SIGNED 
           ANDIF ((SIGNOF,REGC),EQ,0)             AND DESTINATION UNSIGN
            GEN    XMIT,(VREGOF,VREG3),(TREGOF,REGB)
            GEN    SHR,VREG3,59 
            GEN    LXOR,(VREGOF,VREG1),(TREGOF,REGB),VREG3
            GEN    LXOR,(VREGOF,VREG2),(TREGP1OF,REGB),VREG3
          ELSEZ 
            MOVEZ  (TREGOF,REGB),VREG1
            MOVEZ  (TREGP1OF,REGB),VREG2
            ENDIFZ
  
          SUBZ   20,(NUMLENOF,REGB),T1
          GEN    MASK,(VREGOF,VREG3),(ARITH8,T1)           6*T1 
  
          SUBZ   (POINTOF,REGB),(POINTOF,REGC),P1 
          CALLZ  SETBREG4 
  
          GENOBJ N=C.S18R4,I=(VREG3,VREG1,VREG2,VREG4),O=((VREGOF,VREG1)
,,(VREGOF,VREG2)) 
  
          MOVEZ  VREG1,(TREGOF,REGC)
          MOVEZ  VREG1,(TREGOF,REGC)
  
          RETURN
          SPACE  4
          LISTSEC  *
          END 
