Télécharger lfcdie.eso

Retour à la liste

Numérotation des lignes :

lfcdie
  1. C LFCDIE SOURCE PV090527 24/02/21 21:15:03 11846
  2. SUBROUTINE LFCDIE(NBAND,LMAX,ITAB,IRETOU,IFORM)
  3. IMPLICIT INTEGER(I-N)
  4. IMPLICIT REAL*8(A-H,O-Z)
  5.  
  6. -INC PPARAM
  7. -INC CCOPTIO
  8. -INC CCFXDR
  9. DIMENSION ITAB(1)
  10. dimension itabc(lmax+1)
  11. external LONG
  12. 10 IRETOU=0
  13. ios=1
  14. IF (LMAX.EQ.0) RETURN
  15. if (ionive.le.19) then
  16. lmaxl=lmax
  17. IF (IFORM.EQ.1) then
  18. if (ionive.lt.4) then
  19. READ(NBAND,101,END=1001,ERR=1000)(ITAB(I),I=1,LMAX)
  20. else
  21. READ(NBAND,100,END=1001,ERR=1000)(ITAB(I),I=1,LMAX)
  22. endif
  23. endif
  24. IF (IFORM.EQ.0)READ(NBAND,END=1001,ERR=1000) (ITAB(I),I=1,LMAX)
  25. if(iform.eq.2) ios=IXDRIMAT( ixdrr, lmaxl,itab(1))
  26. if(ios.lt.0) go to 1001
  27. 100 FORMAT(10I8)
  28. 101 FORMAT(16I5)
  29. RETURN
  30. else
  31. IF(IFORM.EQ.1)then
  32. READ(NBAND,100,END=1001,ERR=1000)lc
  33. if (lc.gt.lmax+1) goto 1000
  34. READ(NBAND,100,END=1001,ERR=1000)(ITABc(I),I=1,Lc)
  35. endif
  36. IF(IFORM.EQ.0)then
  37. READ(NBAND,END=1001,ERR=1000) lc
  38. if (lc.gt.lmax+1) goto 1000
  39. READ(NBAND,END=1001,ERR=1000) (ITABc(I),I=1,Lc)
  40. endif
  41. if(iform.eq.2) then
  42. ios=ixdrint(ixdrr,lc)
  43. if (ios.lt.0) goto 1001
  44. if (lc.gt.lmax+1) goto 1000
  45. lmaxl=lc
  46. ios=ixdrimat(ixdrr,lmaxl,itabc(1))
  47. if (ios.lt.0) goto 1001
  48. endif
  49. * decompression
  50. i=0
  51. ic=0
  52. icp=0
  53. 1954 continue
  54. if (ic.ge.lc) goto 1955
  55. icp=ic+1
  56. if (itabc(icp).gt.0) then
  57. * comprime
  58. ic=icp+1
  59. do j=1,int(itabc(icp))
  60. i=i+1
  61. itab(i)=itabc(ic)
  62. enddo
  63. ic=icp+1
  64. goto 1954
  65. else
  66. * non comprime
  67. ic=icp
  68. do j=1,int(-itabc(icp))
  69. i=i+1
  70. ic=ic+1
  71. itab(i)=itabc(ic)
  72. enddo
  73. endif
  74. goto 1954
  75. 1955 continue
  76. if (i.ne.lmax) write (6,*) ' pb dans la decompression lfcdie '
  77. return
  78. endif
  79.  
  80.  
  81. 1001 CONTINUE
  82. * on bascule sur le fichier suivant
  83. ll = long (nomres)
  84. ificle=ificle+1
  85. * write(6,*)' lfcdie ificle ' , ificle
  86. if(ificle.eq.10000)then
  87. call erreur (945)
  88. iretou=1
  89. return
  90. endif
  91. if(ificle.eq.1) then
  92. nomres(ll+1:ll+2)='_1'
  93. ll=ll+2
  94. elseif ( ificle.lt.10) then
  95. write(nomres(ll:ll),fmt='(I1)')ificle
  96. elseif ( ificle.lt.100) then
  97. if(ificle.eq.10)ll = ll + 1
  98. write(nomres(ll-1:ll),fmt='(I2)')ificle
  99. elseif ( ificle.lt.1000) then
  100. if(ificle.eq.100)ll = ll + 1
  101. write(nomres(ll-2:ll),fmt='(I3)')ificle
  102. elseif ( ificle.lt.10000) then
  103. if(ificle.eq.1000)ll = ll + 1
  104. write(nomres(ll-3:ll),fmt='(I4)')ificle
  105. endif
  106. if (iform.ne.2) close (unit=nband)
  107. if (iform.eq.2) ios=IXDRCLOSE( ixdrr,.true.)
  108. if(iform.eq.1) then
  109. OPEN (UNIT=NBAND,STATUS='UNKNOWN',FILE=NOMRES(1:ll),
  110. # IOSTAT=IOS,ERR=2000,FORM='FORMATTED')
  111. ELSEif (iform.eq.0) then
  112. OPEN (UNIT=NBAND,STATUS='UNKNOWN',FILE=NOMRES(1:ll),
  113. # IOSTAT=IOS,ERR=2000,FORM='UNFORMATTED')
  114. else
  115. ios=INITXDR( NOMRES(1:ll),'r',.true.)
  116. if (ios.lt.0) goto 2000
  117. ENDIF
  118. write (6,*) 'Ouverture du fichier : ',nomres(1:ll)
  119. go to 10
  120.  
  121. 1000 IRETOU=1
  122. write (6,*) ' erreur lfcdie '
  123. RETURN
  124. 2000 continue
  125. MOTERR=NOMRES(1:ll)
  126. INTERR(1)=IOS
  127. CALL ERREUR(424)
  128. RETURN
  129. END
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.  
  137.  
  138.  
  139.  

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