redlec
C REDLEC SOURCE JC220346 18/12/04 21:16:08 9991 C LECTURE DE DONNEES EN FORMAT LIBRE C C C LECTURE DE DONNEES EN FORMAT LIBRE C LES RESULTATS SONT DANS LE COMMON /COPTIO/ C LE TYPE DE LA DONNEE EFFECTIVEMENT LUE EST IRE C IRE=1 : ENTIER IRE=2 : FLOTTANT IRE=3 : MOT IRE=4 : TEXTE C IRE=5 : LOGIQUE IRE=0 : FIN DE DIRECTIVE C C - ENTIER NFIX AU PLUS NEUF CHIFFRES SIGNIFICATIFS C - FLOTTANT AU PLUS SEIZE CHIFFRES SIGNIFICATIFS C - MOT OU TEXTE AU PLUS SOIXANTE-DOUZE CARACTERES C - LE NOMBRE DE CARACTERE DU MOT OU DU TEXTE EST NCAR C - LES SEPARATEURS (QUI SONT TRANSMIS COMME DES MOTS) SONT : C ' ','=','+','-','*','/','%' C LE POINT '.' DANS UN MOT EST PRIS COMME SEPARATEUR IL EST MEME C RENVOYE COMMME TYPE SEPARATEUR IRE = 6 C C IMPLICIT INTEGER(I-N) -INC PPARAM -INC CCREDLE -INC CCNOYAU * SAVE SEPARA,EPSI,CARAC * LOGICAL SEPARA CHARACTER*117 CAROK C 1111111111222 C 1 234567890123456789012 DATA CAROK/'1234567890°+&é(-è_çà)=~#{[|`\\^@]}¤?azertyuiop^$qsdfgh >jklmù*wxcvbn,;:!AZERTYUIOPQSDFGHJKLM%µWXCVBN?.§<>äëÿüïöâêûîô£''/'/ C * ith=0 * call ooonth(ith) * write (6,*) ' thread ',ith, 'redlec pointeur ',sredle MOT(1:LONOM)=' ' 5 NRAN=NRAN+1 IF (NRAN.GT.ICOUR) GOTO 2 INDC=INDEX(CAROK,TEXT(NRAN:NRAN)) IF (INDC.EQ.0) TEXT(NRAN:NRAN)=' ' INDIN=23 * SI SEPARA EST VRAI ON CONSIDERE + ET - ET . COMME DES MOTS IF (SEPARA.AND.(IND.EQ.3.OR.IND.EQ.4.OR.IND.EQ.8)) THEN INDIN=IND GOTO 60 ENDIF SEPARA=.FALSE. IF (IND.EQ.0) GOTO 60 IF (IND.EQ.1) GOTO 5 INDIN=IND IF(IND.EQ.2) GOTO 60 IF(IND.GT.18) GOTO 60 IF (IND.GE.5.AND.IND.LE.7) GOTO 60 C C ON A LU UN NOMBRE C IRE=1 IDE=NRAN NFIX=0 ISGN=0 IDEC=-1 IEXP=0 KSGN=1 IF (IND.EQ.4) KSGN=-1 IF (IND.NE.3.AND.IND.NE.4) GOTO 25 22 NRAN=NRAN+1 IF(NRAN.GT.ICOUR) GOTO 30 INDC=INDEX(CAROK,TEXT(NRAN:NRAN)) IF (INDC.EQ.0) TEXT(NRAN:NRAN)=' ' IF (IND.NE.0) GOTO 25 24 CONTINUE NRAN=IDE IND=INDIN GOTO 60 25 IF(IND.LT.9.OR.IND.GT.18) GOTO 28 ISGN=ISGN+1 IF(IDEC.GE.0) IDEC=IDEC+1 IF(ISGN-10) 26,252,255 252 MFIX=NFIX NFIX=0 GOTO 26 255 IF(ISGN.LT.19) GOTO 26 IF(IDEC.LT.0) IEXP=IEXP+1 IF(IDEC.GE.0) IDEC=IDEC-1 GOTO 22 26 NFIX=10*NFIX+IND-9 GOTO 22 28 IF(IND.EQ.1) GOTO 30 IF (IND.EQ.8) GOTO 29 IF(IND.LE.7.AND.IND.GE.3) GOTO 300 IF(IND.GT.18) GOTO 40 GOTO 24 29 IF (IDEC.GE.0) GOTO 24 IDEC=0 GOTO 22 300 IF (IDEC.LT.0) NRAN=NRAN-1 SEPARA=.TRUE. 30 IF (ISGN.EQ.0) GOTO 24 IF (IDEC.GE.0) GOTO 40 C C ON A LU UN ENTIER C NCAR=NRAN-IDE IRE=1 IF(ISGN.GT.9) GOTO 40 IF(KSGN.LT.0) NFIX=-NFIX FLOT=NFIX RETURN C C ON A LU UN FLOTTANT C 40 IRE=2 FLOT=NFIX IF(ISGN.LT.10) GOTO 41 DP=MFIX IF(ISGN.GT.18) ISGN=18 41 IF(IDEC.LT.0) IDEC=0 IEXP=IEXP-IDEC IF(IND.EQ.1) GOTO 55 IF (IND.LE.7.AND.IND.GE.3) GOTO 550 ISGN=1 NFIX=0 NRAN=NRAN+1 IF (NRAN.GT.ICOUR) GOTO 53 IF (IND.EQ.2) GOTO 305 IF (IND.EQ.4) ISGN=-1 42 NRAN=NRAN+1 IF(NRAN.GT.ICOUR) GOTO 53 305 CONTINUE INDC=INDEX(CAROK,TEXT(NRAN:NRAN)) IF (INDC.EQ.0) TEXT(NRAN:NRAN)=' ' IF (IND.EQ.0) GOTO 24 IF(IND.EQ.1) GOTO 52 IF (IND.LE.7.AND.IND.GE.3) GOTO 520 IF(IND.LT.9.OR.IND.GT.18) GOTO 24 NFIX=10*NFIX+IND-9 GOTO 42 52 NRAN1=NRAN-1 GOTO 521 520 NRAN=NRAN-1 SEPARA=.TRUE. 521 CONTINUE 53 IF(ISGN.LT.0) NFIX=-NFIX IEXP=IEXP+NFIX GOTO 55 550 NRAN=NRAN-1 SEPARA=.TRUE. NCAR=NRAN-IDE RETURN C C ON A LU UN MOT OU UN TEXT C 60 MOT=' ' IF (IND.EQ.2) GOTO 70 C C ON A LU UN MOT C IRE=3 IDEB=NRAN IF ((INDIN.LT.3.OR.INDIN.GT.8).AND.INDIN.NE.25) GOTO 66 NRAN=NRAN+1 IF (INDIN.NE.6) GOTO 68 IF (NRAN.GT.ICOUR) GOTO 68 NRAN=NRAN+1 GOTO 68 66 NRAN=NRAN+1 IF(NRAN.GT.ICOUR) GOTO 68 INDC=INDEX(CAROK,TEXT(NRAN:NRAN)) IF (INDC.EQ.0) TEXT(NRAN:NRAN)=' ' IF (INDAUX.EQ.1.OR.INDAUX.EQ.2) GOTO 68 IF ((INDAUX.LT.3.OR.INDAUX.GT.8).AND.INDAUX.NE.25) GOTO 66 SEPARA=.TRUE. IFIN=NRAN-1 GO TO 680 68 IFIN=NRAN-1 SEPARA=.FALSE. 680 CONTINUE NCAR=IFIN-IDEB+1 NCAR=MIN(LOCHAI,NCAR) MOT(1:NCAR)=TEXT(IDEB:IFIN) NRAN=NRAN-1 IF(MOT(1:1).EQ.'.') IRE=6 IF(MOT(1:1).EQ.'%') IRE=7 C C CE MOT EST-IL 'VRAI' OU 'FAUX' AUQUEL CAS ON A LU UN LOGIQUE C IF (MOT(1:5).EQ.'VRAI ') THEN BOOL=.TRUE. IRE=5 ELSEIF (MOT(1:5).EQ.'FAUX ') THEN BOOL=.FALSE. IRE=5 ENDIF RETURN 70 IRE=4 NRAN=NRAN+1 IDEB=NRAN icar=1 jcar=ideb 71 NRAN=NRAN+1 IF (NRAN.GT.ICOUR) GOTO 72 if (nran+1.gt.icour) goto 72 * double quote ==> une seule dans le texte rendu nran=nran+1 ifin=nran-1 ncar=icar+ifin-jcar mot(icar:ncar)=text(jcar:ifin) icar=ncar+1 jcar=ifin+2 goto 71 endif GOTO 71 72 IFIN=NRAN-1 NCAR=IFIN-IDEB+1 NCAR=MIN(LOCHAI,NCAR) MOT(icar:NCAR)=TEXT(jcar:IFIN) RETURN 2 IRE=0 END
© Cast3M 2003 - Tous droits réservés.
Mentions légales