Télécharger wrcham.eso

Retour à la liste

Numérotation des lignes :

wrcham
  1. C WRCHAM SOURCE PV090527 25/03/04 21:15:03 12169
  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(5)
  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. IDAN(5) = MCLCNF
  71. *
  72. * write(6,*) 'mclcnf dans wrcham',mclcnf
  73. if (ionive.le.26) CALL ECDIFE(IOSAU,4,IDAN,IFORM)
  74. if (ionive.gt.26) CALL ECDIFE(IOSAU,5,IDAN,IFORM)
  75. CALL ECDIFC(IOSAU,TITCHE,IFORM)
  76. *
  77. * ECRITURE DU CONTENU DU SEGMENT MCHELM :
  78. *
  79. N6 = N3 + 3
  80. NM1 = N1 * N6
  81. SEGINI,MTABE1
  82. IF(IONIVE.GE.4) THEN
  83. NM5 = N1 * 2
  84. SEGINI,MTABE5
  85. ENDIF
  86. nm6=N1
  87. segini mtabe6
  88. DO 21 ISOUEL=1,N1
  89. ISOU = N6 * (ISOUEL - 1)
  90. MCHAML = ICHAML(ISOUEL)
  91. SEGACT,MCHAML
  92. *
  93. ITABE1(ISOU+1) = IMACHE(ISOUEL)
  94. ITABE1(ISOU+2) = ICHAML(ISOUEL)
  95. ITABE1(ISOU+3) = NOMCHE(/2)
  96. DO 12 IJ=1,N3
  97. ITABE1(ISOU+3+IJ) = INFCHE(ISOUEL,IJ)
  98. 12 CONTINUE
  99. *
  100. IF(IONIVE.GE.4) THEN
  101. ITABE5(2*ISOUEL-1) = CONCHE(ISOUEL)(1:8)
  102. ITABE5(2*ISOUEL ) = CONCHE(ISOUEL)(9:16)
  103. ENDIF
  104. toto = conche(isouel)(17:24)
  105. ITABE6(ISOUEL)=toto
  106.  
  107. *
  108. 21 CONTINUE
  109. CALL ECDIFE(IOSAU,NM1,ITABE1,IFORM)
  110. SEGSUP MTABE1
  111. IF(IONIVE.GE.4) THEN
  112. CALL ECDIFN(IOSAU,NM5,MTABE5,IFORM)
  113. SEGSUP MTABE5
  114. ENDIF
  115. CALL ECDIFN(IOSAU,NM6,MTABE6,IFORM)
  116. segsup mtabe6
  117. *
  118. * ... BOUCLES SUR LES ZONES ÉLÉMENTAIRES DU CHAMELEM :
  119. *
  120. DO 22 ISOUEL=1,N1
  121. MCHAML = ICHAML(ISOUEL)
  122. N2 = NOMCHE(/2)
  123. NM2=N2
  124. NM4=N2*2
  125. SEGINI MTABE2,MTABE3,MTABE4
  126. *
  127. DO 31 ICO=1,N2
  128. ITABE2(ICO) = IELVAL(ICO)
  129. ITABE3(ICO) = NOMCHE(ICO)
  130. if (iform.ne.2) then
  131. READ(TYPCHE(ICO),FMT='(2A8)') ITABE4(2*ICO-1),
  132. & ITABE4(2*ICO )
  133. else
  134. ITABE4(2*ICO-1)=TYPCHE(ICO)(1:8)
  135. ITABE4(2*ICO )=TYPCHE(ICO)(9:16)
  136. endif
  137. 31 CONTINUE
  138. *
  139. CALL ECDIFE(IOSAU,NM2,ITABE2,IFORM)
  140. CALL ECDIFN(IOSAU,NM2,MTABE3,IFORM)
  141. CALL ECDIFN(IOSAU,NM4,MTABE4,IFORM)
  142. SEGSUP MTABE2,MTABE3,MTABE4
  143. *
  144. * ... BOUCLE SUR LES COMPOSANTES :
  145. *
  146. DO 32 ICO=1,N2
  147. MELVAL = IELVAL(ICO)
  148. * si melval negatif c'est qu'il pointe sur un ielval et c'est donc ecrit dans wrielv
  149. if (melval.gt.0) then
  150. SEGACT,MELVAL
  151. IDAN (1) = VELCHE(/1)
  152. IDAN (2) = VELCHE(/2)
  153. IDAN (3) = IELCHE(/1)
  154. IDAN (4) = IELCHE(/2)
  155.  
  156. CALL ECDIFE(IOSAU,4,IDAN,IFORM)
  157. *
  158. * ... ECRITURE DU CONTENU DU SEGMENT MELVAL :
  159. *
  160. L1 = IDAN(1) * IDAN(2)
  161. L2 = IDAN(3) * IDAN(4)
  162. CALL ECDIFR(IOSAU,L1,VELCHE,IFORM)
  163. CALL ECDIFE(IOSAU,L2,IELCHE,IFORM)
  164. SEGDES,MELVAL
  165. endif
  166. 32 CONTINUE
  167. *
  168. SEGDES MCHAML
  169. 22 CONTINUE
  170. *
  171. SEGDES MCHELM
  172.  
  173. 10 CONTINUE
  174. *
  175. RETURN
  176. END
  177.  
  178.  
  179.  
  180.  
  181.  
  182.  
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  

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