Télécharger wrcham.eso

Retour à la liste

Numérotation des lignes :

wrcham
  1. C WRCHAM SOURCE CB215821 20/11/04 21:22:18 10766
  2. SUBROUTINE WRCHAM(IOSAU,ITLACC,IMAX1,IFORM,IONIVE,IDEB)
  3. IMPLICIT INTEGER(I-N)
  4. IMPLICIT REAL*8(A-H,O-Z)
  5. *--------------------------------------------------------------------*
  6. * *
  7. * Ecriture d'un nouveau CHAMELEM sur le fichier IOSAU. *
  8. * *
  9. * Paramètres: *
  10. * *
  11. * IOSAU Numéro du fichier de sortie *
  12. * ITLACC Pile contenant les nouveaux CHAMELEMs *
  13. * IMAX1 Nombre de CHAMELEMs dans la pile *
  14. * IFORM Si sauvegarde en format ou non *
  15. * *
  16. * Appelé par: WRPIL *
  17. * *
  18. * Auteur, date de création: *
  19. * *
  20. * Denis ROBERT-MOUGIN, le 29 juin 1989. *
  21. * ANNEE DU BICENTENAIRE DE LA REVOLUTION FRANCAISE *
  22. * *
  23. *--------------------------------------------------------------------*
  24. -INC PPARAM
  25. -INC SMCHAML
  26. -INC CCFXDR
  27. *
  28. SEGMENT,ITLACC
  29. INTEGER ITLAC(0)
  30. ENDSEGMENT
  31. SEGMENT,MTABE1
  32. INTEGER ITABE1(NM1)
  33. ENDSEGMENT
  34. SEGMENT,MTABE2
  35. INTEGER ITABE2(NM2)
  36. ENDSEGMENT
  37. SEGMENT,MTABE3
  38. CHARACTER*(8) ITABE3(NM2)
  39. ENDSEGMENT
  40. SEGMENT,MTABE4
  41. CHARACTER*(8) ITABE4(NM4)
  42. ENDSEGMENT
  43. SEGMENT,MTABE5
  44. CHARACTER*(8) ITABE5(NM5)
  45. ENDSEGMENT
  46. SEGMENT,MTABE6
  47. CHARACTER*(8) ITABE6(NM6)
  48. ENDSEGMENT
  49.  
  50. *
  51. character * 8 toto
  52. INTEGER IDAN(4)
  53. NM5=0
  54. *
  55. * Boucle sur les CHAMELEMs contenus dans la pile:
  56. *
  57. DO 10 IEL=IDEB,IMAX1
  58. *
  59. MCHELM = ITLAC(IEL)
  60. IF (MCHELM.EQ.0) GO TO 10
  61. *
  62. SEGACT,MCHELM
  63. N1 = ICHAML(/1)
  64. N3 = INFCHE(/2)
  65. LTITR = TITCHE(/1)
  66. IDAN(1) = N1
  67. IDAN(2) = IFOCHE
  68. IDAN(3) = N3
  69. IDAN(4) = LTITR
  70. *
  71. CALL ECDIFE(IOSAU,4,IDAN,IFORM)
  72. CALL ECDIFC(IOSAU,TITCHE,IFORM)
  73. *
  74. * ECRITURE DU CONTENU DU SEGMENT MCHELM :
  75. *
  76. N6 = N3 + 3
  77. NM1 = N1 * N6
  78. SEGINI,MTABE1
  79. IF(IONIVE.GE.4) THEN
  80. NM5 = N1 * 2
  81. SEGINI,MTABE5
  82. ENDIF
  83. nm6=N1
  84. segini mtabe6
  85. DO 21 ISOUEL=1,N1
  86. ISOU = N6 * (ISOUEL - 1)
  87. MCHAML = ICHAML(ISOUEL)
  88. SEGACT,MCHAML
  89. *
  90. ITABE1(ISOU+1) = IMACHE(ISOUEL)
  91. ITABE1(ISOU+2) = ICHAML(ISOUEL)
  92. ITABE1(ISOU+3) = NOMCHE(/2)
  93. DO 12 IJ=1,N3
  94. ITABE1(ISOU+3+IJ) = INFCHE(ISOUEL,IJ)
  95. 12 CONTINUE
  96. *
  97. IF(IONIVE.GE.4) THEN
  98. ITABE5(2*ISOUEL-1) = CONCHE(ISOUEL)(1:8)
  99. ITABE5(2*ISOUEL ) = CONCHE(ISOUEL)(9:16)
  100. ENDIF
  101. toto = conche(isouel)(17:24)
  102. ITABE6(ISOUEL)=toto
  103.  
  104. *
  105. 21 CONTINUE
  106. CALL ECDIFE(IOSAU,NM1,ITABE1,IFORM)
  107. SEGSUP MTABE1
  108. IF(IONIVE.GE.4) THEN
  109. CALL ECDIFN(IOSAU,NM5,MTABE5,IFORM)
  110. SEGSUP MTABE5
  111. ENDIF
  112. CALL ECDIFN(IOSAU,NM6,MTABE6,IFORM)
  113. segsup mtabe6
  114. *
  115. * ... BOUCLES SUR LES ZONES ÉLÉMENTAIRES DU CHAMELEM :
  116. *
  117. DO 22 ISOUEL=1,N1
  118. MCHAML = ICHAML(ISOUEL)
  119. N2 = NOMCHE(/2)
  120. NM2=N2
  121. NM4=N2*2
  122. SEGINI MTABE2,MTABE3,MTABE4
  123. *
  124. DO 31 ICO=1,N2
  125. ITABE2(ICO) = IELVAL(ICO)
  126. ITABE3(ICO) = NOMCHE(ICO)
  127. if (iform.ne.2) then
  128. READ(TYPCHE(ICO),FMT='(2A8)') ITABE4(2*ICO-1),
  129. & ITABE4(2*ICO )
  130. else
  131. ITABE4(2*ICO-1)=TYPCHE(ICO)(1:8)
  132. ITABE4(2*ICO )=TYPCHE(ICO)(9:16)
  133. endif
  134. 31 CONTINUE
  135. *
  136. CALL ECDIFE(IOSAU,NM2,ITABE2,IFORM)
  137. CALL ECDIFN(IOSAU,NM2,MTABE3,IFORM)
  138. CALL ECDIFN(IOSAU,NM4,MTABE4,IFORM)
  139. SEGSUP MTABE2,MTABE3,MTABE4
  140. *
  141. * ... BOUCLE SUR LES COMPOSANTES :
  142. *
  143. DO 32 ICO=1,N2
  144. MELVAL = IELVAL(ICO)
  145. * si melval negatif c'est qu'il pointe sur un ielval et c'est donc ecrit dans wrielv
  146. if (melval.gt.0) then
  147. SEGACT,MELVAL
  148. IDAN (1) = VELCHE(/1)
  149. IDAN (2) = VELCHE(/2)
  150. IDAN (3) = IELCHE(/1)
  151. IDAN (4) = IELCHE(/2)
  152.  
  153. CALL ECDIFE(IOSAU,4,IDAN,IFORM)
  154. *
  155. * ... ECRITURE DU CONTENU DU SEGMENT MELVAL :
  156. *
  157. L1 = IDAN(1) * IDAN(2)
  158. L2 = IDAN(3) * IDAN(4)
  159. CALL ECDIFR(IOSAU,L1,VELCHE,IFORM)
  160. CALL ECDIFE(IOSAU,L2,IELCHE,IFORM)
  161. SEGDES,MELVAL
  162. endif
  163. 32 CONTINUE
  164. *
  165. SEGDES MCHAML
  166. 22 CONTINUE
  167. *
  168. SEGDES MCHELM
  169.  
  170. 10 CONTINUE
  171. *
  172. RETURN
  173. END
  174.  
  175.  
  176.  
  177.  
  178.  
  179.  
  180.  
  181.  
  182.  
  183.  

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