*DECK DCTOASC 
USETEXT COMCBEG 
FUNC DCTOASC((DCDATA),(NUMCHARS)) I;
# TITLE DCTOASC - CONVERT DISPLAY CODE TO ASCII. #
  
      BEGIN  # DCTOASC #
  
# 
**    DCTOASC - CONVERT DISPLAY CODE TO ASCII.
* 
*     USES PACKED CONVERSION TABLE TO CONVERT DISPLAY CODE TO ASCII.
* 
*     FUNC DCTOASC((DCDATA),(NUMCHARS)) I.
* 
*     ENTRY   -  DCDATA IS A LEFT JUSTIFIED DISPLAY CODE VALUE. 
*                NUMCHARS IS THE COUNT OF CHARACTERS TO CONVERT. THE
*                MAXIMUM VALUE FOR NUMCHARS IS 7. 
* 
*     EXIT    -  THE FUNCTION RESULT IS A RIGHT JUSTIFIED ASCII DATA
*                FIELD.  THE ASCII DATA FIELD IS PACKED ASCII 8-BIT 
*                CHARACTERS.
* 
* 
*     PROCESS -  FOR EACH DISPLAY CODE CHARACTER (FROM THE LEFT): 
*                  LOOK UP FOLDED ASCII VALUE 
*                  ADD IN AS RIGHT-MOST CHAR OF FUNCTION RESULT 
*                                            ACCUMULATOR
*                  UNFOLD LAST ASCII CHARACTER. 
*                RETURN 
* 
* 
# 
  
  
      ITEM DCDATA   C(10);           # DISPL CODE INPUT # 
      ITEM NUMCHARS I;               # NUMBER OF CHARACTERS TO CONVERT #
  
  
      ITEM INDX I;                   # CHAR CONVERSION LOOP INDEX # 
  
      ARRAY [0:0] S(1); 
        BEGIN  # ASCII CHAR BIT DEFINITIONS # 
        ITEM ASCIINUM   I(00,00,60);
        ITEM ASCBITS6$7 U(00,53,02);
        ITEM ASCLOWER5  U(00,55,05);
        END 
  
      ARRAY [0:7] S(1); 
        BEGIN  # CONVERSION TABLE # 
        ITEM ASCCHARS   I(00,00,60) = [O"3241424344454647", 
                                       O"5051525354555657", 
                                       O"6061626364656667", 
                                       O"7071722021222324", 
                                       O"2526273031131512", 
                                       O"1710110435001416", 
                                       O"0373750502770106", 
                                       O"0737343640747633"];
        END 
  
      ARRAY [0:0] S(1); 
        BEGIN  # DISPLAY CODE NUM/CHAR EQUIVALENCE #
        ITEM DCCHAR     C(00,00,10);
        ITEM DCNUMBER   I(00,00,60);
        ITEM DCWORDNUM  U(00,00,03);
        ITEM DCCHARNUM  U(00,03,03);
        END 
  
CONTROL EJECT;
  
      ASCIINUM = 0; 
      DCCHAR = DCDATA;
  
      FASTFOR INDX = 1 STEP 1 UNTIL NUMCHARS
      DO
        BEGIN  # CONVERSION LOOP #
        ASCIINUM = ASCIINUM * 2**8  + 
                   (ASCCHARS[DCWORDNUM]/2**(42-6*DCCHARNUM) LAN O"77"); 
        ASCBITS6$7 = ASCBITS6$7 + 1;
        DCNUMBER = DCNUMBER * 2**6; 
        END 
  
      DCTOASC = ASCIINUM; 
      RETURN; 
      END  # DCTOASC #
  
      TERM
