Librairie utiliter > Fichier inttyp.f |
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