Télécharger erreu2.eso

Retour à la liste

Numérotation des lignes :

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

© Cast3M 2003 - Tous droits réservés.
Mentions légales