COMPANS 
COMMON
          CTEXT  COMPANS - ASSEMBLE NUMERIC STRING. 
 ANS      SPACE  4
          IF     -DEF,QUAL$,1 
          QUAL   COMPANS
*         COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
 ANS      SPACE  4
***       ANS - ASSEMBLE NUMERIC STRING.
*         J. J. EIKUM.       76/04/04.
 ANS      SPACE  4,15 
***              ANS CONVERTS A NUMBER TO DISPLAY CODE, SUPPRESSES
*         LEADING ZEROS, AND APPENDS THE DIPLAY CODE TO THE END 
*         OF A STRING.  ITS PURPOSE IS TO ADD A NUMBER TO A 
*         MESSAGE CONTAINING VARIABLE LENGTH PARAMETERS.
* 
*         ENTRY  (A) = NUMBER.
*                (T1) = ADDRESS FOR ASSEMBLY. 
*                ((T1)) = END OF STRING IN *C* FORMAT.
* 
*         EXIT   (T1) ADVANCED. 
*                ((T1)) = END OF STRING IN *C* FORMAT.
* 
*         USES   T0, CM - CM+1. 
  
  
 ANS      SUBR
          STD    CM+1        SAVE NUMBER
          SHN    -14
          STD    CM 
          ZJN    ANS2        IF DIGITS 4 AND 5 ARE ZERO 
          SHN    -3 
          ZJN    ANS1        IF DIGIT 5 IS ZERO 
          RJM    AND         ADD DIGIT 5
 ANS1     LDD    CM          ADD DIGIT 4
          RJM    AND
  
 ANS2     LDD    CM          CHECK DIGITS 2 AND 3 
          SHN    14 
          LMD    CM+1 
          SHN    -6 
          ZJN    ANS4        IF DIGITS 2, 3, 4, AND 5 ARE ZERO
          SHN    -3 
          ZJN    ANS3        IF DIGITS 3, 4, AND 5 ARE ZERO 
          RJM    AND         ADD DIGIT 3
 ANS3     LDD    CM+1        ADD DIGIT 2
          SHN    -6 
          RJM    AND
  
 ANS4     LDD    CM          CHECK DIGIT 1
          SHN    14 
          LMD    CM+1 
          SHN    -3 
          ZJN    ANS5        IF DIGITS 1, 2, 3, 4, AND 5 ARE ZERO 
          RJM    AND         ADD DIGIT 1
  
 ANS5     LDD    CM+1        ADD DIGIT 0
          RJM    AND
          LJM    ANSX 
 AND      SPACE  4,10 
**        AND - ADD NEXT DIGIT. 
* 
*         ENTRY  (BITS 0 - 2 OF A) = NEXT DIGIT 
* 
*         EXIT   (T1) ADVANCED. 
* 
*         USES   T0.
  
  
 AND1     STM    1,T1        CLEAR NEXT BYTE
          LDD    T0          STORE CHARACTER
          SHN    6
          STI    T1 
  
 AND      SUBR
          LPN    7           CONVERT TO DISPLAY CODE
          ADN    1R0
          STD    T0 
          LDI    T1 
          ZJN    AND1        IF ASSEMBLY ON BYTE BOUNDARY 
          LDD    T0          ADD CHARACTER
          RAI    T1 
          AOD    T1          ADVANCE POINTER
          UJN    ANDX 
          SPACE  4,10 
          IF     -DEF,QUAL$ 
          QUAL   *
 ANS      EQU    /COMPANS/ANS 
          ENDIF 
          ENDX
