[updated 27.Jan.2006]
FUNCTION INTTYP (CHAINE)
Auteur : D.Martin (Octobre 1989)
Derniere modification : D.Martin (27 janvier 2006)
Version 2
Codage du type de donnee (ENTIER/INTEGER,REEL/REAL,COMPLEXE/COMPLEX
,CARACTERE/CHARACTER) par un entier
Function reciproque TypInt
-- Argument d'entree --
CHAINE : Chaine de caractere representant le type de donnee
CHARACTER*(*) CHAINE
INTEGER INTTYP
CHARACTER UPPERC*9
INTEGER CHIFFR,KELCHN
INTEGER NBCHEN,NBCCHN,LENTYP,LENMAX,I,J
PARAMETER (NBCHEN=5,NBCCHN=9)
CHARACTER CCCHEN*120,TBCHEN(NBCHEN*NBCCHN),CHAINW*9
COMMON/ONSEPA/CCCHEN
EQUIVALENCE (TBCHEN,CCCHEN)
LENTYP=LEN (CHAINE)
LENMAX=MIN (NBCCHN,LENTYP)
CHAINW=UPPERC (CHAINE)
CCCHEN(1:NBCHEN*NBCCHN)=
&'ENTIER REEL DOUBLE COMPLEXE CARACTERE'
INTTYP=KELCHN (CHAINE(:LENMAX),TBCHEN,NBCHEN,NBCCHN) !utilite
IF (INTTYP.LE.0) THEN
CCCHEN(1:NBCHEN*NBCCHN)=
&'INTEGER REAL DOUBLE COMPLEX CHARACTER'
INTTYP=KELCHN (CHAINE(:LENMAX),TBCHEN,NBCHEN,NBCCHN) !utilite
ENDIF
IF (INTTYP.LE.0) GOTO 99991
IF (INTTYP.LT.5) RETURN
Cas des chaines de caracteres
J=0
INTTYP=11
IF (LENTYP.GT.NBCCHN+1.AND.CHAINE(NBCCHN+1:NBCCHN+1).EQ.'*') THEN
DO 1 I=LENTYP,NBCCHN+2,-1
IF (CHAINE(I:I).NE.' ') GOTO 2
1 CONTINUE
I=LENTYP
2 LENTYP=I
DO 3 I=NBCCHN+2,LENTYP
IF (CHIFFR (CHAINE(I:I),J).NE.1) GOTO 99991
3 CONTINUE
CALL RELCNE (CHAINE(NBCCHN+2:LENTYP),J) !utilite
INTTYP=NBCCHN+1+J
ENDIF
RETURN
99991 CCCHEN=CHAINE
CALL BAISE ('*IntTyp* '//CCCHEN(1:LENTYP)
&//' est un drole de type!')
END !Inttyp
inttyp est appelé dans (83 procédures)