Télécharger lichpo.eso

Retour à la liste

Numérotation des lignes :

lichpo
  1. C LICHPO SOURCE CB215821 25/04/23 21:15:27 12247
  2. SUBROUTINE LICHPO(NBAND,ITLACC,IMAX1,IRET,IFORM,LCOMLU)
  3. IMPLICIT INTEGER(I-N)
  4. IMPLICIT REAL*8(A-H,O-Z)
  5. C=======================================================================
  6. C BUT : LECTURE D UN CHAMPOIN
  7. C APPELE PAR : LIPIL
  8. C APPELLE : LFCDIM LFCDIE LFCDI2
  9. C ECRIT PAR FARVACQUE -REPRIS PAR LENA
  10. C
  11. C (E) LCOMLU : Longueur des Noms de composantes a lire (depuis NIVEAU 23)
  12. C
  13. C=======================================================================
  14. -INC SMCHPOI
  15. -INC SMCOORD
  16. -INC PPARAM
  17. -INC CCOPTIO
  18. C
  19. C
  20. C=======================================================================
  21. SEGMENT/ITBBE1/( ITABE1(NN))
  22. SEGMENT/ITBBE2/( ITABE2(NN))
  23. SEGMENT/ITBBM1/( ITABM1(NM))
  24. segment itbbc1
  25. character*(LCOMLU) itabc1(nm)
  26. endsegment
  27. * segment itbbc2
  28. * character*4 itabc2(nm2)
  29. * endsegment
  30. SEGMENT/ITBBM2/( ITABM2(NM2))
  31. SEGMENT/ITLACC/( ITLAC(0))
  32. DIMENSION ILENA(10)
  33. character*80 itabc2
  34. external long
  35. C--------------------------------------------------------------------
  36. IRET =0
  37. IRETOU=0
  38. C **************************CHPOINT*********************************
  39. NN=0
  40. NM=0
  41. NM2=20
  42. ITBBM2 =0
  43. ITBBE1 =0
  44. ITBBM1 =0
  45. ITBBE2 =0
  46. SEGINI ITBBM2
  47.  
  48. IF(IONIVE .LT. 23)THEN
  49. C Les noms des composantes sont lus sur 4 caracteres pour les CHPOINT
  50. LCOMLU=4
  51. ENDIF
  52.  
  53. SEGINI ITBBM1,itbbc1
  54. * SEGINI ITBBM2
  55. * SEGINI ITBBM1
  56. SEGINI ITBBE2
  57. SEGINI ITBBE1
  58. C write(6,*)' lichpo imax1 iobnive iform' , imax1 ,ionive,iform
  59. DO 1101 IEL=1,IMAX1
  60. C
  61. C MODIF ATTRIBUT DANS CHPO PAR DEGAY
  62. IF ( IONIVE .GE. 6 ) THEN
  63. NTOTO=4
  64. ELSE
  65. NTOTO=3
  66. ENDIF
  67. MCHPOI=0
  68. do 36 k=1,4
  69. 36 ilena(k)=0
  70. CALL LFCDIE(NBAND,NTOTO,ILENA,IRETOU,IFORM)
  71. IF (IRETOU.NE.0) GO TO 1000
  72. NSOUPO = ILENA(1)
  73. NM = ILENA(2)
  74. J = ILENA(3)
  75. C write(6,*) ' '
  76. C write(6,*) ' '
  77. C write(6,*) ' chpoint ' ,iel , ' nsoupo ' , nsoupo, 'nm', nm
  78. IF ( IONIVE .GE. 6 ) THEN
  79. NAT = ILENA(4)
  80. ELSE
  81. C UN SEUL ATTRIBUT SUR LES VIEUX CHPO
  82. NAT = 1
  83. ENDIF
  84. *
  85. * JE NE SAIT PAS A QUOI NI A QUI CA SERT
  86. * MAIS MOI CA ME DESSERT - PV -
  87. * ITEST= NSOUPO+NM+J
  88. * IF (ITEST.EQ.0) GO TO 11
  89. SEGINI MCHPOI
  90. IFOPOI=J
  91. NN=3*NSOUPO
  92. SEGADJ ITBBE1
  93. SEGADJ ITBBM1,itbbc1
  94. SEGADJ ITBBM1
  95. C write(6,*) ' lichpo deuxieme appel a lfcdie nn ' , nn
  96. CALL LFCDIE(NBAND,NN,ITABE1,IRETOU,IFORM)
  97. C write(6,*) ' apres 2eme enreg iretou' , iretou
  98. IF(IRETOU.NE.0) GOTO 1000
  99. C write(6,*) ' av troisieme appel lfcdim nm',nm
  100.  
  101. IF(IONIVE .LT. 23)THEN
  102. if (iform.ne.2) CALL LFCDIM(NBAND,NM,ITABM1,IRETOU,IFORM)
  103. if (iform.eq.2) call lfdien(nband,itbbC1,iretou,iform)
  104. ELSE
  105. C Depuis le niveau 23 on simplifie
  106. call lfdien(nband,itbbC1,iretou,iform)
  107. ENDIF
  108. C write(6,*) ' apres 3eme enreg iretou' , iretou
  109. IF(IRETOU.NE.0) GOTO 1000
  110. NN=NM
  111. SEGADJ ITBBE2
  112. C write(6,*) ' av 4éme appel lfcdie nn ' , nn
  113. CALL LFCDIE(NBAND,NN,ITABE2,IRETOU,IFORM)
  114. C write(6,*) ' apres 4eme enreg iretou' , iretou
  115. IF(IRETOU.NE.0) GOTO 1000
  116. C write(6,*) ' av 5éme appel lfcdim nm2 ' , nm2
  117. if (iform.ne.2) CALL LFCDIM(NBAND,NM2,ITABM2,IRETOU,IFORM)
  118. if (iform.eq.2) call lfcdic(nband,itabc2(1:80),iretou,iform)
  119. C write(6,*) ' apres 5eme enreg iretou' , iretou
  120. IF(IRETOU.NE.0) GOTO 1000
  121. if (iform.ne.2) then
  122. WRITE (MTYPOI,FMT='(2A4)') ITABM2(1),ITABM2(2)
  123. WRITE (MOCHDE,FMT='(18A4)') (ITABM2(I+2),I=1,18)
  124. endif
  125. if (iform.eq.2) then
  126. mtypoi=itabc2(1:8)
  127. mochde=itabc2(9:80)
  128. endif
  129. C MODIF DES CHPO PAR DEGAY
  130. IF ( IONIVE .GE. 6 ) THEN
  131. C write(6,*) ' av 6eme appel lfcdie nat ' , nat
  132. CALL LFCDIE(NBAND,NAT,JATTRI,IRETOU,IFORM)
  133. C write(6,*) ' apres 6eme enreg iretou' , iretou
  134. IF (IRETOU .NE. 0) GOTO 1000
  135. ELSE
  136. C LE VIEUX CHPO RESTITUE EST INDETERMINE
  137. JATTRI(1) = 0
  138. ENDIF
  139. C---
  140. ICC=0
  141. C write(6,*) ' nsoupo av boucle', nsoupo
  142. IF (NSOUPO.EQ.0) GO TO 13
  143. DO 1103 ISOU=1,NSOUPO
  144. NC=ITABE1(3*ISOU)
  145. SEGINI MSOUPO
  146. IPCHP(ISOU)=MSOUPO
  147. IGEOC=-abs(ITABE1(3*ISOU -2))
  148. N=ITABE1(3*ISOU -1)
  149. C write(6,*) ' isou nc n igeoc ', isou, nc, n , igeoc
  150. DO 1102 IC=1,NC
  151. ICC=ICC+1
  152. IF(IONIVE .LT. 23)THEN
  153. if (iform.ne.2) WRITE (NOCOMP(IC),FMT='(A4)') ITABM1(ICC)
  154. if (iform.eq.2) nocomp(ic)=itabc1(icc)
  155. ELSE
  156. C Depuis le niveau 23 on simplifie
  157. ILONG=LONG(itabc1(icc))
  158. IF(ILONG .GT. LOCOMP)THEN
  159. INTERR(1)=ILONG
  160. INTERR(2)=LOCOMP
  161. MOTERR=itabc1(icc)(1:LOCOMP)
  162. CALL ERREUR(-373)
  163. ENDIF
  164. nocomp(ic)=itabc1(icc)
  165. ENDIF
  166. NOHARM(IC)=ITABE2(ICC)
  167. 1102 CONTINUE
  168.  
  169. SEGINI MPOVAL
  170. IPOVAL=MPOVAL
  171. LMAX=N*NC
  172. C WRITE(6,*) ' ON APPELE LFCDIE AVEC LMAX = ' , LMAX
  173. CALL LFCDI2(NBAND,LMAX,VPOCHA,IRETOU,IFORM)
  174. IF(IRETOU.NE.0) GOTO 1000
  175. SEGDES MPOVAL
  176. segdes MSOUPO
  177. 1103 CONTINUE
  178. 13 CONTINUE
  179. SEGDES MCHPOI
  180. 11 ITLAC(**)=MCHPOI
  181. 1101 CONTINUE
  182. GO TO 1098
  183. 1000 CONTINUE
  184. C write(6,*) ' lihpo on tombe en 1000'
  185. IRETOU=1
  186. IF(MCHPOI.NE.0) SEGSUP MCHPOI
  187. 1098 CONTINUE
  188. IRET=IRETOU
  189. IF (ITBBM1.NE.0) SEGSUP ITBBM1,itbbc1
  190. IF (ITBBM2.NE.0) SEGSUP ITBBM2
  191. IF (ITBBE1.NE.0) SEGSUP ITBBE1
  192. IF (ITBBE2.NE.0) SEGSUP ITBBE2
  193. RETURN
  194. C -------------------------------------------------------
  195. END
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.  
  203.  

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