Télécharger oooin1.eso

Retour à la liste

Numérotation des lignes :

oooin1
  1. C OOOIN1 SOURCE PV090527 26/04/24 08:23:10 12524
  2. SUBROUTINE OOOIN1 (LRET,IP2,IP1)
  3. C--------------------------------------------------------------------
  4. C
  5. C SEGINI , P = Q
  6. C
  7. C ->LRET 1 PLUS DE PLACE MEMOIRE
  8. C 2 OK
  9. C
  10. C ->IP2 POINTEUR DESIGNANT LE SEGMENT CREE
  11. C IP1 POINTEUR DESIGNANT LE SEGMENT EMETTEUR
  12. C
  13. C PROGRAMMEUR : MOUGIN
  14. C CREE : 19/12/88 POUR LA FAMILLE : OOOW..
  15. C
  16. C--------------------------------------------------------------------
  17. C
  18. %INC IOOADR
  19. %INC IOOADZ
  20. %INC IOODES
  21. %INC IOOSGM
  22. %INC IOOWCOM
  23. C
  24. POINTEUR IP2.IDE , IP1.IDE , ID1.IDE
  25. C
  26. nth=0
  27. if (thread) nth=oothrd
  28. call ooodeq(nth)
  29. C call ooosuq(nth)
  30. ID1 = IP1
  31. LFLAG = 0
  32. C
  33. C****** ON ACTIVE LE SEGMENT A COPIER APRES AVOIR SAUVEGARDE LES
  34. C INFORMATIONS DU DESCRIPTEUR
  35. C
  36. 100 MAXDEF=MZJSM(DEF)
  37. MXACTS=MZJSS(MAXACTIF)
  38. MXACTM=MZJSM(MAXACTIF)
  39. C
  40. ITRK = MDTRK(ID1)
  41. ITYP = MDTYP(ID1)
  42. IDISK = MDDISK(ITYP)
  43. IQUEU = MDQUEU(ITYP)
  44. IETAT = MDETAT(ITYP)
  45. ILEN = MDLEN(ID1)
  46. LRET=2
  47. IF (MDTYP(ID1).NE.MDACT) then
  48. CALL OOOACT (LRET,ID1,1)
  49. endif
  50. IF (LRET.EQ.1) RETURN
  51. C
  52. C****** LE SEGMENT ETAIT GROS ET SUR DISQUE?
  53. C LE SEGMENT EN MEMOIRE SERA LA COPIE
  54. C
  55. IF (IDISK.EQ.MDDISQUE .AND. MDCAT(ITYP).EQ.MDISOLE) THEN
  56. IDE=0
  57. CALL OOOINI (LRET,IDE,MSLSM-(MSLCZ))
  58. IF (LRET.EQ.1) RETURN
  59. ISG=MDISG(IDE)
  60. LSG=MSLS1(ISG)
  61. IS1=MDISG(ID1)
  62. LS1=MSLS1(IS1)
  63. C RECTIFIE LES STATISTIQUES
  64. MZJSM(ACTUEL)=MZJSM(ACTUEL)+(LS1-LSG)
  65. MZJSM(DEF)=MAX0(MZJSM(ACTUEL),MAXDEF)
  66. IF (IDISK.EQ.MDMEM .AND. IETAT.EQ.MDACT) THEN
  67. MZJSM(ACTACTIF)=MZJSM(ACTACTIF)+LS1-LSG
  68. ELSE
  69. MZJSS(ACTACTIF)=MZJSS(ACTACTIF)-1
  70. MZJSM(ACTACTIF)=MZJSM(ACTACTIF)-LSG
  71. ENDIF
  72. MZJSS(MAXACTIF)=MAX0(MZJSS(ACTACTIF),MXACTS)
  73. MZJSM(MAXACTIF)=MAX0(MZJSM(ACTACTIF),MXACTM)
  74. C ON FAIT POINTER LE SEGMENT IDE SUR LA COPIE MEMOIRE DU SEGMENT
  75. C ID1
  76. MDCH0 , IDE
  77. CALL OOOMSU (IZA,ISG,LSG)
  78. MDCH0 , ID1
  79. MDISG(IDE) = IS1
  80. MSIDE(IS1) = IDE
  81. IDEA=MDACHN(ACTIF)
  82. MDCHNP, IDEA(IDE)
  83. C ON RESTAURE LE DESCRIPTEUR DU SEGMENT ID1
  84. MDTYP(ID1)=ITYP
  85. MDLEN(ID1)=ILEN
  86. MDTRK(ID1)=ITRK
  87. C
  88. C****** SINON ON PREND LA COPIE DU SEGMENT EN MEMOIRE
  89. C
  90. ELSE
  91. IF (LFLAG.EQ.1) THEN
  92. CALL OOOSUP (LRET,IDE,0)
  93. IF (LRET.EQ.1) RETURN
  94. ENDIF
  95. LSG=MSLS1(MDISG(ID1))-(MSLCZ)
  96. IDE=0
  97. CALL OOOINI (LRET,IDE,LSG)
  98. IF (LRET.EQ.1) RETURN
  99.  
  100. C SI LE SEGMENT EST REPARTI SUR DISQUE ,ON RECOMMENCE
  101.  
  102. ITYPX=MDTYP(ID1)
  103. IF (MDDISK(ITYPX).EQ.MDDISQUE) THEN
  104. LFLAG=1
  105. GO TO 100
  106. ENDIF
  107. IS1=MDISG(ID1)
  108. LS1=MSLS1(IS1)
  109. ISG=MDISG(IDE)
  110. CALL OOOZMV(JSG(IS1+MSLZ1+1),JSG(ISG+MSLZ1+1),LS1-(MSLCZ))
  111. MZJSS(DEPLACES)=MZJSS(DEPLACES)+1
  112. MZJSM(DEPLACES)=MZJSM(DEPLACES)+LS1-(MSLCZ)
  113. C
  114. C SI COMPOSANT ON RECYCLE LE MARQUEUR (ACTIVATION VIRTUELLE)
  115. ITYPX=MDTYP(ID1)
  116. IF (MDCAT(ITYPX).EQ.MDBLOCK) THEN
  117. IDMK=MDMK(ID1)
  118. ITYPX=MDTYP(IDMK)
  119. ICHN=MDNCHN(ITYPX)
  120. IDEA=MDACHN(ICHN)
  121. MDCHN , IDEA(IDMK)
  122. ENDIF
  123. C ON DESACTIVE LE SEGMENT A COPIER SI BESOIN
  124. IF (IDISK.EQ.MDDISQUE .OR. IETAT.NE.MDACT) THEN
  125. IF (IQUEU.EQ.MDLRU) THEN
  126. NDES=LNOMOD
  127. ELSE
  128. NDES=MNOMOD
  129. ENDIF
  130. CALL OOODES (LRET,ID1,NDES-1)
  131. ENDIF
  132. ENDIF
  133. C PV ON ACTIVE IDE EN ECRITURE
  134. CALL OOOACT (LRET,IDE,0)
  135.  
  136. IP2 = IDE
  137. LRET = 2
  138. C notre numero de thread dans mdrw
  139. mdrw(ip2)=nth+1
  140. if (nth.lt.64) mdro1(ip2)=ibset(0,nth)
  141. if (nth.ge.64) mdro2(ip2)=ibset(0,nth-64)
  142. C l'horodatage dans mdhor
  143. mdhor(ip2)=horo(nth)
  144. RETURN
  145. END
  146.  
  147.  

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