Re: Problème de bloquage.

Posté par ben-34 le 13/6/2005 21:29:23
Voila:
//Daclarations globales
strBloque est une structure
sNomFic est une chaîne
nNbBloque est un entier
nNumEnr est un entier
FIN
gTstrBloque est un tableau de 0 strBloque


----------------------------------------------

PROCEDURE GLOBALE bBloqueEnr(LOCAL psNomFic est une chaîne)
nInd est un entier
bBloque est un booléen
bRetour est un booléen
nNumEnr est un entier

nNumEnr = HNumEnr(psNomFic)

nInd = TableauCherche(::gTstrBloque,tcLinéaire, "sNomFic;nNumEnr", psNomFic, nNumEnr)

SI nInd <> -1 ALORS
SI ::gTstrBloque[nInd]:nNbBloque = 0 ALORS
bBloque = Vrai
SINON
bBloque = Faux
FIN
::gTstrBloque[nInd]:nNbBloque++
SINON
nInd = TableauAjoute(::gTstrBloque)
::gTstrBloque[nInd]:nNbBloque = 1
::gTstrBloque[nInd]:sNomFic = psNomFic
::gTstrBloque[nInd]:nNumEnr = nNumEnr
bBloque = Vrai
FIN

SI bBloque ALORS
SI ::gTstrBloque[nInd]:nNbBloque = 1 ALORS

HBloqueNumEnr(psNomFic,::gTstrBloque[nInd]:nNumEnr,hBlocageEcriture)

SI PAS HErreurBlocage() ALORS
bRetour = Vrai
SINON
HErreur()
Info("Enregistrement bloqué par un autre poste.")
::gTstrBloque[nInd]:nNbBloque--
bRetour = Faux
FIN
FIN
SINON
bRetour = Vrai
FIN

POUR nInd = 1 A Dimension(::gTstrBloque)
SI ::gTstrBloque[nInd]:nNbBloque > 0 ALORS
SI PAS HBloqueNumEnr(::gTstrBloque[nInd]:sNomFic,::gTstrBloque[nInd]:nNumEnr,hBlocageEcriture) ALORS
SI EnModeTest() ALORS
Info("erreur bloquage : " + RC + HErreurInfo(hErrComplet))
FIN
FIN
SINON
TableauSupprime(::gTstrBloque,nInd)
FIN
FIN

RENVOYER bRetour


-------------------------------------------------


PROCEDURE GLOBALE bDebloqueEnr(LOCAL psNomFic est une chaîne)

nInd est un entier
nNumEnr est un entier

nNumEnr = HNumEnr(psNomFic)

nInd = TableauCherche(::gTstrBloque,tcLinéaire, "sNomFic;nNumEnr", psNomFic, nNumEnr)

SI nInd <> -1 ALORS
SI ::gTstrBloque[nInd]:nNbBloque > 0 ALORS

::gTstrBloque[nInd]:nNbBloque--

SI ::gTstrBloque[nInd]:nNbBloque = 0 ALORS
HDébloqueNumEnr(psNomFic,::gTstrBloque[nInd]:nNumEnr)
FIN
SINON
::gTstrBloque[nInd]:nNbBloque = 0
FIN
FIN

RENVOYER Vrai

Cette contribution était de : http://old.wdforge.org/newbb/viewtopic.php?forum=14&topic_id=2377&post_id=10019