Télécharger menage.eso

Retour à la liste

Numérotation des lignes :

  1. C MENAGE SOURCE PV 19/07/04 21:15:07 10249
  2. C SUPPRIMER LES SEGMENTS INDESIRABLES
  3. C
  4. SUBROUTINE MENAGE(IAUTOM)
  5. *
  6. IMPLICIT INTEGER(I-N)
  7. integer iautom
  8. integer icolac
  9. integer iplaob, iplaoc
  10. integer iretou
  11. integer nomlus
  12. -INC CCOPTIO
  13. -INC CCASSIS
  14. -INC CCNOYAU
  15. -INC SMELEME
  16. -INC SMTABLE
  17. -INC SMLENTI
  18. -INC SMCOORD
  19.  
  20. INTEGER NACTI
  21. INTEGER NTAACT
  22. INTEGER MACTIP
  23. INTEGER MTOTAP
  24. INTEGER MTOTA
  25. INTEGER MSEGMP
  26. INTEGER MACTI
  27.  
  28. SAVE NACTI
  29. SAVE NTAACT
  30. SAVE MACTIP
  31. SAVE MTOTAP
  32. SAVE MTOTA
  33. SAVE MSEGMP
  34. SAVE MACTI
  35. data nacti/0/
  36.  
  37. SEGMENT ITLAC(0)
  38. INTEGER OOOVAL
  39. *
  40. CHARACTER*4 CMOT
  41. REAL*8 XPLTOT
  42. *
  43. if (nacti.eq.0) then
  44. C place totale disponible
  45. XPLTOT=(1.D0*OOOVAL(1,3) * OOOVAL(1,4))/2.D0+OOOVAL(1,1)
  46. IPLTOT=INT(MIN(XPLTOT,2.D9))
  47. MTOTA=IPLTOT
  48. NACTI = OOOVAL(2,3)
  49. NTAACT = OOOVAL(3,3)
  50. C initialisations pour le non menage
  51. MACTIP = OOOVAL(3,3)
  52. MTOTAP = OOOVAL(3,1)
  53. MSEGMP = OOOVAL(2,1)
  54. MACTI = OOOVAL(1,1)
  55. endif
  56. segdes mcoord
  57. call lircha(cmot, 0,iretou)
  58. if( iretou.ne.0) then
  59. if( cmot .eq.'OBLI')go to 1
  60. call refus
  61. endif
  62. C autres criteres de menage :
  63. IFMEN=0
  64. C + de 10% de la memoire active depuis la derniere fois
  65. MACTIC=OOOVAL(3,3)
  66. IF (MACTIC-MACTIP.gt.MACTI*0.1) IFMEN=1
  67. C + de 20% de la memoire totale depuis la derniere fois
  68. MTOTAC=OOOVAL(3,1)
  69. IF (MTOTAC-MTOTAP.gt.MTOTA*0.20) IFMEN=2
  70. C + de 15% de la memoire active en memoire totale depuis la derniere fois
  71. IF (MTOTAC-MTOTAP.gt.MACTI*0.15) IFMEN=3
  72. C + de 100000 segments depuis la derniere fois
  73. MSEGMC=OOOVAL(2,1)
  74. IF (MSEGMC-MSEGMP.gt.32000*max(1,nbescr)) IFMEN=4
  75. IF (IFMEN.LE.0) RETURN
  76. if (iimpi.ne.0) write (6,*) 'menage ',ifmen
  77.  
  78.  
  79.  
  80. call chleha(1,0,0,0,0)
  81. 1 CONTINUE
  82. * horodatage
  83. call ooohor(0,0)
  84. SEGDES,IPILOC,mcoord
  85.  
  86. C * attention aux assistants ....
  87. if (NBESC.NE.0.and.imestr.ne.0) then
  88. if (iimpi .eq. 1234)
  89. & write(ioimp,*) ' il faut bloquer les assistants'
  90. mestra=imestr
  91. SEGACT MESTRA*MOD
  92. if (iimpi .eq. 1234)
  93. & write(ioimp,*) ' assistants en attente'
  94. * on passe en mode force
  95. call ooofrc(1)
  96. * lodesl=.true.
  97. call setass(1)
  98. end if
  99. call oooprl(1)
  100.  
  101. * on passe en mode force
  102. * on met NOMLU a 1 pour bloquer le decodage des instructions
  103. NOMLUS=NOMLU
  104. nomlu=1
  105. segini itlac
  106. call ecrcha('NOOP')
  107. call tasspo(itlac,icolac,meleme,1)
  108. segdes meleme
  109. *
  110. * icolac ,cree dans tasspo pointe sur les piles d'objets accessibles
  111. *
  112. CALL MENAG5(ICOLAC,0)
  113. *
  114. * QUELLE PLACE RESTE T'IL MAINTENANT
  115. IF(IIMPI.NE.0) write(IOIMP,12) mactip,mactic
  116. MACTIP=OOOVAL(3,3)
  117. MTOTAP=OOOVAL(3,1)
  118. MSEGMP=OOOVAL(2,1)
  119. 12 FORMAT( ' place occupée avant apres ',3I14)
  120. * CALL PLAC
  121. * CALL LIRENT(IPLRES,1,IRETOU)
  122. * EST-CE SUFFISANT ??
  123. * INTERR(1)=IPLRES
  124. * IF (IPLADE.NE.0.AND.IPLRES.LT.IPLADE) CALL ERREUR(436)
  125. * restauration de nomlu
  126. NOMLU=NOMLUS
  127. * retassement memoire y compris segment actifs
  128. * ?? call ooomta(lret,mtota)
  129.  
  130. C * attention aux assistants ....
  131. if (NBESC.NE.0.and.imestr.ne.0) then
  132. C * il faut liberer le segment de dialogue
  133. mestra=imestr
  134. * repasser en mode normal
  135. call ooofrc(0)
  136. SEGDES MESTRA
  137. * lodesl=.false.
  138. call setass(0)
  139. end if
  140. C JYY
  141. SEGDES MCOORD
  142. segact ipiloc
  143. call oooprl(0)
  144. END
  145.  
  146.  
  147.  
  148.  
  149.  
  150.  
  151.  
  152.  
  153.  
  154.  
  155.  
  156.  
  157.  
  158.  
  159.  
  160.  
  161.  
  162.  
  163.  
  164.  
  165.  
  166.  
  167.  
  168.  
  169.  
  170.  
  171.  

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