*COMDECK ALGETNUM 
      SUBROUTINE GETNUM(NUMBER,ERRFLAG) 
C 
C 
C        THIS ROUTINE READS DATA FROM THE CARD ARRAY, STARTING AT 
C        THE CURRENT POINTER, AND CONVERTS IT TO NUMERICS.  IT
C        CONVERTS EITHER HEX OR DECIMAL, AND RETUTRNS THE VALUE IN
C        "NUMBER".  UPON EXIT, CARDPTR POINTS TO THE FIRST NON- 
C        NUMERIC ENCOUNTERED, WHICH IS THE TERMINATOR FOR THIS
C        ROUTINE. 
C 
C 
C 
C 
C 
*CALL ALCOMMON
      LOGICAL ERRFLAG,NUM,DIGIT 
C 
C        SET THE ERROR FLAG OFF 
C 
      ERRFLAG = .FALSE. 
C 
C 
C        INITIALIZE THE RESULT AND THE BASE WE ARE WORKING IN 
C 
      NUMBER = 0
      BASE = 10 
      DIGIT = .FALSE. 
C 
C        IF THE FIRST CHARACTER IS A DOLLAR SIGN, SET UP FOR HEX
C 
      IF (CARD(CARDPTR).NE.DOLLAR) GO TO 5
      BASE = 16 
      CARDPTR = CARDPTR+1 
C 
C        CHECK THE NEXT CHARACTER, AND RETURN IF NOT NUMERIC
C 
    5 CHAR = CARD(CARDPTR)
      IF (.NOT.NUM(CHAR)) GO TO 10
      DIGIT = .TRUE.
C 
C        CONVERT THE CHARACTER TO BINARY, AND INCLUDE IT IN THE RESULT
C 
      VALUE = CHAR-ZERO 
      IF (CHAR.GT.NINE .OR. CHAR.LT.ZERO) VALUE = CHAR-A+10 
      IF (VALUE.LT.0 .OR. VALUE.GE.BASE) GO TO 20 
      NUMBER = NUMBER * BASE + VALUE
C 
C        POINT TO THE NEXT CHARACTER AND TRY IT AGAIN 
C 
      CARDPTR = CARDPTR + 1 
      GO TO 5 
C 
C        CONSIDER IT AN ERROR IF NO DIGITS WERE FOUND.
C 
   10 IF (.NOT.DIGIT) ERRFLAG = .TRUE.
      RETURN
   20 ERRFLAG = .TRUE.
      RETURN
      END 
C 
C 
