FTN4
      LOGICAL FUNCTION INUM(IB,NCAR,NBCAR 
     .,I),. 92903-16001 REV.1805  770114
C 
C     SOURCE 92903-18022
C 
C 
C 
C     **************************************************************
C     * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1978.  ALL RIGHTS    *
C     * RESERVED.  NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, RE- *
C     * PRODUCED, OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITH-  *
C     * OUT THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY.  *
C     **************************************************************
C 
C 
C ************************************************************* 
C *                                                           * 
C *      INUM  IS A LOGICAL FUNCTION TO CONVERT AN ASCII      * 
C *      BUFFER INTO AN INTEGER NUMBER. CHECKS ARE MADE AND   * 
C *      FUNCTION SUCCEED IF THE INPUT BUFFER IS NOT CORRECT. * 
C *                                                           * 
C *      IF( INUM(IBUF,NCAR,NBCAR,I) )  GOTO ERROR            * 
C *                                                           * 
C *        WHERE:                                             * 
C *              IBUF   BUFFER                                * 
C *              NCAR   NUMBER OF FIRST CHARACTER TO USE IN   * 
C *                     THE BUFFER ( 1ST = 1)                 * 
C *              NBCAR  NUMBER OF CHARACTER TO BE USED        * 
C *              I      INTEGER VARIABLE WHERE THE INTEGER    * 
C *                     VALUE IS RETURNED.                    * 
C *                                                           * 
C ************************************************************* 
C 
      IF(NBCAR .LE. 0)  GOTO 600
      INUM=.FALSE.
      I=0 
      ISIG=1
      L=NBCAR 
      JE=NCAR+NBCAR-1 
      DO 100 J=NCAR,JE
      K=IGET1(IB,J) 
      IF(K .EQ. 1H-)  GOTO 400
      IF(K.EQ.1H+) GO TO 450
      IF(K.NE.1H ) GO TO 500
      L=L-1 
  100 CONTINUE
      RETURN
C 
400   ISIG=-1 
  450 J=J+1 
      L=L-1 
  500 I=NUMD(IB,J,L)
      IF(I .LT. 0)  GOTO 550
      I=I*ISIG
      RETURN
C 
  550 IF(ISIG .EQ. 1) GOTO 600
C       SPECIAL CHECK FOR  -32768 
      IF(IGET2(IB,J) .NE. 2H32)  GOTO 600 
      IF(IGET2(IB,J+2) .NE. 2H76)  GOTO 600 
      IF(IGET1(IB,J+4) .NE. 1H8)  GOTO 600
      I=-32768
      RETURN
C 
C       ERROR RETURN !
C 
  600 INUM=.TRUE. 
      I=0 
      RETURN
      END 
      END$
                                                                                                      