Télécharger lireca.eso

Retour à la liste

Numérotation des lignes :

lireca
  1. C LIRECA SOURCE PV090527 23/01/24 21:15:04 11570
  2. C ACQUISITION D'UNE CARTE (500 CARS) DE DONNEES
  3. C
  4. SUBROUTINE LIRECA
  5.  
  6. C LIT LES CARTES DE DONNEES. REVIENT AUTOMATIQUEMENT SUR
  7. C L'UNITE IOTER EN CAS DE FIN DE FICHIER,CE QUI PERMET D'EXECUTER
  8. C UN FICHIER PREPARE A L'AVANCE
  9. C RECOPIE TOUTES LES CARTES LUES SUR UNITE 98
  10.  
  11. IMPLICIT INTEGER(I-N)
  12.  
  13. -INC PPARAM
  14. -INC CCREDLE
  15. -INC CCOPTIO
  16. -INC CCNOYAU
  17.  
  18. CHARACTER*72 REP
  19. C LOCHAI et FMCHAI dans CCNOYAU.INC
  20. CHARACTER*(LOCHAI) IAERA,TMPLI
  21. CHARACTER*8 CHA8
  22. INTEGER IRET
  23. INTEGER LONGLU
  24. LOGICAL INIPAS
  25. SAVE IECHA,INIPAS
  26. DATA INIPAS/.TRUE./
  27.  
  28. C On positionne JERR au MAXI entre l'erreur par ASSISTANT et l'erreur GLOBALE
  29. jerr=MAX(IERR,IERGLB)
  30.  
  31. CHA8='INITIALE'
  32. sredle=iredle
  33. IF(INIPAS) THEN
  34. INIPAS=.FALSE.
  35. CALL PROCL2(CHA8,IRET)
  36. IF (IRET.NE.0) THEN
  37. IOLEC=654321 + IOLEC
  38. CALL ERREUR(-305)
  39. IECHA=IECHO
  40. IECHO= max(0,iecho - 1)
  41. iproc=iret
  42. call procpo(iproc,iret)
  43. ENDIF
  44. ENDIF
  45. I1=IPOS
  46. I2=I1+71
  47. 5 CONTINUE
  48. IF(IOLEC.LT.0. OR. IOLEC.GT.654321 ) THEN
  49. CALL PROCLI(IAERA,IRET)
  50. IF(IRET .EQ. 99999 ) THEN
  51. IF ( IOLEC.LT. 0) THEN
  52. IOLEC = -IOLEC
  53. call procl1(moterr(1:8))
  54. CALL ERREUR(1134)
  55. return
  56. ELSE
  57. IOLEC=IOLEC-654321
  58. CALL ERREUR (-306)
  59. ENDIF
  60. IECHO=IECHA
  61. GO TO 5
  62. ENDIF
  63.  
  64. LONGLU=LEN(IAERA)
  65. longlu=min(500,longlu)
  66. DO WHILE ( LONGLU.NE.1.AND. IAERA(LONGLU:LONGLU) .EQ.' ')
  67. LONGLU = LONGLU -1
  68. ENDDO
  69. IF(I1+LONGLU.LE.LEN(TEXT)) THEN
  70. I2=I1+LONGLU
  71. TEXT(I1:I2)=IAERA(1:LONGLU)
  72. ELSE
  73. I2=LEN(TEXT)
  74. LONGLU=I2-I1
  75. TEXT(I1:I2)=IAERA(1:LONGLU)
  76. moterr(1:40)=IAERA(LONGLU+1:)
  77. CALL ERREUR (-358)
  78. ENDIF
  79. ELSE
  80. IF (IECHO.GT.0) CALL PROMPT
  81.  
  82. c READ(IOLEC,FMT='(A72)',END=2,ERR=4) TMPLI
  83. READ(IOLEC,FMT=FMCHAI,END=2,ERR=4) TMPLI
  84. LONGLU=LEN(TMPLI)
  85. DO WHILE ( LONGLU.NE.1.AND. TMPLI(LONGLU:LONGLU) .EQ.' ')
  86. LONGLU = LONGLU -1
  87. ENDDO
  88. IF(I1+LONGLU.LE.LEN(TEXT)) THEN
  89. I2=I1+LONGLU
  90. TEXT(I1:I2)=TMPLI(1:LONGLU)
  91. ELSE
  92. I2=LEN(TEXT)
  93. LONGLU=I2-I1
  94. TEXT(I1:I2)=TMPLI(1:LONGLU)
  95. moterr(1:40)=TMPLI(LONGLU+1:)
  96. CALL ERREUR (-358)
  97. ENDIF
  98. ENDIF
  99. C*******
  100. WRITE(98,*,ERR=6) TEXT(I1:I2)
  101. goto 7
  102. 6 interr(1)=98
  103. moterr='fort.98 ?'
  104. call erreur (1066)
  105. return
  106. C*******
  107. 7 continue
  108. IF (IECHO.GE.1) WRITE(IOIMP,3) TEXT(I1:I2)
  109. 3 FORMAT(1X,'* ',A)
  110. IF(TEXT(I1:I1).EQ.'*') THEN
  111. GO TO 5
  112. ENDIF
  113. c write(IOIMP,*) 'Sortie de lireca'
  114. IPOS=I2
  115. RETURN
  116. C traitement erreur en lecture
  117. 4 continue
  118. if (jerr.eq.623) then
  119. ierr =0
  120. IERGLB=0
  121. call erreur(623)
  122. call opterm(ioter)
  123. ierr =0
  124. IERGLB=0
  125. goto 5
  126. endif
  127. interr(1)=ioter
  128. call erreur (624)
  129. call opterm(ioter)
  130. goto 5
  131. c traitement fin de lecture
  132. 2 IF (IOLEC.EQ.IOTER) THEN
  133. IF (IOGRA.EQ.3) THEN
  134. REWIND (IOLEC,err=7720)
  135. WRITE (IOIMP,7711)
  136. READ (IOLEC,7712,END=7720,ERR=7720) REP
  137. IF (REP(1:3).NE.'OUI') THEN
  138. WRITE( IOIMP,7713)
  139. GOTO 5
  140. ENDIF
  141. endif
  142. 7720 CONTINUE
  143. RETURN
  144. ELSE
  145. WRITE (IOIMP,7714) IOLEC
  146. IOLEC=IOTER
  147. GOTO 5
  148. ENDIF
  149. 7711 FORMAT (' VOULEZ-VOUS VRAIMENT SORTIR DE GIBI ? OUI/NON')
  150. 7712 FORMAT (A72)
  151. 7713 FORMAT( ' LE PROGRAMME ATTEND LA SUITE DES DONNEES')
  152. 7714 FORMAT(' FIN DE FICHIER SUR L''UNITE ',I2,/,
  153. # ' LES DONNEES SONT MAINTENANT LUES SUR LE CLAVIER')
  154. END
  155.  
  156.  
  157.  
  158.  
  159.  
  160.  
  161.  
  162.  
  163.  
  164.  
  165.  

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