1 : C ERREU2 SOURCE JC220346 14/01/31 21:15:06 7939 2 : C EDITION MESSAGE 3 : C 4 : SUBROUTINE ERREU2(CHLU,CHER,NBLIG,ITYP) 5 : IMPLICIT INTEGER(I-N) 6 : -INC CCOPTIO 7 : CHARACTER*(*) CHLU(2),CHER(2) 8 : CHARACTER*12 CHAUX 9 : CHARACTER*11 NOMBRE 10 : LOGICAL ZTRIM 11 : DATA NOMBRE /'0123456789:'/ 12 : CHER(1)=' ' 13 : CHER(2)=' ' 14 : CHER(1)=CHLU(1) 15 : CHER(2)=CHLU(2) 16 : DO 20 IL=1,NBLIG 17 : IOUT=0 18 : IIN=0 19 : 100 CONTINUE 20 : IIN=IIN+1 21 : IF (IIN.GT.LEN(CHLU(IL))) GOTO 110 22 : IF (CHLU(IL)(IIN:IIN).NE.'%') THEN 23 : IOUT=IOUT+1 24 : CHER(IL)(IOUT:IOUT)=CHLU(IL)(IIN:IIN) 25 : ELSEIF (CHLU(IL)(IIN+1:IIN+1).EQ.'i') THEN 26 : INUM=INDEX(NOMBRE,CHLU(IL)(IIN+2:IIN+2))-1 27 : IF (INUM.EQ.0) THEN 28 : INOMB=ITYP 29 : ELSE 30 : INOMB=INTERR(INUM) 31 : ENDIF 32 : WRITE (CHAUX,FMT='(I12)') INOMB 33 : * NE GARDER QUE LES SIGNES SIGNIFICATIFS 34 : DO 30 IAUX=1,12 35 : IF (CHAUX(IAUX:IAUX).NE.' ') GOTO 40 36 : 30 CONTINUE 37 : IAUX=12 38 : 40 CONTINUE 39 : CHER(IL)(IOUT+1:IOUT+13-IAUX)=CHAUX(IAUX:12) 40 : IOUT=IOUT+13-IAUX 41 : IIN=IIN+2 42 : ELSEIF (CHLU(IL)(IIN+1:IIN+1).EQ.'r') THEN 43 : INUM=INDEX(NOMBRE,CHLU(IL)(IIN+2:IIN+2))-1 44 : RNOMB=REAERR(INUM) 45 : WRITE (CHAUX,FMT='(1PG12.5)') RNOMB 46 : * NE GARDER QUE LES SIGNES SIGNIFICATIFS 47 : DO 50 IAUX=1,12 48 : IF (CHAUX(IAUX:IAUX).NE.' ') GOTO 60 49 : 50 CONTINUE 50 : IAUX=12 51 : 60 CONTINUE 52 : CHER(IL)(IOUT+1:IOUT+13-IAUX)=CHAUX(IAUX:12) 53 : IOUT=IOUT+13-IAUX 54 : IIN=IIN+2 55 : ELSEIF (CHLU(IL)(IIN+1:IIN+1).EQ.'b') THEN 56 : INUM=INDEX(NOMBRE,CHLU(IL)(IIN+2:IIN+2))-1 57 : IF (BOOERR(INUM)) THEN 58 : CHAUX(1:4)='VRAI' 59 : ELSE 60 : CHAUX(1:4)='FAUX' 61 : ENDIF 62 : CHER(IL)(IOUT+1:IOUT+4)=CHAUX(1:4) 63 : IOUT=IOUT+4 64 : IIN=IIN+2 65 : ELSEIF ((CHLU(IL)(IIN+1:IIN+1).EQ.'m').OR. 66 : & (CHLU(IL)(IIN+1:IIN+1).EQ.'M')) THEN 67 : ZTRIM=(CHLU(IL)(IIN+1:IIN+1).EQ.'M') 68 : IIN=IIN+1 69 : IPOS=INDEX(NOMBRE,CHLU(IL)(IIN+1:IIN+1))-1 70 : IIN=IIN+1 71 : IPOS1=INDEX(NOMBRE,CHLU(IL)(IIN+1:IIN+1))-1 72 : IF (IPOS1.NE.10) THEN 73 : IPOS=10*IPOS+IPOS1 74 : IIN=IIN+1 75 : IPOS1=INDEX(NOMBRE,CHLU(IL)(IIN+1:IIN+1))-1 76 : IF (IPOS1.NE.10) THEN 77 : IPOS=10*IPOS+IPOS1 78 : IIN=IIN+1 79 : ENDIF 80 : ENDIF 81 : * LA IL Y A UN % ON LE SAUTE 82 : IIN=IIN+1 83 : JPOS=INDEX(NOMBRE,CHLU(IL)(IIN+1:IIN+1))-1 84 : IIN=IIN+1 85 : JPOS1=INDEX(NOMBRE,CHLU(IL)(IIN+1:IIN+1))-1 86 : IF (JPOS1.NE.-1) THEN 87 : JPOS=10*JPOS+JPOS1 88 : IIN=IIN+1 89 : JPOS1=INDEX(NOMBRE,CHLU(IL)(IIN+1:IIN+1))-1 90 : IF (JPOS1.NE.-1) THEN 91 : JPOS=10*JPOS+JPOS1 92 : IIN=IIN+1 93 : ENDIF 94 : ENDIF 95 : IF (IPOS.EQ.0.AND.JPOS.EQ.0) THEN 96 : CHER(IL)(IOUT+1:IOUT+5)=LOCERR 97 : IOUT=IOUT+5 98 : ELSE 98 : CALL LENCHA(MOTERR(IPOS:JPOS),LLMERR) 99 : IF (LLMERR.GT.0.AND.ZTRIM) JPOS=IPOS+LLMERR-1 100 : CHER(IL)(IOUT+1:IOUT+1+JPOS-IPOS)=MOTERR(IPOS:JPOS) 101 : IOUT=IOUT+1+JPOS-IPOS 102 : ENDIF 103 : ELSE 104 : IOUT=IOUT+1 105 : CHER(IL)(IOUT:IOUT)=CHLU(IL)(IIN:IIN) 106 : ENDIF 107 : GOTO 100 108 : 110 CONTINUE 109 : 20 CONTINUE 110 : END 111 : 112 :
© Cast3M 2003 - All rights reserved.
Disclaimer