* * $Id: ichexi.F,v 1.1.1.1 1996/02/15 17:49:45 mclareni Exp $ * * $Log: ichexi.F,v $ * Revision 1.1.1.1 1996/02/15 17:49:45 mclareni * Kernlib * * #include "kerngen/pilot.h" FUNCTION ICHEXI (CHV,JLP,JRP) C C CERN PROGLIB# M432 ICHEXI .VERSION KERNFOR 4.35 930308 C ORIG. 04/10/88, JZ C C- Read hexadecimal integer from CHV(JL:JR) DIMENSION JLP(9), JRP(9) COMMON /SLATE/ NDSLAT,NESLAT,NFSLAT,NGSLAT, DUMMY(36) CHARACTER CHV*(*) #if !defined(CERNLIB_QISASTD) #include "kerngen/q_andor.inc" #include "kerngen/q_shift.inc" #endif JJ = JLP(1) JR = JRP(1) IVAL = 0 NDG = 0 NEG = 0 NGSLAT = 0 12 IF (JJ.GT.JR) GO TO 99 IF (CHV(JJ:JJ).EQ.' ') THEN JJ = JJ + 1 GO TO 12 ELSEIF (CHV(JJ:JJ).EQ.'+') THEN JJ = JJ + 1 ELSEIF (CHV(JJ:JJ).EQ.'-') THEN NEG = 7 JJ = JJ + 1 ENDIF 21 IF (JJ.GT.JR) GO TO 99 #if defined(CERNLIB_QASCII) K = ICHAR (CHV(JJ:JJ)) K = K - 48 IF (K.LT.0) GO TO 98 IF (K.GE.10) THEN K = K - 7 IF (K.LT.10) GO TO 98 IF (K.GE.16) THEN K = K - 32 IF (K.LT.10) GO TO 98 IF (K.GE.16) GO TO 98 ENDIF ENDIF #endif #if defined(CERNLIB_QEBCDIC) K = ICHAR (CHV(JJ:JJ)) K = K - 119 IF (K.LT.10) GO TO 98 IF (K.GE.16) THEN K = K - 64 IF (K.LT.10) GO TO 98 IF (K.GE.16) THEN K = K - 57 IF (K.LT.0) GO TO 98 IF (K.GE.10) GO TO 98 ENDIF ENDIF #endif #if !defined(CERNLIB_QISASTD) IVAL = IOR (ISHFTL(IVAL,4), K) #endif #if defined(CERNLIB_QISASTD) IVAL = IOR (ISHFT (IVAL,4), K) #endif NDG = NDG + 1 JJ = JJ + 1 GO TO 21 98 IF (CHV(JJ:JJ).NE.' ') NGSLAT = JJ 99 NDSLAT = NDG NESLAT = JJ IF (NEG.NE.0) THEN IF (IVAL.NE.0) IVAL = -IVAL ENDIF ICHEXI = IVAL RETURN END