Télécharger fillpo.eso

Retour à la liste

Numérotation des lignes :

fillpo
  1. C FILLPO SOURCE PV090527 24/01/16 21:15:02 11824
  2. SUBROUTINE FILLPO (ICOLAC,MTY)
  3. IMPLICIT INTEGER(I-N)
  4. IMPLICIT REAL*8(A-H,O-Z)
  5. C-----------------------------------------------------------------
  6. C A PARTIR DE TOUS LES TYPES EXISTANTS REMPLIT LES PILES
  7. C CONNUES ET TRAITEES PAR TYPFIL
  8. C ENTREE: MTY POINTEUR SUR LE SEGMENT DES TYPES A TRAITER
  9. C LES PILES DOIVENT AVOIR ETE CREES ET INITIALISEES AUPARAVANT
  10. C APPELE PAR : SAUV
  11. C APPELLE : REPERT AJOUN ERREUR
  12. C-----------------------------------------------------------------
  13.  
  14. -INC PPARAM
  15. -INC CCOPTIO
  16. -INC TMLCHA8
  17. -INC TMCOLAC
  18. -INC CCASSIS
  19. -INC SMBLOC
  20. -INC CCNOYAU
  21. common/pil/itabb
  22. SEGMENT ILISBB
  23. INTEGER ILISOB(MLON)
  24. ENDSEGMENT
  25. DIMENSION IBID(1)
  26. CHARACTER*(1) CHARIN
  27. LOGICAL LOGIN
  28. REAL*8 XVA
  29. CHARACTER*(8) MTYP
  30. C---------------------------------------------------------------------
  31. MLCHA8=MTY
  32. SEGACT MLCHA8
  33. IN=MLCHAR(/2)
  34.  
  35. C---- S'il n'y a rien dans MLCHA8 on s'en va
  36. IF (IN.EQ.0) GO TO 8
  37.  
  38. IF (IIMPI.EQ.5) WRITE(IOIMP,800)(MLCHAR(I),I=1,IN)
  39. 800 FORMAT (' LISTE DES TYPES A SAUVER',/(2X,A8))
  40.  
  41. SEGACT ICOLAC
  42. itabb=kcola(39)
  43. ILISSE=ILISSF
  44. SEGACT ILISSE*MOD
  45. ILISSE=ILISSP
  46. SEGACT ILISSE*MOD
  47. ILISSE=ILISSG
  48. SEGACT ILISSE*MOD
  49. CALL LISTOB(MTYP,MLON,IBID,0)
  50. SEGINI ILISBB
  51. C---- IN = taille du tableau des types dans MLCHAR
  52. DO 3 II=1,IN
  53.  
  54. MTYP=MLCHAR(II)
  55.  
  56. IF (IIMPI.EQ.5) WRITE(IOIMP,101) MTYP
  57.  
  58. K=0
  59. CALL TYPFIL (MTYP,K)
  60.  
  61. C------- Si MTYP = ' ' ou un type inconnu par TYPFIL, K devient -NPOSSI
  62. C dans ce cas la, on va traiter le suivant
  63. IF (K.LE.0) THEN
  64. C --------- ICI UN WRITE PILE NON TRAITEE
  65. MOTERR(1:8)=MLCHAR(II)
  66. GO TO 3
  67. ENDIF
  68.  
  69. C ------ Sinon :
  70. 7 CONTINUE
  71. CALL LISTOB(MTYP,ITITI,ILISOB,1)
  72. IF (ITITI.EQ.0) GO TO 3
  73. ITLACC=KCOLA(K)
  74. NUMLIS=1
  75. ilissd=ilisse
  76. ITYP=K
  77. IF(ITYP.EQ.24) NUMLIS=6
  78. IF(ITYP.EQ.25) then
  79. NUMLIS=3
  80. ilissd=ilissf
  81. ENDIF
  82. IF(ITYP.EQ.26) NUMLIS=2
  83. IF(ITYP.EQ.27) NUMLIS=5
  84. IF(ITYP.EQ.32) then
  85. NUMLIS=3
  86. ilissd=ilissp
  87. ENDIF
  88. IF(ITYP.EQ.36) NUMLIS=7
  89. DO 10 I=1,ITITI
  90. IOBVAL=ILISOB(I)
  91. IF(IIMPI.EQ.5) WRITE(IOIMP,102) MTYP,IOBVAL
  92. *
  93. * cas particulier des procedures non deja decodée
  94. IF(ITYP.EQ.36.AND.IOBVAL.LE.0) GO TO 10
  95. C---------- Rajoute l'objet IOBVAL sur la pile ITLACC s'il n'y est pas encore
  96. C La valeur IOBVAL en sortie contient son numero sur la pile, elle
  97. C est ici ignoree
  98. CALL AJOUN (ITLACC,IOBVAL,ILISSd,NUMLIS)
  99. 10 CONTINUE
  100. C
  101. 3 CONTINUE
  102. * la liste des objets esclaves s'obtient en plus a partir des mesins
  103. CALL TYPFIL ('ESCLAVE ',K)
  104. CALL TYPFIL ('LISTMOTS',K1)
  105. * write (6,*) ' fillpo numero de la pile esclave ',k
  106. itlac2=kcola(k)
  107. itlac1=kcola(k1)
  108. if (nbesc.ne.0) then
  109. do 20 ith=0,nbesc
  110. mesins=mescl(ith)
  111. if (mesins.eq.0) goto 20
  112. segact mesins*mod
  113. do 30 ins=0,nbins
  114. if (ins.eq.0) then
  115. mescla=inscou
  116. if (mescla.eq.0) goto 30
  117. else
  118. mescla=lismes(ins)
  119. endif
  120. segact mescla
  121. mlmot1=jpcar1
  122. numlis=1
  123. if (mlmot1.ne.0) call ajoun(itlac1,mlmot1,ilisse,numlis)
  124. do 40 ies=1,100
  125. if (esrees(ies).eq.0) goto 40
  126. mesres=esrees(ies)
  127. numlis=1
  128. * write (6,*) ' fillp2 ajout de l esclave ',mesres
  129. call ajoun(itlac2,mesres,ilisse,numlis)
  130. 40 continue
  131. * il faut aussi rajouter les objet contenus dans les instructions en attente sur
  132. * les esclaves
  133. do 50 iop=1,100
  134. if (esoplu(iop)) goto 50
  135. mtyp=esopty(iop)
  136. K=0
  137. CALL TYPFIL (MTYP,K)
  138. IF (K.LE.0) THEN
  139. C --------- ICI UN WRITE PILE NON TRAITEE
  140. MOTERR(1:8)=MLCHAR(II)
  141. GO TO 8
  142. ENDIF
  143. ITLACC=KCOLA(K)
  144. NUMLIS=1
  145. ilissd=ilisse
  146. ITYP=K
  147. IF(ITYP.EQ.24) NUMLIS=6
  148. IF(ITYP.EQ.25) then
  149. NUMLIS=3
  150. ilissd=ilissf
  151. endif
  152. IF(ITYP.EQ.26) NUMLIS=2
  153. IF(ITYP.EQ.27) NUMLIS=5
  154. IF(ITYP.EQ.32) then
  155. NUMLIS=3
  156. ilissd=ilissp
  157. endif
  158. IF(ITYP.EQ.36) NUMLIS=7
  159. * logique
  160. IF(ITYP.EQ.24) goto 50
  161. * flottant
  162. IF(ITYP.EQ.25) goto 50
  163. * entier
  164. IF(ITYP.EQ.26) goto 50
  165. * mot
  166. IF(ITYP.EQ.27) goto 50
  167. iobval=esopva(iop)
  168. * write (6,*) ' fillpo instruction contient ', mtyp,iobval
  169. CALL AJOUN (ITLACC,IOBVAL,ILISSD,NUMLIS)
  170. 50 continue
  171. segdes mescla
  172. 30 continue
  173. segdes mesins*record
  174. 20 continue
  175. endif
  176. * rajouter les blocs actifs
  177. itlacc=kcola(37)
  178. mblo1=mbloc
  179. numlis=1
  180. 90 continue
  181. if (mblo1.ne.0) then
  182. segact mblo1*mod
  183. ** write(6,*) ' ajout du bloc ',mblo1
  184. iobval=mblo1
  185. call ajoun(itlacc,iobval,ilisse,numlis)
  186. if(mblo1.ne.mblo1.mblsup) then
  187. mblo1=mblo1.mblsup
  188. goto 90
  189. endif
  190. endif
  191.  
  192.  
  193.  
  194. SEGSUP ILISBB
  195. * SEGDES ILISSE
  196. SEGDES ICOLAC
  197. 8 SEGDES MLCHA8
  198. RETURN
  199. C -------------------------------------
  200. 102 FORMAT(1X,8(1X,A8,I15))
  201. 101 FORMAT (/,' OBJETS DE TYPE ',A8)
  202. END
  203.  
  204.  
  205.  
  206.  
  207.  
  208.  
  209.  
  210.  
  211.  
  212.  
  213.  
  214.  
  215.  
  216.  
  217.  
  218.  
  219.  
  220.  
  221.  
  222.  

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