*DECK CONVDDB 
USETEXT CYBRDEF 
      PROC CONVDDB(INW,OUTW1,OUTW2,ERR);          # CONVERT DEC TO BIN #
      BEGIN 
 #
*1DC  CONVDDB 
* 
*     1. PROC NAME             AUTHOR              DATE 
*        CONVDDB               E. GEE              JULY 15, 1982
* 
*     2. FUNCTIONAL DESCRIPTION.
*        CONVERT DECIMAL DISPLAY CODE TO BINARY 
* 
*     3. METHOD USED. 
*        MASK OFF EACH DISPLAY CODE CHARACTER.
*        CONVERT TO BINARY EQUIVALENT.
*        MULTIPLY RESULTING VALUE BY POWERS OF 10 
* 
*     4. ENTRY PARAMETERS.
*        INW                 DECIMAL DISPLAY CODE VALUE LEFT JUSTIFIED
*                            AND BLANK FILLED.
* 
*     5. EXIT PARAMETERS. 
*        OUTW1               BINARY VALUE 
*        OUTW2               DECIMAL VALUE IN OCTAL 
*        ERR                 TRUE IF BAD DECIMAL DISPLAY CODE NUMBER
* 
*     6. COMDECKS AND SYMPL TEXT USED.
*        CYBRDEF             CYBER 170 MACHINE DEPENDENT DEFS 
* 
*     7. ROUTINES CALLED. 
*        NONE 
* 
*     8. DAYFILE MESSAGES.
*        NONE 
* 
 #
      DEF DC$0       #O"33"#;          # DISPLAY-CODED 0               #
      DEF DC$9       #O"44"#;          # DISPLAY-CODED 9               #
  
# 
      LOCAL VARIABLES 
# 
      ITEM INW        U;               # INPUT WORD, LEFT-JUSTIFIED    #
      ITEM OUTW1      I;               # OUTPUT BINARY VALUE           #
      ITEM OUTW2      I;               # OUTPUT RIGHT-JUSTIFIED DC     #
      ITEM ERR        B;               # ERROR INDICATOR               #
      ITEM COMPLETE   B;               # CONVERSION DONE INDICATOR     #
      ITEM DIGIT      I;               # ONE DISPLAY-CODED CHARACTER   #
      ITEM I          I;               # TEMPORARY VARIABLE            #
CONTROL EJECT;
      ERR = FALSE;
      OUTW1 = 0;
      OUTW2 = 0;
      COMPLETE = FALSE;                # CONVERSION NOT DONE YET       #
  
      FOR I=0 STEP 1 WHILE I LS WC
                     AND NOT COMPLETE 
      DO
        BEGIN                          # PROCESS A DISPLAY-CODED CHAR  #
        DIGIT = C<I,1>INW;
  
        IF DIGIT GQ DC$0
          AND DIGIT LQ DC$9 
        THEN                           # DIGIT IS BETWEEN 0 AND 9      #
          DIGIT = DIGIT - O"33";
  
        ELSE                           # NOT A DECIMAL NUMBER          #
          BEGIN 
          COMPLETE = TRUE;
          IF DIGIT NQ 0 
          THEN                         # ERROR IF NOT END OF FIELD     #
            ERR = TRUE; 
          END 
  
        IF NOT COMPLETE 
        THEN
          BEGIN 
          OUTW2 = OUTW2*O"100" + DIGIT ;  # DECIMAL VALUE IN CHAR      #
          OUTW1 = OUTW1*10 + DIGIT;    # CONVERT TO BINARY VALUE       #
          END 
        END 
      RETURN; 
      END 
TERM
