Télécharger ooowde.eso

Retour à la liste

Numérotation des lignes :

ooowde
  1. C OOOWDE SOURCE PV090527 26/04/24 08:23:29 12524
  2. cMODE 89/09/29 15:24:48 ESOP
  3. SUBROUTINE OOOWDE (LRET,IRET,HARG,PSEG,KOD)
  4. C--------------------------------------------------------------------
  5. C
  6. C SEGXXX /ERR=100/ PSEG
  7. C
  8. C ->LRET 1 PLUS DE PLACE MEMOIRE ET : IRET = 1
  9. C 2 OK
  10. C
  11. C IRET ACTION SI PLUS DE PLACE MEMOIRE
  12. C 0 STOP 16
  13. C 1 RETURN AVEC LRET = 1
  14. C
  15. C HARG 'NOM_SUBROUTINE NUMERO_LIGNE NOM_SEGMENT '
  16. C
  17. C PSEG POINTEUR DESIGNANT LE SEGMENT
  18. C
  19. C KOD PARAMETRE DE DESACTIVATION
  20. C 0 NOMOD+LRU
  21. C 1 MOD+LRU
  22. C 2 NOMOD+MRU
  23. C 3 MOD+MRU
  24. C 4 RECORD
  25. C
  26. C PROGRAMMEUR : MOUGIN
  27. C CREE : 15/12/88 OOOY.. => OOOW.. (ARGUMENT HARG EN PLUS)
  28. C MODIF : 02/05/89 SEPARE D'AVEC L'ENTRY OOOWAD
  29. C
  30. C--------------------------------------------------------------------
  31. C
  32. %INC IOOADR
  33. %INC IOOADZ
  34. %INC IOODES
  35. %INC IOOSGM
  36. %INC IOOWCOM
  37. %INC IOOUNIT
  38. %INC IOOSAF
  39.  
  40. CHARACTER*(*) HARG
  41. POINTEUR PSEG.PSEG
  42.  
  43. INTEGER ITTIME(4)
  44. LOGICAL LGLL,LWAIT
  45. CHARACTER*(6) HDUREE
  46.  
  47. C Pour le message affiche
  48. HDIA = HARG
  49. LDIA = LEN(HARG)
  50.  
  51. C On saute l'ENTRY OOOYDE
  52. GOTO 100
  53.  
  54. ENTRY OOOYDE (LRET,IRET,PSEG,KOD)
  55. LDIA = 0
  56.  
  57. 100 CONTINUE
  58. KASINS = INSTRUCTION_SEGDES
  59.  
  60. if(pseg.eq.abs(MZSURV)) CALL OOOMES(pseg,'GEMAT SURVEILLE ')
  61.  
  62. C Logique pour chronométrer l'attente
  63. C LWAIT=.TRUE. duree dans ooowait seulement
  64. C LGLL =.TRUE. duree dans ooogll seulement
  65. LGLL =MZATTE .LT. 0 .AND. thread
  66. LWAIT =MZATTE .GT. 0
  67.  
  68. nth=0
  69. if (thread) nth=oothrd
  70.  
  71. * si deja inactif
  72. if (thread.and.nth.lt.64.and.ibits(mdro1(pseg),nth,1).eq.0) return
  73. if (thread.and.nth.ge.64.and.ibits(mdro2(pseg),nth-64,1).eq.0)
  74. > return
  75. * en mode force on est dans menage. Pas de segdes si surveillance pourquoi?
  76. ** if(ooofor.and.mzsurv.ne.0) return
  77.  
  78. C SEGMENT mis en queue de desactivation SAUF
  79. C - RECORD
  80. if (kod/4 .eq. 0) then
  81. IDESQ(nth) =IDESQ(nth)+1
  82. DESQ(nth,IDESQ(nth))=PSEG
  83. endif
  84.  
  85. C DESACTIVATION des elements de la queue lorsque :
  86. C - queue pleine
  87. C - mode FORCE (menage)
  88. C - mode RECORD pareil a cause de gibiane
  89. C - mode SURVEILLANCE (DEBUG)
  90. C - mode VERACT (ESOPE_PARAM)
  91. IF(IDESQ(nth).EQ.NDESQ .or. ooofor .or.
  92. & kod/4 .ne. 0 .or. MZSURV.GT.0 .or. VERACT)then
  93. C Debut du Chronometre
  94. if (LGLL) CALL oootps(ITTIME,nth)
  95.  
  96. if (thread) then
  97. lnsf(nth)=1
  98. call ooogll(1)
  99. lnsf(nth)=0
  100. endif
  101.  
  102. if (LGLL) then
  103. C Fin du Chronometre : Mesure du temps
  104. ITPS0=ITTIME(1)+ITTIME(2)
  105. CALL oootps(ITTIME,nth)
  106. IELAPS=ITTIME(1)+ITTIME(2)-ITPS0
  107. IF(IELAPS .ge. ABS(MZATTE))THEN
  108. WRITE(HDUREE,'(i6)') IELAPS
  109. CALL OOOMES(PSEG,'GEMAT ATTEND'//HDUREE)
  110. ENDIF
  111. endif
  112.  
  113. C Vidange de la queue de desactivation
  114. call ooodeq(nth)
  115.  
  116. if (kod/4.ne.0) then
  117. CALL OOOVPN(PSEG)
  118. CALL OOODES (LRET,PSEG,KOD)
  119. IF(LRET.EQ.1) THEN
  120. IF(IRET.EQ.0) GO TO 901
  121. ENDIF
  122. endif
  123.  
  124. if (thread) call ooogll(0)
  125. C en force on supprime eventuellement la condition
  126. if (thread.and.ooofor.and.nth.eq.0.and.mdco(pseg).ne.0) then
  127. call ooocdt(mdco(pseg))
  128. mdco(pseg)=0
  129. endif
  130. endif
  131. RETURN
  132. C-----------------------------------------------------------------------
  133. C MESSAGES D'ERREUR
  134. C-----------------------------------------------------------------------
  135. 901 CALL OOOERR (0,0,'PAS ASSEZ DE PLACE EN MEMOIRE')
  136. STOP 16
  137. END
  138.  
  139.  

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