Télécharger erreu2.eso

Retour à la liste

Numérotation des lignes :

erreu2
  1. C ERREU2 SOURCE OF166741 24/08/07 21:15:02 11981
  2. C EDITION MESSAGE
  3. C
  4. SUBROUTINE ERREU2(CHLU,CHER,NBLIG,ITYP)
  5.  
  6. IMPLICIT INTEGER(I-N)
  7. IMPLICIT REAL*8 (A-H,O-Z)
  8.  
  9. -INC PPARAM
  10. -INC CCOPTIO
  11.  
  12. EXTERNAL LONG
  13.  
  14. CHARACTER*(*) CHLU(2),CHER(2)
  15. CHARACTER*12 CHAUX
  16. CHARACTER*11 NOMBRE
  17. LOGICAL ZTRIM
  18.  
  19. DATA NOMBRE /'0123456789:'/
  20.  
  21. CHER(1)=' '
  22. CHER(2)=' '
  23. DO 20 IL=1,NBLIG
  24. LG_CHLU = LONG(CHLU(IL))
  25. LN_CHER = LEN(CHER(IL))
  26. IIN=0
  27. IOUT=0
  28. LOUT=0
  29. 100 CONTINUE
  30. IF (IIN.GE.LG_CHLU) GOTO 110
  31. IIN=IIN+1
  32. IOUTI=IOUT+1
  33. IF (CHLU(IL)(IIN:IIN).NE.'%') THEN
  34. LOUT =1
  35. IOUTF=IOUT+LOUT
  36. IF (IOUTF.GT.LN_CHER) GOTO 110
  37. CHER(IL)(IOUTI:IOUTF)=CHLU(IL)(IIN:IIN)
  38. ELSEIF (CHLU(IL)(IIN+1:IIN+1).EQ.'i') THEN
  39. INUM=INDEX(NOMBRE,CHLU(IL)(IIN+2:IIN+2))-1
  40. IF (INUM.EQ.0) THEN
  41. INOMB=ITYP
  42. ELSE
  43. INOMB=INTERR(INUM)
  44. ENDIF
  45. WRITE (CHAUX,FMT='(I12)') INOMB
  46. C NE GARDER QUE LES SIGNES SIGNIFICATIFS
  47. LOUT = 12
  48. DO IAUX=1,12
  49. IF (CHAUX(IAUX:IAUX).NE.' ') GOTO 40
  50. LOUT = LOUT - 1
  51. ENDDO
  52. 40 CONTINUE
  53. IF (LOUT.EQ.0) THEN
  54. LOUT = 1
  55. CHAUX(12:12) = '0'
  56. ENDIF
  57. IOUTF=IOUT+LOUT
  58. IF (IOUTF.GT.LN_CHER) GOTO 110
  59. IAUX = 12-LOUT+1
  60. CHER(IL)(IOUTI:IOUTF)=CHAUX(IAUX:12)
  61. IIN=IIN+2
  62. ELSEIF (CHLU(IL)(IIN+1:IIN+1).EQ.'r') THEN
  63. INUM=INDEX(NOMBRE,CHLU(IL)(IIN+2:IIN+2))-1
  64. RNOMB=REAERR(INUM)
  65. WRITE (CHAUX,FMT='(1PG12.5)') RNOMB
  66. C NE GARDER QUE LES SIGNES SIGNIFICATIFS
  67. LOUT = 12
  68. DO IAUX=1,12
  69. IF (CHAUX(IAUX:IAUX).NE.' ') GOTO 60
  70. LOUT = LOUT - 1
  71. ENDDO
  72. 60 CONTINUE
  73. IOUTF=IOUT+LOUT
  74. IF (IOUTF.GT.LN_CHER) GOTO 110
  75. IAUX = 12-LOUT+1
  76. CHER(IL)(IOUTI:IOUTF)=CHAUX(IAUX:12)
  77. IIN=IIN+2
  78. ELSEIF (CHLU(IL)(IIN+1:IIN+1).EQ.'b') THEN
  79. INUM=INDEX(NOMBRE,CHLU(IL)(IIN+2:IIN+2))-1
  80. IF (BOOERR(INUM)) THEN
  81. CHAUX(1:4)='VRAI'
  82. ELSE
  83. CHAUX(1:4)='FAUX'
  84. ENDIF
  85. LOUT = 4
  86. IOUTF=IOUT+LOUT
  87. IF (IOUTF.GT.LN_CHER) GOTO 110
  88. CHER(IL)(IOUTI:IOUTF)=CHAUX(1:4)
  89. IIN=IIN+2
  90. ELSEIF ((CHLU(IL)(IIN+1:IIN+1).EQ.'m').OR.
  91. & (CHLU(IL)(IIN+1:IIN+1).EQ.'M')) THEN
  92. ZTRIM=(CHLU(IL)(IIN+1:IIN+1).EQ.'M')
  93. IIN=IIN+1
  94. IPOS=INDEX(NOMBRE,CHLU(IL)(IIN+1:IIN+1))-1
  95. IIN=IIN+1
  96. IPOS1=INDEX(NOMBRE,CHLU(IL)(IIN+1:IIN+1))-1
  97. IF (IPOS1.NE.10) THEN
  98. IPOS=10*IPOS+IPOS1
  99. IIN=IIN+1
  100. IPOS1=INDEX(NOMBRE,CHLU(IL)(IIN+1:IIN+1))-1
  101. IF (IPOS1.NE.10) THEN
  102. IPOS=10*IPOS+IPOS1
  103. IIN=IIN+1
  104. ENDIF
  105. ENDIF
  106. C LA IL Y A UN % ON LE SAUTE
  107. IIN=IIN+1
  108. JPOS=INDEX(NOMBRE,CHLU(IL)(IIN+1:IIN+1))-1
  109. IIN=IIN+1
  110. JPOS1=INDEX(NOMBRE,CHLU(IL)(IIN+1:IIN+1))-1
  111. IF (JPOS1.NE.-1) THEN
  112. JPOS=10*JPOS+JPOS1
  113. IIN=IIN+1
  114. JPOS1=INDEX(NOMBRE,CHLU(IL)(IIN+1:IIN+1))-1
  115. IF (JPOS1.NE.-1) THEN
  116. JPOS=10*JPOS+JPOS1
  117. IIN=IIN+1
  118. ENDIF
  119. ENDIF
  120. IF (IPOS.EQ.0.AND.JPOS.EQ.0) THEN
  121. LOUT = 5
  122. IOUTF=IOUT+LOUT
  123. IF (IOUTF.GT.LN_CHER) GOTO 110
  124. CHER(IL)(IOUTI:IOUTF)=LOCERR(1:5)
  125. ELSE
  126. CALL LENCHA(MOTERR(IPOS:JPOS),LLMERR)
  127. IF (LLMERR.GT.0.AND.ZTRIM) JPOS=IPOS+LLMERR-1
  128. LOUT = JPOS-IPOS+1
  129. IOUTF=IOUT+LOUT
  130. IF (IOUTF.GT.LN_CHER) GOTO 110
  131. CHER(IL)(IOUTI:IOUTF)=MOTERR(IPOS:JPOS)
  132. ENDIF
  133. ELSE
  134. LOUT = 1
  135. IOUTF=IOUT+LOUT
  136. IF (IOUTF.GT.LN_CHER) GOTO 110
  137. CHER(IL)(IOUTI:IOUTF)=CHLU(IL)(IIN:IIN)
  138. ENDIF
  139. IOUT=IOUTF
  140. GOTO 100
  141. 110 CONTINUE
  142. 20 CONTINUE
  143.  
  144. c return
  145. END
  146.  
  147.  
  148.  

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