Télécharger borner.eso

Retour à la liste

Numérotation des lignes :

borner
  1. C BORNER SOURCE CB215821 21/03/03 21:15:01 10910
  2.  
  3. ************************************************************************
  4. * *
  5. * OPERATEUR BORN(ER) *
  6. * *
  7. ************************************************************************
  8.  
  9. SUBROUTINE BORNER
  10.  
  11. IMPLICIT INTEGER(I-N)
  12. IMPLICIT REAL*8(A-H,O-Z)
  13.  
  14.  
  15. -INC PPARAM
  16. -INC CCOPTIO
  17. -INC SMLMOTS
  18. -INC SMLENTI
  19. -INC SMLREEL
  20. -INC SMCHPOI
  21. -INC SMCHAML
  22.  
  23. PARAMETER (NMOT = 3)
  24. CHARACTER*(4) LMOT(NMOT)
  25. CHARACTER*(LOCOMP) MOTC
  26.  
  27. DATA LMOT / 'MAXI','MINI','COMP' /
  28.  
  29. IPOBJ = 0
  30. ITOBJ = 0
  31.  
  32. * ===
  33. * 1 - Lecture de l'objet a borner
  34. * ===
  35. * LISTENTI
  36. 1 CONTINUE
  37. CALL LIROBJ('LISTENTI',IPOBJ,0,IRETOU)
  38. IF (IERR.NE.0) RETURN
  39. IF (IRETOU.EQ.0) GOTO 2
  40. MLENTI=IPOBJ
  41. SEGACT,MLENTI
  42. ITOBJ = 1
  43. GOTO 100
  44. * LISTREEL
  45. 2 CONTINUE
  46. CALL LIROBJ('LISTREEL',IPOBJ,0,IRETOU)
  47. IF (IERR.NE.0) RETURN
  48. IF (IRETOU.EQ.0) GOTO 3
  49. MLREEL=IPOBJ
  50. SEGACT,MLREEL
  51. ITOBJ = 2
  52. GOTO 100
  53. * EVOLUTION
  54. 3 CONTINUE
  55. CALL LIROBJ('EVOLUTIO',IPOBJ,0,IRETOU)
  56. IF (IERR.NE.0) RETURN
  57. IF (IRETOU.EQ.0) GOTO 4
  58. CALL ACTOBJ('EVOLUTIO',IPOBJ,1)
  59. ITOBJ = 3
  60. GOTO 100
  61. * CHPOINT
  62. 4 CONTINUE
  63. CALL LIROBJ('CHPOINT ',IPOBJ,0,IRETOU)
  64. IF (IERR.NE.0) RETURN
  65. IF (IRETOU.EQ.0) GOTO 5
  66. CALL ACTOBJ('CHPOINT ',IPOBJ,1)
  67. CALL NBCOMP(IPOBJ,'CHPOINT ',NBCO)
  68. IF(NBCO .EQ. 0)THEN
  69. C Pour l'instant erreur pour les objets vides
  70. MOTERR='CHPOINT'
  71. INTERR= IPOBJ
  72. CALL ERREUR(356)
  73. RETURN
  74. ENDIF
  75. ITOBJ = 4
  76. GOTO 100
  77. * MCHAML
  78. 5 CONTINUE
  79. CALL LIROBJ('MCHAML ',IPOBJ,0,IRETOU)
  80. IF (IERR.NE.0) RETURN
  81. IF (IRETOU.EQ.0) GOTO 6
  82. CALL ACTOBJ('MCHAML ',IPOBJ,1)
  83. CALL NBCOMP(IPOBJ,'MCHAML ',NBCO)
  84. IF(NBCO .EQ. 0)THEN
  85. C Pour l'instant erreur pour les objets vides
  86. MOTERR='MCHAML'
  87. INTERR= IPOBJ
  88. CALL ERREUR(356)
  89. RETURN
  90. ENDIF
  91. ITOBJ = 5
  92. GOTO 100
  93. * TYPE NON RECONNU ACTUELLEMENT
  94. 6 CONTINUE
  95. CALL QUETYP(MOTERR(1:8),0,IRETOU)
  96. IF (IRETOU.EQ.0) THEN
  97. CALL ERREUR(533)
  98. ELSE
  99. CALL ERREUR(39)
  100. ENDIF
  101. RETURN
  102. C* GOTO 100
  103.  
  104. * ===
  105. * 2 - Lecture de l'operation a realiser et la(les) borne(s) associee(s)
  106. * ===
  107. 100 CONTINUE
  108. * Quelques initialisations
  109. IF (ITOBJ.EQ.3 .OR. ITOBJ.EQ.4 .OR. ITOBJ.EQ.5) THEN
  110. IF (ITOBJ.EQ.3) THEN
  111. JG = 10
  112. SEGINI,MLENTI
  113. C* ELSEIF(ITOBJ.EQ.4 .OR. ITOBJ.EQ.5) THEN
  114. ELSE
  115. C Cas des CHPOINTS et MCHAMLS
  116. JGN = LOCOMP
  117. JG = NBCO
  118. JGM = JG
  119. SEGINI,MLMOTS
  120. ENDIF
  121. SEGINI,MLENT1,MLREE1,MLREE2
  122. ENDIF
  123. *
  124. ICOMP = 0
  125. ILCOND = 1
  126. 110 CONTINUE
  127. IF (ITOBJ.EQ.3) THEN
  128. CALL LIRENT(I1,ILCOND,IRETOU)
  129. IF (IERR.NE.0) GOTO 900
  130. IF (IRETOU.EQ.0) GOTO 200
  131. ICOMP = ICOMP + 1
  132. IF (ICOMP.GT.JG) THEN
  133. JG = JG + 10
  134. SEGADJ,MLENTI,MLENT1
  135. SEGADJ,MLREE1,MLREE2
  136. ENDIF
  137. LECT(ICOMP) = I1
  138.  
  139. ELSEIF(ITOBJ.EQ.4 .OR. ITOBJ.EQ.5) THEN
  140. C Cas des CHPOINTS et MCHAMLS
  141.  
  142. C Lecture optionnelle du nom de la composante
  143. CALL LIRCHA(MOTC,0,IRETOU)
  144. IF (IERR .NE.0) GOTO 900
  145.  
  146. IF (IRETOU.EQ.0) THEN
  147. C On n'a plus rien a lire normalement on va faire le travail
  148. GOTO 200
  149. ELSE
  150. CALL PLACE(LMOT,NMOT,IMOT,MOTC(1:4))
  151. IF(IMOT .NE. 0)THEN
  152. C On n'a pas lu de nom de composante mais le mot cle suivant ==> REFUS
  153. CALL REFUS
  154. IF (NBCO .EQ. 1)THEN
  155. C On prend la seule composante du CHAMP sans poser de question
  156. IF (ITOBJ.EQ.4)THEN
  157. C Cas des CHPOINTS
  158. MCHPOI=IPOBJ
  159. MSOUPO=MCHPOI.IPCHP(1)
  160. MOTC =MSOUPO.NOCOMP(1)
  161. ELSEIF(ITOBJ.EQ.5)THEN
  162. C Cas des MCHAMLS
  163. MCHELM=IPOBJ
  164. MCHAML=MCHELM.ICHAML(1)
  165. MOTC =MCHAML.NOMCHE(1)
  166. ELSE
  167. CALL ERREUR(5)
  168. ENDIF
  169. ELSE
  170. C On demande quelle composante==> ERREUR
  171. INTERR(1)=NBCO
  172. CALL ERREUR(761)
  173. RETURN
  174. ENDIF
  175. ENDIF
  176. ENDIF
  177.  
  178. ICOMP = ICOMP + 1
  179. IF (ICOMP.GT.NBCO) THEN
  180. IF (ITOBJ.EQ.4)THEN
  181. C Cas des CHPOINTS
  182. MOTERR='CHPOINT'
  183. ELSEIF(ITOBJ.EQ.5)THEN
  184. C Cas des MCHAMLS
  185. MOTERR='MCHAML'
  186. ELSE
  187. CALL ERREUR(5)
  188. ENDIF
  189. CALL ERREUR(980)
  190. RETURN
  191. ENDIF
  192. MOTS(ICOMP) = MOTC
  193. ENDIF
  194.  
  195. CALL LIRMOT(LMOT,NMOT,IMOT,1)
  196. IF (IERR.NE.0) GOTO 900
  197.  
  198. IF (ITOBJ.EQ.1) THEN
  199. IMIN = 0
  200. IMAX = 0
  201. CALL LIRENT(I1,1,IRETOU)
  202. IF (IERR.NE.0) GOTO 900
  203. IF (IMOT.EQ.1) THEN
  204. IMAX = I1
  205. ELSEIF(IMOT.EQ.2) THEN
  206. IMIN = I1
  207. ELSEIF(IMOT.EQ.3) THEN
  208. IMIN = I1
  209. CALL LIRENT(IMAX,1,IRETOU)
  210. IF (IERR.NE.0) GOTO 900
  211. IF (IMAX.LT.IMIN) THEN
  212. IMIN = IMAX
  213. IMAX = I1
  214. ENDIF
  215. ELSE
  216. CALL ERREUR(5)
  217. ENDIF
  218.  
  219. ELSE
  220. XMIN = 0.
  221. XMAX = 0.
  222. CALL LIRREE(X1,1,IRETOU)
  223. IF (IERR.NE.0) GOTO 900
  224. IF (IMOT.EQ.1) THEN
  225. XMAX = X1
  226. ELSEIF(IMOT.EQ.2) THEN
  227. XMIN = X1
  228. ELSEIF(IMOT.EQ.3) THEN
  229. XMIN = X1
  230. CALL LIRREE(XMAX,1,IRETOU)
  231. IF (IERR.NE.0) GOTO 900
  232. IF (XMAX.LT.XMIN) THEN
  233. XMIN = XMAX
  234. XMAX = X1
  235. ENDIF
  236. ELSE
  237. CALL ERREUR(5)
  238. ENDIF
  239. ENDIF
  240.  
  241. IF (ITOBJ.EQ.3 .OR. ITOBJ.EQ.4 .OR. ITOBJ.EQ.5) THEN
  242. MLENT1.LECT(ICOMP) = IMOT
  243. MLREE1.PROG(ICOMP) = XMIN
  244. MLREE2.PROG(ICOMP) = XMAX
  245. ILCOND = 0
  246. GOTO 110
  247. ENDIF
  248.  
  249. * ===
  250. * 3 - Realisation des operations demandees
  251. * ===
  252. 200 CONTINUE
  253. IPRES = 0
  254.  
  255. IF (ITOBJ.EQ.3 .OR. ITOBJ.EQ.4 .OR. ITOBJ.EQ.5) THEN
  256. IF (ICOMP.NE.JG) THEN
  257. JG = ICOMP
  258. SEGADJ,MLENT1
  259. SEGADJ,MLREE1,MLREE2
  260. IF (ITOBJ.EQ.3) THEN
  261. SEGADJ,MLENTI
  262. ELSEIF(ITOBJ.EQ.4 .OR. ITOBJ.EQ.5) THEN
  263. JGM = JG
  264. SEGADJ,MLMOTS
  265. ELSE
  266. CALL ERREUR(5)
  267. ENDIF
  268. ENDIF
  269. ENDIF
  270.  
  271. IF (ITOBJ .EQ. 1) THEN
  272. CALL BORNE1(IPOBJ,IMOT,IMIN,IMAX,IPRES)
  273. IF (IPRES.NE.0) CALL ECROBJ('LISTENTI',IPRES)
  274.  
  275. ELSEIF(ITOBJ .EQ. 2) THEN
  276. CALL BORNE2(IPOBJ,IMOT,XMIN,XMAX,IPRES)
  277. IF (IPRES.NE.0) CALL ECROBJ('LISTREEL',IPRES)
  278.  
  279. ELSEIF(ITOBJ .EQ. 3) THEN
  280. CALL BORNE3(IPOBJ,MLENTI,MLENT1,MLREE1,MLREE2,IPRES)
  281. IF (IPRES.NE.0) CALL ECROBJ('EVOLUTIO',IPRES)
  282.  
  283. ELSEIF(ITOBJ .EQ. 4) THEN
  284. CALL BORNE4(IPOBJ,MLMOTS,MLENT1,MLREE1,MLREE2,IPRES)
  285. IF (IPRES.NE.0) THEN
  286. CALL ACTOBJ('CHPOINT ',IPRES,1)
  287. CALL ECROBJ('CHPOINT ',IPRES)
  288. ENDIF
  289.  
  290. ELSEIF(ITOBJ .EQ. 5) THEN
  291. CALL BORNE5(IPOBJ,MLMOTS,MLENT1,MLREE1,MLREE2,IPRES)
  292. IF (IPRES.NE.0) THEN
  293. CALL ACTOBJ('MCHAML ',IPRES,1)
  294. CALL ECROBJ('MCHAML ',IPRES)
  295. ENDIF
  296.  
  297. ELSE
  298. CALL ERREUR(5)
  299. ENDIF
  300.  
  301. * ===
  302. * 4 - Menage des objets temporaires
  303. * ===
  304. 900 CONTINUE
  305. IF (ITOBJ.EQ.3 .OR. ITOBJ.EQ.4 .OR. ITOBJ.EQ.5) THEN
  306. IF (ITOBJ.EQ.3) THEN
  307. SEGSUP,MLENTI
  308. ELSEIF(ITOBJ.EQ.4 .OR. ITOBJ.EQ.5) THEN
  309. SEGSUP,MLMOTS
  310. ENDIF
  311. SEGSUP,MLENT1,MLREE1,MLREE2
  312. ENDIF
  313.  
  314. END
  315.  
  316.  

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