Télécharger ooowad.eso

Retour à la liste

Numérotation des lignes :

ooowad
  1. C OOOWAD SOURCE PV090527 26/04/24 08:23:29 12524
  2. SUBROUTINE OOOWAD(LRET,IRET,HARG,PSEG,IDI1,JDES,NTAB)
  3. C--------------------------------------------------------------------
  4. C
  5. C SEGXXX /ERR=100/ PSEG
  6. C
  7. C ->LRET 1 PLUS DE PLACE MEMOIRE ET : IRET = 1
  8. C 2 OK
  9. C
  10. C IRET ACTION SI PLUS DE PLACE MEMOIRE
  11. C 0 STOP 16
  12. C 1 RETURN AVEC LRET = 1
  13. C
  14. C HARG 'NOM_SUBROUTINE NUMERO_LIGNE NOM_SEGMENT '
  15. C
  16. C PSEG POINTEUR DESIGNANT LE SEGMENT
  17. C LSEG LONGUEUR DES DONNEES DU SEGMENT EN MOTS
  18. C
  19. C PROGRAMMEUR : MOUGIN
  20. C CREE : 15/12/88 OOOY.. => OOOW.. (ARGUMENT HARG EN PLUS)
  21. C MODIF : 02/05/89 SEPARE D'AVEC LES AUTRES ENTRY : OOOWXX
  22. C
  23. C--------------------------------------------------------------------
  24. C
  25. %INC IOOADR
  26. %INC IOOADZ
  27. %INC IOODES
  28. %INC IOOSGM
  29. %INC IOOWCOM
  30. %INC IOOUNIT
  31. %INC IOOSAF
  32.  
  33. CHARACTER*(*) HARG
  34. POINTEUR PSEG.PSEG
  35. INTEGER JDES(NTAB)
  36. logical lectur
  37.  
  38.  
  39. INTEGER ITTIME(4)
  40. LOGICAL LGLL,LWAIT
  41. CHARACTER*(6) HDUREE
  42.  
  43. C ENTRY OOOWAe(LRET,IRET,HARG,PSEG,IDI1,JDES,NTAB)
  44. C ENTRY OOOWAf(LRET,IRET,HARG,PSEG,IDI1,JDES,NTAB)
  45. C ENTRY OOOWAg(LRET,IRET,HARG,PSEG,IDI1,JDES,NTAB)
  46. C ENTRY OOOWAh(LRET,IRET,HARG,PSEG,IDI1,JDES,NTAB)
  47. C ENTRY OOOWAi(LRET,IRET,HARG,PSEG,IDI1,JDES,NTAB)
  48. C ENTRY OOOWAj(LRET,IRET,HARG,PSEG,IDI1,JDES,NTAB)
  49.  
  50.  
  51. C Pour le message affiche
  52. HDIA = HARG
  53. LDIA = LEN(HARG)
  54.  
  55. C On saute l'ENTRY OOOYAD
  56. GOTO 100
  57.  
  58. ENTRY OOOYAD (LRET,IRET,PSEG,IDI1,JDES,NTAB)
  59. HDIA =' '
  60. LDIA = 0
  61.  
  62. 100 CONTINUE
  63. KASINS = INSTRUCTION_SEGADJ
  64.  
  65. if(pseg.eq.abs(MZSURV)) CALL OOOMES(pseg,'GEMAT SURVEILLE ')
  66.  
  67. C Logique pour chronométrer l'attente
  68. C LWAIT=.TRUE. duree dans ooowait seulement
  69. C LGLL =.TRUE. duree dans ooogll seulement
  70. LGLL =MZATTE .LT. 0 .AND. thread
  71. LWAIT =MZATTE .GT. 0
  72.  
  73. nth=0
  74. if (thread) nth=oothrd
  75.  
  76. C Debut du Chronometre
  77. if (LGLL) CALL oootps(ITTIME,nth)
  78.  
  79. if (thread) then
  80. lnsf(nth)=0
  81. call ooogll(1)
  82. lnsf(nth)=1
  83. endif
  84.  
  85. if (LGLL) then
  86. C Fin du Chronometre : Mesure du temps
  87. ITPS0=ITTIME(1)+ITTIME(2)
  88. CALL oootps(ITTIME,nth)
  89. IELAPS=ITTIME(1)+ITTIME(2)-ITPS0
  90. IF(IELAPS .ge. ABS(MZATTE))THEN
  91. WRITE(HDUREE,'(i6)') IELAPS
  92. CALL OOOMES(PSEG,'GEMAT ATTEND'//HDUREE)
  93. ENDIF
  94. endif
  95.  
  96. lectur=(mdro1(pseg).eq.0).and.(mdro2(pseg).eq.0)
  97. C verif queue de desactivation
  98. if (idesq(nth).ne.0) call ooodeq(nth)
  99. C si on est en attente, on libere le segment
  100. C avant pour eviter les blocages
  101. C et on le signale
  102. call oootdl(pseg,ifla)
  103. if (mdco(pseg).ne.0.and.
  104. > (nth.lt.64.and.mdro1(pseg).eq.ibset(0,nth)).or.
  105. > (nth.ge.64.and.mdro2(pseg).eq.ibset(0,nth-64))
  106. > .and.ifla.eq.1)
  107. > call ooosig(mdco(pseg))
  108. if (nth.lt.64) mdro1(pseg)=ibclr(mdro1(pseg),nth)
  109. if (nth.ge.64) mdro2(pseg)=ibclr(mdro2(pseg),nth-64)
  110. C segact ecr= ???
  111. 10 if ((ibits(mdrw(pseg),0,18).ne.0.and.ibits(mdrw(pseg),0,18).ne.
  112. > nth+1).or.
  113. > (nth.lt.64.and.mdro1(pseg).ne.0.and.mdro1(pseg).ne.ibset(0,nth))
  114. > .or.(nth.ge.64.and.mdro2(pseg).ne.0.and.mdro2(pseg).ne.
  115. > ibset(0,nth-64))) then
  116. C on doit attendre.
  117. C si necessaire on cree une condition
  118. if (mdco(pseg).eq.0) then
  119. call ooocon(mdco(pseg))
  120. endif
  121. call oooddl(pseg,harg)
  122. C Mesure du TEMPS
  123. if (LWAIT) CALL oootps(ITTIME,nth)
  124. lnsf(nth)=0
  125. call ooowait(mdco(pseg))
  126. lnsf(nth)=1
  127. if (LWAIT) then
  128. C Mesure de l'attente
  129. ITPS0=ITTIME(1)+ITTIME(2)
  130. CALL oootps(ITTIME,nth)
  131. IELAPS=ITTIME(1)+ITTIME(2)-ITPS0
  132. I1 = INDEX(HDIA( 1:LDIA),' ')
  133. IF(IELAPS .ge. ABS(MZATTE))THEN
  134. WRITE(HDUREE,'(i6)') IELAPS
  135. CALL OOOMES(PSEG,'GEMAT ATTEND'//HDUREE)
  136. ENDIF
  137. endif
  138. call oooudl
  139. goto 10
  140.  
  141. C else
  142. endif
  143.  
  144. CALL OOOVPN (PSEG)
  145. CALL OOOACT (LRET,PSEG,0)
  146. CALL OOOADJ (LRET,PSEG,IDI1,JDES,NTAB)
  147. IF (LRET.EQ.1) THEN
  148. IF (IRET.EQ.0) GO TO 901
  149. PSEG = 0
  150. ENDIF
  151. RETURN
  152. C-----------------------------------------------------------------------
  153. C MESSAGES D'ERREUR
  154. C-----------------------------------------------------------------------
  155. 901 CALL OOOERR (0,0,'PAS ASSEZ DE PLACE EN MEMOIRE')
  156. STOP 16
  157. END
  158.  
  159.  

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