* GET BINARY VALUE                                      HEADER  CR.LBVAL0001.000
*                                                                       0002.000
*              GET BINARY VALUE                                         0003.000
*                                                                       0004.000
         M.PGM     CR.LBVAL,MPX-32,3.6.1,00                             0005.000
         DEF   CR.LBVAL                                                 0006.000
*                                                                       0007.000
* LOAD BINARY VALUE INTO (R6,R7) AND DECIMAL POSITION INTO R5           0008.000
*                                                                       0009.000
*    CALLING SEQUENCE                                                   0010.000
*        BL    CR.LBVAL                                                 0011.000
*        LW    R2,DD          LOAD ADDRESS OF BINARY DD INTO R2         0012.000
*                                                                       0013.000
*                                                                       0014.000
         M.REQS                                                         0015.000
         DD.EQU                                                         0016.000
         COBOLDAT                                                       0017.000
*                                                                       0018.000
* IF R2 < 8 THEN LOAD FROM BINARY ACCUMULATOR                           0019.000
*                                                                       0020.000
CR.LBVAL CI    R2,8                                                     0021.000
         BGT   DDLOAD                                                   0022.000
         SLL   R2,1                                                     0023.000
         LH    R5,DACC,X2     LOAD SCALE FACTOR                         0024.000
         SLL   R2,2                                                     0025.000
         LD    R6,ACC,X2      LOAD ACCUMULATOR CONTENTS INTO (R6,R7)    0026.000
         TRSW  0              RETURN                                    0027.000
*                                                                       0028.000
* LOAD FROM AREA SPECIFIED BY DD                                        0029.000
*                                                                       0030.000
DDLOAD   LB    R5,DD.D,X2     LOAD DECIMAL POSITION AND EXTEND SIGN     0031.000
         SLL   R5,26                                                    0032.000
         SRA   R5,26                                                    0033.000
         LW    R3,DD.PTR,X2   LOAD POINTER TO DATA                      0034.000
         LH    R6,DD.LEN,X2   LOAD LENGTH OF DATA                       0035.000
         CI    R6,4                                                     0036.000
         BGT   WORD                                                     0037.000
*                                                                       0038.000
*--- 2 BYTE OPERAND ---                                                 0039.000
         LB    R7,0,X3                                                  0040.000
         SLL   R7,24                                                    0041.000
         SRA   R7,16                                                    0042.000
         ORMB  R7,1,X3                                                  0043.000
         ES    R6                                                       0044.000
         TRSW  0              RETURN                                    0045.000
WORD     CI    R6,9                                                     0046.000
         BGT   DOUBLE                                                   0047.000
*                                                                       0048.000
*--- 4 BYTE OPERAND ---                                                 0049.000
         LB    R7,0,X3                                                  0050.000
         SLL   R7,24                                                    0051.000
         SRA   R7,16                                                    0052.000
         ORMB  R7,1,X3                                                  0053.000
         SLL   R7,8                                                     0054.000
         ORMB  R7,2,X3                                                  0055.000
         SLL   R7,8                                                     0056.000
         ORMB  R7,3,X3                                                  0057.000
         ES    R6                                                       0058.000
         TRSW  0              RETURN                                    0059.000
DOUBLE   EQU   $                                                        0060.000
*                                                                       0061.000
*--- 8 BYTE OPERAND ---                                                 0062.000
         LB    R7,0,X3                                                  0063.000
         SLLD  R6,8                                                     0064.000
         ORMB  R7,1,X3                                                  0065.000
         SLLD  R6,8                                                     0066.000
         ORMB  R7,2,X3                                                  0067.000
         SLLD  R6,8                                                     0068.000
         ORMB  R7,3,X3                                                  0069.000
         SLLD  R6,8                                                     0070.000
         ORMB  R7,4,X3                                                  0071.000
         SLLD  R6,8                                                     0072.000
         ORMB  R7,5,X3                                                  0073.000
         SLLD  R6,8                                                     0074.000
         ORMB  R7,6,X3                                                  0075.000
         SLLD  R6,8                                                     0076.000
         ORMB  R7,7,X3                                                  0077.000
         TRSW  0              RETURN                                    0078.000
         END                                                            0079.000
