Télécharger ooodex.eso

Retour à la liste

Numérotation des lignes :

ooodex
  1. C OOODEX SOURCE PV090527 26/04/24 08:23:04 12524
  2. SUBROUTINE OOODEX (LRET,NDE)
  3. C-------------------------------------------------------------------
  4. C
  5. C EXTENSION DU SEGMENT DES DESCRIPTEURS
  6. C
  7. C DOIT ETRE APPELLE LORSQU'IL N Y A PLUS DE DESCRIPTEURS LIBRES
  8. C LE CHAINAGE DES NOUVEAUX DESCRIPTEURS ( AVEC MZIDE1 ) EST REALISE
  9. C
  10. C ->LRET 1 PLUS DE PLACE MEMOIRE
  11. C 2 OK
  12. C
  13. C NDE NOMBRE DE DESCRIPTEURS A AJOUTER (DIFFERENT DE 0)
  14. C
  15. C MZIDEY(DERNIER DESCRIPT. POUVANT ETRE ATTRIBUE) EST RECALCULE
  16. C LES NOUVEAUX DESCRIPTEURS LIBRES SONT
  17. C CHAINES ENTRE L ANCIEN MZIDEY ET LE NOUVEAU .
  18. C
  19. C PROGRAMMEUR : MOUGIN
  20. C MODIF : 16/11/88 PLUS DE LRET DANS CALL OOOMSU
  21. C MODIF : 09/01/89 PLUS DE LRET=3 DANS CALL OOOMIN
  22. C MODIF : 09/01/89 OOOMIN ( ... , 1 ) => OOOMEX ( ... )
  23. C MODIF : 17/01/89 SUPPRIMER IRET DANS CALL OOOMWD
  24. C MODIF : 17/01/89 SUPPRIMER IRET DANS SUBROUTINE OOODEX
  25. C MODIF : 27/02/89 LOGIQUE SIMPLIFIEE ET OOOMEX SIMPLIFIE
  26. C
  27. C-------------------------------------------------------------------
  28. C
  29. %INC IOOADR
  30. %INC IOOADZ
  31. %INC IOODES
  32. %INC IOOSGM
  33. %INC IOOTRO
  34. %INC IOOWCOM
  35. C
  36. C****** INIT TRAITEMENT:INDICE SGM DESCRIPT,LG ACTUELLE
  37. C
  38. C ->ISDES INDICE DU SEGMENT DES DESCRIPTEURS
  39. C ->LSDE1 LONGUEUR ACTUELLE DU SEGMENT DES DESCRIPTEURS
  40. C ->LSDE2 LONGUEUR DESIREE DU SEGMENT DES DESCRIPTEURS
  41. C
  42. if (thread) call oooblo
  43. ISDES = MDISG(MZIDDX)
  44. LSDE1 = MSLS1(ISDES)
  45. MZJSM(DESCR)= ((LSDE1+NDE*MDLDE+MSLSM-1)/MSLSM)
  46. MZJSS(DESCR)= MZJSM(DESCR)
  47. LSDE2 = MZJSM(DESCR)*MSLSM
  48. ** write(6,*) 'extension ',lsde1/mslsm,lsde2/mslsm
  49. DO WHILE (MSLS1(ISDES).LT.LSDE2)
  50. IS1 = ISDES+MSLS1(ISDES)
  51. LS1 = MSLS1(IS1)
  52. IF (LS1.EQ.0) THEN
  53. LRET = 1
  54. RETURN
  55. ELSEIF (LS1.GT.0) THEN
  56. ID1 = MSIDE(IS1)
  57. ICAT = MDCAT(MDTYP(ID1))
  58. IF (ICAT.EQ.MDFIXE) THEN
  59. LRET = 1
  60. RETURN
  61. ELSEIF (ICAT.EQ.MDMARK) THEN
  62. LS1 = MSMARK(IS1)+MSLMARK
  63. ENDIF
  64.  
  65. C RECHERCHE D'UNE PLACE POUR LE SEGMENT A DROITE
  66. C AVEC REGLE D'ATTRIBUTION A DROITE DANS LE TROU
  67.  
  68. LATGD = MZATGD(IZA,ZMEMDYN)
  69. MZATGD(IZA,ZMEMDYN) = 1
  70. CALL OOOMIN (LRET,ZMEMDYN,IS2,LS1)
  71. MZATGD(IZA,ZMEMDYN) = LATGD
  72.  
  73. C SI PAS DE PLACE EN ZONE ACTIVE : EN FAIRE
  74. C ET ON REITERE EN EXAMINANT DE NOUVEAU LA SITUATION
  75. C A DROITE DU SGM DES DESCRIPT. CAR ELLE A PU CHANGER
  76.  
  77. IF (LRET.EQ.1) THEN
  78. IF (TESOOO) CALL OOOWER (' OOODEX => OOOMWD')
  79. CALL OOOMWD (LRET,LS1)
  80. IF (TESOOO) CALL OOOWER (' OOODEX <= OOOMWD')
  81. IF (LRET.EQ.1) RETURN
  82.  
  83. C IL Y A DE LA PLACE:ON DEPLACE LE SGM A DROITE DANS SON TROU,
  84. C MISE A JOUR STATISTIQUES
  85. C MISE A JOUR DU OU DES DESCRIPTEURS
  86.  
  87. ELSE
  88. CALL OOOZDE (JSG(IS2+1),JSG(IS1+1),LS1)
  89. ISG=IS2
  90.  
  91. DO WHILE (ISG.LT.IS2+LS1)
  92. IDE = MSIDE(ISG)
  93. MDISG(IDE) =ISG
  94. ISG = ISG+MSLS1(ISG)
  95. ENDDO
  96.  
  97. CALL OOOMSU (IZA,IS1,LS1)
  98. ENDIF
  99.  
  100. ELSEIF (LS1.LT.0) THEN
  101. CALL OOOMEX (ISDES,LSDE2)
  102.  
  103. C FAIRE LA CHAINE DES NOUVEAUX DESCRIPTEURS LIBRES .
  104.  
  105. IDEM = MZIDEY+MDLDE
  106. MZIDEY = ((MSLS1(ISDES)-MSLCZ-(MDLDE-1))/MDLDE)*MDLDE-1
  107. MZIDEY= IDEM+(MZIDEY-IDEM)/MDLDE*MDLDE
  108. DO IDE = IDEM,MZIDEY,MDLDE
  109. MDZERO(IDE) = 0
  110. MDIDS (IDE) = -(IDE+MDLDE)
  111. MDIDP (IDE) = -(IDE-MDLDE)
  112. ENDDO
  113. IF (IDEM.LE.MZIDEY) THEN
  114. MDIDS(MZIDEY) = MDIDS(MZIDE1)
  115. MDIDP(-MDIDS(MZIDEY)) = -MZIDEY
  116. MDIDS(MZIDE1) = -IDEM
  117. MDIDP(IDEM) = -MZIDE1
  118. ENDIF
  119. ENDIF
  120. ENDDO
  121.  
  122. LRET = 2
  123. if (thread) call ooodbl
  124.  
  125. END
  126.  
  127.  

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