Télécharger ecchar.eso

Retour à la liste

Numérotation des lignes :

ecchar
  1. C ECCHAR SOURCE PASCAL 22/06/24 21:15:03 11393
  2.  
  3. SUBROUTINE ECCHAR(MCHARG,jentet)
  4.  
  5. C ===================================================================
  6. C = ECRITURE D'UN OBJET CHARGEMENT =
  7. C = =
  8. C = CREATION : 15/10/85 =
  9. C = PROGRAMMEUR : GUILBAUD =
  10. C = EXTENSION : 11/97 =
  11. C = PROGRAMMEUR : KICHENIN =
  12. C ===================================================================
  13.  
  14. IMPLICIT INTEGER(I-N)
  15. IMPLICIT REAL*8(A-H,O-Z)
  16.  
  17.  
  18. -INC PPARAM
  19. -INC CCOPTIO
  20.  
  21. -INC SMCHARG
  22. -INC SMLREEL
  23. -INC SMCOORD
  24.  
  25. SEGACT,MCHARG
  26. NCHAR =KCHARG(/1)
  27. INTERR(1)=MCHARG
  28. INTERR(2)=NCHAR
  29.  
  30. * CHARGEMENT de pointeur %i1 qui contient %i2 chargement(s) élémentaire(s)
  31.  
  32. WRITE(IOIMP,*) ' '
  33. CALL ERREUR(-111)
  34. WRITE(IOIMP,*) ' '
  35. DO 100 N=1,NCHAR
  36. ICHARG=KCHARG(N)
  37. SEGACT ICHARG
  38. IF((CHATYP.EQ.'CHPOINT ').OR.(CHATYP.EQ.'MCHAML ')) THEN
  39. INTERR(1)=N
  40. MOTERR(1:4) = CHANOM(N)
  41. MOTERR(5:8) = CHALIE(N)
  42. MOTERR(9:12) = CHAMOB(N)
  43.  
  44. * Chargement élémentaire %i1 : nom %m1:4 , nature %m5:8, deplacement %m9:12
  45. * Description spatiale :
  46.  
  47. WRITE(IOIMP,*) ' '
  48. CALL ERREUR(-112)
  49. IF(CHATYP.EQ.'CHPOINT ') THEN
  50. IBICHP=ICHPO1
  51. CALL ECCHPO(IBICHP,jentet)
  52. ELSEIF(CHATYP.EQ.'MCHAML ') THEN
  53. IBICHP=ICHPO1
  54. CALL ZPCHEL(IBICHP,jentet)
  55. ENDIF
  56.  
  57. * Description temporelle :
  58.  
  59. WRITE(IOIMP,*) ' '
  60. CALL ERREUR(-113)
  61. MLREEL=ICHPO2
  62.  
  63. * Chargement constant
  64. IF (ICHPO2.EQ.0) THEN
  65. CALL ERREUR(-374)
  66. ELSE
  67. SEGACT MLREEL
  68. N1=PROG(/1)
  69. INTERR(1)=N1
  70. INTERR(2)=MLREEL
  71.  
  72. * Listreel des temps de pointeur %i2 qui contient les %i1 temps suivants :
  73.  
  74. CALL ERREUR(-114)
  75. IF(jentet.EQ.1) n1 = MIN(n1,10)
  76. IF(N1.NE.0) WRITE(IOIMP,5)(PROG(J),J=1,N1)
  77. 5 FORMAT(5X,10(1X,1PE12.5))
  78. SEGDES MLREEL
  79. MLREEL=ICHPO3
  80. SEGACT MLREEL
  81. N1=PROG(/1)
  82. INTERR(1)=MLREEL
  83. INTERR(2)=N1
  84.  
  85. * Listreel de la fonction de pointeur %i1 qui contient les %i2 valeurs :
  86.  
  87. WRITE(IOIMP,*) ' '
  88. CALL ERREUR(-115)
  89. if(jentet.eq.1) n1 = min (n1,10)
  90. IF(N1.NE.0) WRITE(IOIMP,5)(PROG(J),J=1,N1)
  91. WRITE(IOIMP,*) ' '
  92. SEGDES MLREEL
  93. ENDIF
  94.  
  95. ELSEIF (CHATYP.EQ.'TABLE ') THEN
  96. INTERR(1)=N
  97. MOTERR(1:4) = CHANOM(N)
  98. MOTERR(5:8) = CHALIE(N)
  99. MOTERR(9:12) = CHAMOB(N)
  100.  
  101. * Chargement élémentaire %i1 : nom %m1:4 , nature %m5:8, deplacement %m9:12
  102. * Première table :
  103.  
  104. CALL ERREUR(-294)
  105. WRITE(IOIMP,*) ' '
  106. IBITAB = ICHPO1
  107. CALL ECTABL(IBITAB)
  108.  
  109. * Deuxième table :
  110.  
  111. WRITE(IOIMP,*) ' '
  112. CALL ERREUR(-295)
  113. WRITE(IOIMP,*) ' '
  114. IBITAB = ICHPO2
  115. CALL ECTABL(IBITAB)
  116. WRITE(IOIMP,*) ' '
  117.  
  118. ELSEIF (CHATYP.EQ.'LISTOBJE') THEN
  119. INTERR(1)=N
  120. MOTERR(1:4) = CHANOM(N)
  121. MOTERR(5:8) = CHALIE(N)
  122. MOTERR(9:12) = CHAMOB(N)
  123.  
  124. * Listreel :
  125. CALL ERREUR(-113)
  126. ILRE1 = ICHPO2
  127. CALL ECLRE1(ILRE1,JENTET)
  128.  
  129. * Listobje :
  130. CALL ERREUR(-384)
  131. ILOB1 = ICHPO1
  132. CALL ECLOBJ(ILOB1,JENTET)
  133.  
  134. ELSE
  135. C Cas impossible a priori
  136. CALL ERREUR(5)
  137. RETURN
  138. ENDIF
  139.  
  140. c------------------ description du deplacement optionnel -------------
  141. * Deplacement de type %m1:11 defini par
  142. IF (CHAMOB(N).EQ.'TRAN'.OR.CHAMOB(N).EQ.'ROTA'
  143. & .OR.CHAMOB(N).EQ.'TRAJ') THEN
  144. IF (CHAMOB(N).EQ.'TRAN') MOTERR(1:11) = 'TRANSLATION'
  145. IF (CHAMOB(N).EQ.'ROTA') MOTERR(1:11) = 'ROTATION '
  146. IF (CHAMOB(N).EQ.'TRAJ') MOTERR(1:11) = 'TRAJECTOIRE'
  147. CALL ERREUR(-323)
  148. WRITE(IOIMP,*) ' '
  149.  
  150. IF ((CHAMOB(N).EQ.'TRAN').OR.(CHAMOB(N).EQ.'ROTA')) THEN
  151. * LISTE D'UN POINT
  152. SEGACT MCOORD
  153. IB=ICHPO4
  154. IB = IPTPOI(IB)
  155. ID=(IDIM+1)*(IB-1)
  156. INTERR(1)=IB
  157. REAERR(1)=XCOOR(ID+1)
  158. REAERR(2)=XCOOR(ID+2)
  159. REAERR(3)=XCOOR(ID+3)
  160. if (idim.eq.3) REAERR(4)=XCOOR(ID+4)
  161. IF (IDIM.EQ.2) CALL ERREUR(-7)
  162. IF (IDIM.EQ.3) CALL ERREUR(-8)
  163. WRITE(IOIMP,*) ' '
  164.  
  165. IF((IDIM.EQ.3).AND.(CHAMOB(N).EQ.'ROTA')) THEN
  166. IB=ICHPO5
  167. IB = IPTPOI(IB)
  168. ID=(IDIM+1)*(IB-1)
  169. INTERR(1)=IB
  170. REAERR(1)=XCOOR(ID+1)
  171. REAERR(2)=XCOOR(ID+2)
  172. REAERR(3)=XCOOR(ID+3)
  173. REAERR(4)=XCOOR(ID+4)
  174. CALL ERREUR(-8)
  175. WRITE(IOIMP,*) ' '
  176. ENDIF
  177.  
  178. * Description vitesse :
  179. CALL ERREUR(-324)
  180. WRITE(IOIMP,*) ' '
  181. MLREEL=ICHPO6
  182. SEGACT MLREEL
  183. N1=PROG(/1)
  184. INTERR(1)=N1
  185. INTERR(2)=MLREEL
  186.  
  187. * Listreel de pointeur %i2 qui contient les %i1 temps :
  188. CALL ERREUR(-114)
  189. if(jentet.eq.1) n1 = min (n1,10)
  190. IF(N1.NE.0) WRITE(IOIMP,5)(PROG(J),J=1,N1)
  191. SEGDES MLREEL
  192. MLREEL=ICHPO7
  193. SEGACT MLREEL
  194. N1=PROG(/1)
  195. INTERR(1)=MLREEL
  196. INTERR(2)=N1
  197.  
  198. * Listreel de pointeur %i1 qui contient les %i2 valeurs :
  199. WRITE(IOIMP,*) ' '
  200. CALL ERREUR(-115)
  201. IF(N1.NE.0) WRITE(IOIMP,5)(PROG(J),J=1,N1)
  202. WRITE(IOIMP,*) ' '
  203. SEGDES MLREEL
  204.  
  205. ELSE IF (CHAMOB(N).EQ.'TRAJ') THEN
  206. * Trajectoire decrite par le CHPOINT
  207. CALL ERREUR(-325)
  208. WRITE(IOIMP,*) ' '
  209. IBICHP=ICHPO4
  210. CALL ECCHPO(IBICHP,jentet)
  211. ELSE
  212. ENDIF
  213. ENDIF
  214.  
  215. SEGDES ICHARG
  216. 100 CONTINUE
  217. SEGDES MCHARG
  218.  
  219. RETURN
  220. END
  221.  
  222.  
  223.  
  224.  
  225.  

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