*DECK C$N22RN 
          IDENT  C$N22RN
          TITLE  C.N22RN -  NUMERIC DISPLAY TYPE 2 TO REGISTER NUMERIC
          COMMENT  NUM. DISPLAY TYPE 2 TO REG. NUM. 
          MACHINE  ANY,I
          SPACE  4
**        C.N22RN -  NUMERIC DISPLAY TYPE 2 TO REGISTER NUMERIC 
* 
*         NUMERIC DISPLAY TYPE 2 IS-
*                SOURCE HAS TRAILING OVERPUNCH SIGN 
*                10 OR LESS SOURCE DIGITS ARE PICKED UP 
*                NO SCALING 
* 
*      GIVEN- 
*         B3 = SOURCE ADDRESS 
*         X2 = SOURCE BCP  (0 @ X2 < 2'18)
*         B4 = SOURCE LENGTH  (1 @ B4 @ 10) 
*         X3 = 10H0000000000
* 
*         RJ     C.N22RN
* 
*      DOES-
*         SETS X1 = SOURCE VALUE, RIGHT-JUSTIFIED,
*           FILLED WITH DISPLAY ZEROS.
* 
*      USES-     B    * - 3 4 5 6 -    *B1=1
*                X  0 1 2 3 - - - - 
*                A  - 1 2 - - - - - 
  
*CALL CCPARCM 
  
*                            SOURCE IS ENTIRELY CONTAINED IN ONE WORD 
 N22RN.1  SB6    B3+B3       2*(BCP+LEN)
          NO
          SB3    B6+B6       4*(BCP+LEN)
          LX0    X1,B6
          NO
          LX1    X0,B3       RIGHT-JUSTIFY SOURCE 
          BX2    X2*X1       EXTRACT SOURCE DIGITS
          IX1    X3+X2       PAD WITH ZEROS ON LEFT 
  
 N22RN.2  BSS    0           (HERE TO APPLY SIGN) 
          MX0    -6          77777777777777777700B
          BX3    -X0*X1      EXTRACT OVERPUNCHED DIGIT
          SA2    =X_C.STRP+X3  1/(1 IFF -), ..., 18/(UNSIGNED&SIGNED) 
          SX0    X2          (UNSIGNED DIGIT) & (SIGNED DIGIT)
          BX1    X1-X0
          BX3    X2 
          SA2    =XC.CCPAR
          LX2    59-#LBZ
          PL     X2,N22RN.4  NO LBZ OPTION
          SB5    -1R
          SB6    1R0&1R 
 1        DUP    10 
+         LX1    6
          MX0    -6 
          BX0    -X0*X1 
          SX0    X0+B5
+         NZ     X0,*+1 
          SX0    B6 
          BX1    X1-X0
 1        ENDD
 N22RN.4  BSS    0
          PL     X3,C.N22RN  POSITIVE SIGN
          SA3    =XC.ZEROS
          IX3    X3-X1
          ZR     X3,C.N22RN  MINUS ZERO 
          BX1    -X1         APPLY SIGN 
*         FALL THROUGH TO EXIT
  
          ENTRY  C.N22RN
 C.N22RN  BSS    1           ENTRY/EXIT WORD
          SX0    1S20/10+1   (  1/10) * 2'20
          SB5    10 
          IX1    X0*X2       (BCP/10) * 2'20
          SX0    B5          10 
          AX1    20          (BCP/10) 
          IX0    X1*X0       (BCP/10)*10
          SA1    B3+X1       FIRST WORD 
          IX0    X2-X0       0 @ BCP @ 9
          SA2    =X_C.RMASK+B4  (10-LEN)00-S, (LEN)77-S 
          SB3    X0+B4       BCP + LEN
          BX3    -X2*X3      (10-LEN)33-S, (LEN)00-S
          LT     B3,B5,N22RN.1  IF BCP+LEN < 10 
          NE     B3,B5,N22RN.3  IF TWO WORDS
  
*                            SOURCE IS ONE WORD, RIGHT-JUSTIFIED
          BX0    X2*X1       EXTRACT NUMERIC PART 
          IX1    X3+X0       PAD WITH ZEROS ON LEFT 
          EQ     N22RN.2     APPLY SIGN AND EXIT
  
  
*                            SOURCE SPANS TWO WORDS 
*         X1 = FIRST SOURCE WORD
*         A1 = ADDRESS OF FIRST SOURCE WORD 
*         X3 = ZERO PADDING FOR FINAL RESULT
*         X0 = BCP   (0 @ BCP @ 9)
*         B1 = 1
*         B3 = BCP + LEN
  
 N22RN.3  SA2    =X_C.MASK+X0  (BCP)77-S, (10-BCP)00-S
          SB4    B3-B5       (BCP + LEN - 10) = LSHIFT
          BX0    -X2*X1      EXTRACT LEFT PART OF NUMBER
          SA1    A1+B1       SEC ND WORD
          SA2    =X_C.MASK+B3-10  (BCP+LEN-10)77-S, (REST)00-S
          BX1    X2*X1       EXTRACT RIGHT PART OF NUMBER 
          SB6    B4+B4       2*LSHIFT 
          IX1    X0+X1       COMBINE TWO PARTS OF NUMBER
          SB3    B6+B6       4*LSHIFT 
          SB4    B3+B6       6*LSHIFT 
          LX0    X1,B4       RIGHT-JUSTIFY NUMERIC PART 
          BX1    X3+X0       PAD WITH ZEROS ON LEFT 
          EQ     N22RN.2     APPLY SIGN AND EXIT
          SPACE  4
          END 
