*DECK BLDREAL                                                            NOV04
          IDENT  BLDREAL                                                 NOV04
          TITLE  BLDREAL - BUILD REAL CONSTANT FOR PF11                  NOV04
          COMMENT  BUILD REAL CONSTANT FOR PF11                          NOV04
          SST                                                            NOV04
          LIST   F                                                       NOV04
          ENTRY  BLDREAL                                                 NOV04
          ENTRY  SYSAID.                                                 NOV04
*CALL REALCOM                                                            NOV04
**        BLDREAL - BUILD REAL CONSTANTS FOR PF11                        NOV04
*                                                                        NOV04
*         EXPECTS THE REAL NUMBER IN 5 SEPARATE INTEGERS:                NOV04
*                INTEGER PART/FRACTION/FRACTION LENGTH/EXPONENT/EXP SIGN NOV04
*                                                                        NOV04
*         THESE ARE ALL FOUND IN REALCOM                                 NOV04
*                AND AN ERROR FLAG (REALERR) IS SET NON-ZERO FOR         NOV04
*                ANY CONVERSION ERRORS                                   NOV04
*                                                                        NOV04
*                                                                        NOV04
                                                                         NOV04
BLDREAL   DATA   0                                                       NOV04
          SX6    0                                                       SMPA029
          SA3    TPYRIEX                                                 SMPA029
          SA1    TEN                                                     SMPA029
          PX6    X6                                                      SMPA029
          ZR     X3,NODPI                                                SMPA029
          RJ     =XXTOI.     MAKE 10**TPYRIEX                            SMPA029
          SA1    TPYRIU      UPPER PRECISION DIGITS OF INTEGER           SMPA029
          PX1    X1                                                      SMPA029
          NX1    X1                                                      SMPA029
          RX6    X1*X6                                                   SMPA029
 NODPI    SA1    TPYRI       LOWER PRECISION DIGITS OF INTEGER           SMPA029
          PX1    X1                                                      SMPA029
          NX1    X1                                                      SMPA029
          RX7    X6+X1       BUILD CORRECT F.P. NUMBER                   SMPA029
          MX6    0                                                       SMPA029
          NX7    X7          SAVE INTEGER PART OF NR                     SMPA029
          SA7    A1                                                      SMPA029
          SA3    TPYREX      FRACTION-S UPPER PREC. EXPONENT             SMPA029
          PX6    X6                                                      SMPA029
          SA1    TEN                                                     SMPA029
          ZR     X3,NODPF                                                SMPA029
          RJ     =XXTOI.                                                 SMPA029
          SA1    TPYRFU                                                  SMPA029
          PX1    X1                                                      SMPA029
          NX1    X1                                                      SMPA029
          RX6    X1*X6                                                   SMPA029
 NODPF    SA1    TPYRF                                                   SMPA029
          PX1    X1                                                      SMPA029
          NX1    X1                                                      SMPA029
          RX6    X6+X1       TIMES 10**TPYREX                            SMPA029
          NX6    X6                                                      SMPA029
          SA6    A1+0                                                    SMPA029
          SA3    TPYRFL      FRACTION LENGTH                             NOV04
          SA1    TEN         = 10.0                                      NOV04
          MX6    0                                                       NOV04
          PX6    X6                                                      NOV04
          ZR     X3,NOEXP1   NO FRACTION ON THIS NUMBER                  NOV04
          RJ     =XXTOI.                                                 NOV04
          SA1    TPYRF       INTEGER VERSION OF THE FRACTION             NOV04
          FX6    X1/X6       CONVERT IT TO REAL                          NOV04
 NOEXP1   SA3    TPYRI       INTEGER PORTION OF NUMBER                   NOV04
          RX7    X6+X3                                                   SMPA029
          NX7    X7          NORMALIZE THE RESULT                        NOV04
          SA7    DUBL1       STORE TEMPORARILY                           NOV04
          SX6    1                                                       NOV04
          SA3    TPYRE       EXPONENT                                    NOV04
          SA4    TPYRS                                                   NOV04
          PX6    X6                                                      NOV04
          NX6    X6                                                      NOV04
          ZR     X3,NOEXP2   ZERO EXPONENT                               NOV04
          PL     X4,POSEXP   C.F. EXPONENT SIGN                          NOV04
          BX3    -X3         MAKE NEGATIVE                               NOV04
 POSEXP   SA1    TEN         = 10.0                                      NOV04
          RJ     =XXTOI.                                                 NOV04
 NOEXP2   SA2    DUBL1       A (FIRST PART OF REAL)                      NOV04
          UX4    X6,B6       B (EXPONENT PART OF REAL)                   NOV04
          UX3    X2,B5                                                   NOV04
          PX4    X4          B*2'(-B6)                                   NOV04
          PX3    X3          A*2'(-B5)                                   NOV04
          RX3    X3*X4                                                   NOV04
          UX7    X3,B7       GET EXP FROM RESULT
          ZR     X7,ZEROMANT HAVE A ZERO MANTISA
          SB5    B5+B7                                                   NOV04
          SB5    B6+B5       BUILD CORRECT EXP                           NOV04
          SB6    -1777B                                                  NOV04
          SB7    1777B                                                   NOV04
          GE     B6,B5,BAD                                               NOV04
          GE     B5,B7,BAD                                               NOV04
          PX7    X7,B5       BUILD RESULT 
          NX7    X7          MAKE SURE ITS A PROPER NUMBER
 ZEROMANT BX6    X6-X6
          SA6    REALERR     CLEAR ERR FLAG                              NOV04
          SA7    A2                                                      NOV04
          EQ     BLDREAL                                                 NOV04
 BAD      MX7    0                                                       NOV04
          SX6    1                                                       NOV04
          SA7    DUBL1                                                   NOV04
          SA6    REALERR     SET ERROR STATUS/CLEAR RESULT               NOV04
          EQ     BLDREAL                                                 NOV04
**        SYSAID. - ERROR ENTRY FOR FCL EXPON. ROUTINES                  NOV04
*                ALLOWS US TO GET CONTROL WHEN XTOI DETECTS AN ERROR     NOV04
*                OTHERWISE WE JUST BLOW UP (NOT COOL)                    NOV04
*                                                                        NOV04
 SYSAID.  DATA   0                                                       NOV04
          EQ     BAD                                                     NOV04
 TEN      DATA   10.0                                                    NOV04
          END                                                            NOV04
