Télécharger erreu2.eso

Retour à la liste

Numérotation des lignes :

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

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