*DECK,NP$BTO8 
*IF,DEF,XFR 
      PROC NP$BTO8((NPINUM),NPOUTAS); 
      BEGIN 
# 
*1DC  NP$BTO8 
* 
*     1. PROC NAME         AUTHOR        DATE 
* 
*        NP$BTO8           Y. C. YIP     06/03/1983 
* 
*     2. FUNCTIONAL DESCRIPTION.
*        THIS PROCEDURE WHEN CALLED RETURNS THE ASCII REPRESENTATION
*        OF THE FIRST PARAMETER PASSED IN THE SECOND PARAMETER. 
* 
*     3. METHOD USED. 
*        AN INTERNAL ARRAY IS USED TO MAP THE VALUE OF EACH DECIMAL 
*        DIGIT INTO ITS ASCII REPRESENTATION. THE ONLY LIMITATIONS
*        ARE SUCH THAT IT ONLY CONVERTS BINARY VALUE OF 1-4 DIGITS. 
* 
*     4. ENTRY CONDITIONS.
*        NPINUM - VALUE TO BE CONVERTED INTO ASCII REPRESENTATION.
*        NPOUTAS - RETURN PARAMETER HOLDING THE ASCII REPRESENTATION. 
* 
*        EXIT CONDITIONS. 
*        NPINUM - UNCHANGED.
*        NPOUTAS - RETURN VALUE OF THE ASCII REPRESENTATION OF NPINUM.
* 
*     6. COMDECKS CALLED AND SYMPL TEXTS USED.
*        NX$ACBX
* 
*     7. ROUTINES CALLED
*          NONE 
* 
*     8. DAYFILE MESSAGES 
*          NONE 
* 
# 
      DEF STBIT # 28 #;            # START BIT OF ASCII VALUE          #
      DEF LOWB # 0 #;              # LOWER BOUND OF INTERNAL ARRAY     #
      DEF UPPB # 9 #;              # UPPER BOUND OF INTERNAL ARRAY     #
      DEF DECVALUE # 10 #;         # DECIMAL 10                        #
      DEF ENTY1 # 1 #;             # ENTRY SIZE OF ONE WORD            #
      DEF MULTIPLE # 1000 #;       # INITIAL FACTOR OF CONVERSION      #
      DEF LASTDD # 4 #;            # NUMBER OF ASCII IN DD FIELD       #
      DEF BYTS # 8 #;              # NUMBER OF BITS PER ASCII BYTE     #
      ITEM NPINUM ;                # VALUE TO BE CONVERTED             #
      ITEM NPOUTAS;                # RETURN PARAMETER                  #
      ITEM INDEX;                  # LOOP INDEX                        #
      ITEM STARTBIT;               # START BIT OF THE ASCII VALUE      #
      ITEM TEMP;                   # TEMPORARY VARIABLE                #
      ITEM FACTOR;                 # FACTOR OF DIVISION                #
  
      ARRAY ASCMAP[LOWB : UPPB] S(ENTY1);  # INTERNAL MAP FOR ASCII    #
        BEGIN                              # CONVERSION                #
        ITEM ASCIIV U(00,00,08) =[X"30",  #  0                         #
                                  X"31",   # 1                         #
                                  X"32",   # 2                         #
                                  X"33",   # 3                         #
                                  X"34",   # 4                         #
                                  X"35",   # 5                         #
                                  X"36",   # 6                         #
                                  X"37",   # 7                         #
                                  X"38",   # 8                         #
                                  X"39"    # 9                         #
                                  ];
        END 
      CONTROL EJECT;
#**********************************************************************#
#                                                                      #
#                   CODE OF NP$BTO8 BEGINS HERE                        #
#                                                                      #
#**********************************************************************#
  
      FACTOR = MULTIPLE;                 # ASSIGN INITAL VALUE OF      #
                                         # FACTOR                      #
      STARTBIT = STBIT;                  # ASSIGN INITIAL VALUE OF     #
                                         # START BIT                   #
      NPOUTAS = 0;                       # CLEAR RETURN PARAMETER      #
      FOR INDEX = 1 STEP 1 UNTIL LASTDD  # START CONVERTING            #
      DO
        BEGIN 
        TEMP = NPINUM/FACTOR;            # FETCH MOST SIGNIFICANT DITIT#
        B<STARTBIT,BYTS>NPOUTAS = ASCIIV[TEMP]; # GET MAPPED VALUE     #
        NPINUM = NPINUM - TEMP*FACTOR;   # GET NEXT MOST SIGNIFICANT   #
                                         # DIGIT                       #
        FACTOR = FACTOR/DECVALUE;        # DECREASE MAGNITUDE OF FACTOR#
                                         # BY 10                       #
        STARTBIT = STARTBIT + BYTS;      # ASSIGN TO NEXT BYTE         #
        END 
      RETURN;                            # RETURN TO CALLER            #
      END                                # END OF PROC NP$BTO8         #
TERM
*ENDIF
