Re: Problème de bloquage. |
Sujet: Re: Problème de bloquage. par ben-34 sur 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 |