$BASICTYPE "P"
*SUBROUTINE RECHERCHEAIDANTS(RETURNVAL, ENTREE, SORTIE)

EXECUTE 'DATE.FORMAT'
EXECUTE 'SET-DEC ,'

W_TIME=TIME()
RETURNVAL=""
EXECUTE "SET-THOUS ."
OPEN "","BESOINSAIDE" TO F.BESOINSAIDE ELSE STOP
OPEN "","CIVILAIDANT" TO F.CIVILAIDANT ELSE STOP
OPEN "","CONTRAT" TO F.CONTRAT ELSE STOP
OPEN "","CONTRATINV" TO F.CONTRATINV ELSE STOP
OPEN "","PERIODESPAIE" TO F.PERIODESPAIE ELSE STOP
OPEN "", "TPSAIDANTDISPO" TO F.TPSAIDANTDISPO ELSE STOP
OPEN "", "CUMSUIVCONT" TO F.CUMSUIVCONT ELSE STOP
OPEN "", "TEMPO" TO F.TEMPO ELSE STOP
OPEN "", "TPSTEMPO" TO F.TPSTEMPO ELSE STOP

W_PasseDiff="FAUX"

READ ENR_PERIODESPAIE FROM F.PERIODESPAIE,"1" ELSE RETURN

W_PeriodePaie=""
W_TabMoisPaie=""

PROCREAD PARAMETRES ELSE STOP
W_CleRetourOrigine = FIELD(PARAMETRES,"|",2)
READ ENTREE FROM F.TPSTEMPO, "PARAMRECH":W_CleRetourOrigine ELSE STOP
DELETE F.TPSTEMPO, "PARAMRECH":W_CleRetourOrigine

W_CodeAide=ENTREE<1>
W_DateDebTemporel=ENTREE<2,1>
W_DateFinTemporel=ENTREE<2,2>
W_CodeActivite=ENTREE<3>
W_ReqContrat=ENTREE<4>
W_ReqAidant=ENTREE<5>
W_NbAidants=ENTREE<6>
W_User=ENTREE<13>

* Nb : liste critres intervention dans ENTREE :
* 7 : Jour
* 8 : Hre deb
* 9 : Hre fin
* 10 : Temps prsence
* 11 : Frquence
* 12 : Valeur rmunres (pas utilise)
* 14 : Conjonction (0 : ET / 1 : OU)
*

ENR_RAPPORT = ""

READ ENR_BESOINSAIDE FROM F.BESOINSAIDE,W_CodeAide ELSE ENR_BESOINSAIDE=""

*Nom des variables de requete
W_TIME=TIME()
LISTCONTRATRECH="TPSRECHCONTRAT":W_User:W_TIME
LISTAIDANTRECH="TPSRECHAIDANT":W_User:W_TIME

LISTCONTRATEFF="TPSRECHCONTRAT":W_User:W_TIME
LISTAIDANTEFF="TPSRECHAIDANT":W_User:W_TIME

LISTCONTRATDIFF="TPSRECHCONTRATDIFF":W_User:W_TIME
LISTAIDANTDIFF="TPSRECHAIDANTDIFF":W_User:W_TIME

LISTCONTRATDIFFEFF="TPSRECHCONTRATDIFF":W_User:W_TIME
LISTAIDANTDIFFEFF="TPSRECHAIDANTDIFF":W_User:W_TIME

* information
*W_TabJour=ENTREE<7>
*W_TabHeureDeb=ENTREE<8>
*W_TabHeureFin=ENTREE<9>
*W_TabTempPresence=ENTREE<10>
*W_TabFreq=ENTREE<11>
*W_ValeurRem=ENTREE<12>

W_AidantsTrouves=0
W_LenTabJour=DCOUNT(ENTREE<8>,CHAR(253))
W_TabAidants=""
W_TabAidantsTrouves=""
W_AidantsSelect=""

SORTIE=""
W_VientDeContrat="VRAI"

* Activit prestataire
IF ENTREE<4> # "" THEN
   EXECUTE W_ReqContrat
   EXECUTE 'SAUVE-LISTE ':LISTCONTRATRECH
   EXECUTE "LISTE ":LISTCONTRATRECH RETURNING MSGCODE
   IF MSGCODE<1> # 209 THEN
      SELECT F.CONTRAT TO LISTCONTRATRECH

      W_FiniContrat="FAUX"

      LOOP
         READNEXT W_CleContrat FROM LISTCONTRATRECH ELSE W_FiniContrat="VRAI"
      WHILE W_FiniContrat="FAUX" DO
       W_CleAidant=W_CleContrat[1,5]

       IF INDEX(ENR_BESOINSAIDE<8>,W_CleAidant,1) = 0 THEN

         W_PasLeBon="FAUX"
         * pour fusion avec le tableau contenant tous les aidants (en MV1=CodeAidant)
         GOSUB 10
         IF W_PasLeBon="FAUX" THEN
            W_AidantsTrouves=W_AidantsTrouves+1
            * Chargement donnes aidants
            W_VientDeContrat="VRAI"
            GOSUB 40
            *W_TabAidantsTrouves<W_AidantsTrouves> = W_TabAidants
            W_TabAidantsTrouves<W_AidantsTrouves,1> = W_LigneAidant
		kAffect = 0
		LOOP
		kAffect = kAffect + 1
		WHILE W_TabAidants<1,kAffect> # ""
			W_TabAidantsTrouves<W_AidantsTrouves,kAffect + 1,1> = W_TabAidants<1,kAffect,1>
			W_TabAidantsTrouves<W_AidantsTrouves,kAffect + 1,2> = W_TabAidants<1,kAffect,2>
			W_TabAidantsTrouves<W_AidantsTrouves,kAffect + 1,3> = W_TabAidants<1,kAffect,3>
		REPEAT
	
            IF W_ACreer="Activite" THEN
               W_TabAidantsTrouves<W_AidantsTrouves,3> = W_CleContrat
            END

            IF W_AidantsTrouves=W_NbAidants THEN
               SORTIE=W_TabAidantsTrouves
               EXECUTE 'EFFACER-LISTE ':LISTCONTRATEFF
               EXECUTE 'EFFACER-LISTE ':LISTAIDANTEFF
		   WRITE SORTIE ON F.TPSTEMPO, "RECHERCHEAIDANTS":W_CleRetourOrigine
               RETURN
            END
         END
       END
      REPEAT
 
	IF W_AidantsTrouves < W_NbAidants THEN
         * Gnration des candidats
         GOSUB 30

         * Recherche sur les candidats
         GOSUB 20

         SORTIE=W_TabAidantsTrouves
      END
  END ELSE
     EXECUTE W_ReqAidant
     EXECUTE 'SAUVE-LISTE ':LISTAIDANTRECH

     * Recherche sur les candidats
     GOSUB 20

     SORTIE=W_TabAidantsTrouves

  END


END ELSE
   * Activite mandataire
   EXECUTE W_ReqAidant
   EXECUTE 'SAUVE-LISTE ':LISTAIDANTRECH

   * Recherche sur les candidats
   GOSUB 20

   SORTIE=W_TabAidantsTrouves

END

*WRITE ENR_RAPPORT ON F.TEMPO,"TESTJK"

EXECUTE 'EFFACER-LISTE ':LISTCONTRATEFF
EXECUTE 'EFFACER-LISTE ':LISTAIDANTEFF

EXECUTE 'EFFACER-LISTE ':LISTCONTRATDIFFEFF
EXECUTE 'EFFACER-LISTE ':LISTAIDANTDIFFEFF

WRITE SORTIE ON F.TPSTEMPO, "RECHERCHEAIDANTS":W_CleRetourOrigine

RETURN

*********************************************************************************
* Appel du PR de chevauchement.
10
iTrouve=0
W_TabAidants = ""
FOR i=1 TO W_LenTabJour
	IF i > 1 THEN
	  * Appel du PR de detection des erreurs
        IF ENTREE<14,i-1> = "1" THEN
		IF W_PasLeBon = "VRAI" THEN
			* On effectue une recherche sur les critres suivants :
			iTrouve=0
			W_TabAidants = ""
			
		END ELSE
			* On a trouve
			i = W_LenTabJour+1
		END
	  END ELSE
		IF W_PasLeBon = "VRAI" THEN
			* On passe directement aux critres suivants
			LOOP
			i = i + 1
			WHILE i <= W_LenTabJour AND ENTREE<14,i-1> # "1"
			REPEAT 
			IF ENTREE<14,i-1> = "1" THEN
			    iTrouve=0
			    W_TabAidants = ""
			END ELSE
			   * On passe  l'aidant suivant...
				i = W_LenTabJour+1
			END
		END
	  END             
	END
	IF i < W_LenTabJour+1 THEN    
	  IF ENTREE<7,i> <= 6 THEN
		Jour = ENTREE<7,i>	
		GOSUB 11
	  END ELSE
		i10 = 0
		Jour = ""
		LOOP
		WHILE i10 < ENTREE<7,i>-2
			* Chercher ici si un critre de recherche a dj t affect au jour en question...
			Jour = i10
			GOSUB 11
			IF W_PasLeBon = "FAUX" THEN
				* On sors de la boucle
				i10 = 8
			END ELSE
				i10 = i10 + 1
			END
		REPEAT
				
	  END
	END

NEXT i
RETURN

11
*************************************************************************
*				Traitement d'un critre					*
*************************************************************************
W_CleRetour = W_CleRetourOrigine

   W_PasLeBon = "FAUX"

   W_ENTREE=""
   W_ENTREE<1>=W_CleAidant
   W_ENTREE<2>=Jour
   W_ENTREE<3>=ENTREE<8,i>
   W_ENTREE<4>=ENTREE<9,i>
   W_ENTREE<5>=ENTREE<11,i>
   W_ENTREE<6>=W_CodeActivite
   W_ENTREE<7>=W_DateDebTemporel
   W_ENTREE<8>=W_DateFinTemporel
   W_ENTREE<9>=4
   W_ENTREE<10>="S"
   W_ENTREE<11>=ENTREE<10,i>
   W_ENTREE<12>=W_CodeAide
   W_ENTREE<13>="RA"
   
   k11 = 0
   LOOP
	k11 = k11 + 1
   WHILE W_TabAidants<1,k11> # ""
	W_ENTREE<16,-1> = W_TabAidants<1,k11,3>
	W_ENTREE<17,-1> = W_TabAidants<1,k11,1>
	W_ENTREE<18,-1> = W_TabAidants<1,k11,2>
   REPEAT

   WRITE W_ENTREE ON F.TPSTEMPO, "PARAMVERIFTPS":W_CleRetour

   EXECUTE ' VERIFTPS |':W_CleRetour

   READ W_SORTIE FROM F.TPSTEMPO, "VERIFTPS":W_CleRetour ELSE
		W_SORTIE<1> = "ERREUR"
   END
   DELETE F.TPSTEMPO, "PARAMVERIFTPS":W_CleRetour
   DELETE F.TPSTEMPO, "VERIFTPS":W_CleRetour	

   IF W_SORTIE<1> ="OK" THEN
	   iTrouve=iTrouve+1
	   W_TabAidants<1,iTrouve,1>=W_SORTIE<4>
   	   W_TabAidants<1,iTrouve,2>=W_SORTIE<5>
	   W_TabAidants<1,iTrouve,3>=Jour

   END ELSE
	   W_PasLeBon="VRAI"
	   *EXIT
   END
RETURN

*********************************************************************************

20
IF W_PasseDiff="FAUX" THEN
   EXECUTE "LISTE ":LISTAIDANTRECH RETURNING MSGCODE
   W_AidantsSelect=""
   IF MSGCODE<1> # 209 THEN
      SELECT F.CIVILAIDANT TO LISTAIDANTRECH

      W_FiniAidant="FAUX"

      iSelect=0
      LOOP
         READNEXT W_CleAidant FROM LISTAIDANTRECH ELSE W_FiniAidant="VRAI"
      WHILE W_FiniAidant="FAUX" DO
         iSelect=iSelect + 1
         W_AidantsSelect<iSelect>=W_CleAidant
	REPEAT

   END
END

      IF W_AidantsSelect<1> # "" THEN
         W_CountAidantSelect=DCOUNT(W_AidantsSelect,CHAR(254))
      END ELSE
         W_CountAidantSelect=0
      END

      W_FiniAidant="FAUX"
      LOOP
      WHILE W_CountAidantSelect > 0 AND W_FiniAidant="FAUX" DO

       * par de 0 jusqu'au chiffre en ().
       W_Alea=RND(W_CountAidantSelect)+1

       W_CleAidant=W_AidantsSelect<W_Alea>

       IF INDEX(ENR_BESOINSAIDE<8>,W_CleAidant,1) = 0 THEN


         

            * Appel du PR de detection des erreurs
            GOSUB 10 
            
         
         IF W_PasLeBon="FAUX" THEN

            W_AidantsTrouves=W_AidantsTrouves+1
            * Chargement donnes aidants
            W_VientDeContrat="FAUX"
            GOSUB 40
            *W_TabAidantsTrouves<W_AidantsTrouves> = W_TabAidants<1>
            W_TabAidantsTrouves<W_AidantsTrouves,1> = W_LigneAidant
		kAffect = 0
		LOOP
		kAffect = kAffect + 1
		WHILE W_TabAidants<1,kAffect> # ""
			W_TabAidantsTrouves<W_AidantsTrouves,kAffect + 1,1> = W_TabAidants<1,kAffect,1>
			W_TabAidantsTrouves<W_AidantsTrouves,kAffect + 1,2> = W_TabAidants<1,kAffect,2>
			W_TabAidantsTrouves<W_AidantsTrouves,kAffect + 1,3> = W_TabAidants<1,kAffect,3>
		REPEAT
            IF W_ACreer="Activite" THEN
               W_TabAidantsTrouves<W_AidantsTrouves,2,4> = W_CleContrat
            END
            
            IF W_AidantsTrouves=W_NbAidants THEN
               W_FiniAidant="VRAI"
            END
         END
       END

       W_CountAidantSelect=W_CountAidantSelect-1
       W_AidantsSelect=DELETE(W_AidantsSelect,W_Alea)

      REPEAT

RETURN


*********************************************************************************
* On slectionne les aidants qui n'ont pas de contrats actifs donc candidats
30

W_LONG=LEN(W_ReqContrat)
W_ReqContrat=W_ReqContrat[1,W_LONG-15]
W_ReqContrat=W_ReqContrat:" CodeAidant"
W_ReqContrat="T":W_ReqContrat

W_ReqAidant="T":W_ReqAidant

EXECUTE W_ReqContrat
EXECUTE 'SAUVE-LISTE ':LISTCONTRATDIFF

EXECUTE W_ReqAidant
EXECUTE 'SAUVE-LISTE ':LISTAIDANTDIFF

GOSUB 60

RETURN

*********************************************************************************
* Constitution liste aidants slectionnns
40
W_ListeContratsTMM="TPSRECHCONTRATTMM":W_User:W_TIME
W_ListeContratsTMMEFF="TPSRECHCONTRATTMM":W_User:W_TIME
W_LigneAidant=""
W_CumulHresDiff=0
W_MoyenW=0

READ ENR_CIVILAIDANT FROM F.CIVILAIDANT,W_CleAidant ELSE RETURN
W_NomPrenom=ENR_CIVILAIDANT<2>:" ":ENR_CIVILAIDANT<3>
W_NomPrenom=W_NomPrenom[1,30]
W_NomPrenom=W_NomPrenom "L#30"

W_Commune=ENR_CIVILAIDANT<11>
W_Commune=W_Commune[1,20]
W_Commune=W_Commune "L#20"

W_Tel=ENR_CIVILAIDANT<12>
W_Tel=W_Tel "L#14"

EXECUTE 'SELECT CONTRAT AVEC @ID = "':W_CleAidant:']" AND AVEC 8 = "" AND AVEC 65 = "" PAR 0'
EXECUTE 'SAUVE-LISTE ':W_ListeContratsTMM
EXECUTE "LISTE ":W_ListeContratsTMM RETURNING MSGCODE
IF MSGCODE<1> # 209 THEN
   SELECT F.CONTRAT TO W_ListeContratsTMM
   W_FiniContratTMM="FAUX"

   LOOP
      READNEXT W_CleContratTMM FROM W_ListeContratsTMM ELSE W_FiniContratTMM="VRAI"
   WHILE W_FiniContratTMM="FAUX" DO
      READ ENR_CONTRAT FROM F.CONTRAT,W_CleContratTMM ELSE RETURN
      W_Moyen=0
      W_NbMoisTMM=0
      W_PeriodePaie=ENR_PERIODESPAIE<1>

      IF ENR_CONTRAT<76> # "" THEN
         W_CountContratTMM=DCOUNT(ENR_CONTRAT<76>,CHAR(253))
         IF ENR_CONTRAT<76,W_CountContratTMM> = W_PeriodePaie THEN
            jTMM=0
            W_Borne=2
         END ELSE
            jTMM=1
            W_Borne=3
         END
	   FOR iTMM=W_CountContratTMM TO 1 STEP -1

            FOR jPaie=jTMM TO W_Borne
  	         W_PeriodePaie=ENR_PERIODESPAIE<1> - jPaie
	         IF W_PeriodePaie[5,2]=0 THEN
   		      W_PeriodePaie=W_PeriodePaie[1,4]-1:"12"
	         END
               IF ENR_CONTRAT<76,iTMM> = W_PeriodePaie THEN
                  W_Moyen=W_Moyen + ENR_CONTRAT<77,iTMM>
                  W_NbMoisTMM=W_NbMoisTMM + 1
               END
	      NEXT jPaie

 	      *IF ENR_CONTRAT<1> # "02" THEN
            *    *W_CumulHresDiff=W_CumulHresDiff + ENR_CONTRAT<80,iTMM>
		*   W_CumulHresDiff=W_CumulHresDiff + ENR_CONTRAT<102>

            *END
	   NEXT iTMM
      END

	IF W_NbMoisTMM < 3 THEN
         IF ENR_CONTRAT<71> # "" THEN
            W_CountContratTMM=DCOUNT(ENR_CONTRAT<71>,CHAR(253))
            IF ENR_CONTRAT<71,W_CountContratTMM> = W_PeriodePaie THEN
               jTMM=0
               W_Borne=2
            END ELSE
               jTMM=1
               W_Borne=3
            END

		FOR iTMM=W_CountContratTMM TO 1 STEP -1

         	   FOR jPaie=jTMM TO W_Borne
  	      	W_PeriodePaie=ENR_PERIODESPAIE<1> - jPaie
	      	IF W_PeriodePaie[5,2]=0 THEN
   		   	   W_PeriodePaie=W_PeriodePaie[1,4]-1:"12"
	      	END

            	IF ENR_CONTRAT<71,iTMM> = W_PeriodePaie THEN
               	   W_Moyen=W_Moyen + ENR_CONTRAT<72,iTMM>
               	   W_NbMoisTMM=W_NbMoisTMM + 1
            	END
	   	   NEXT jPaie
            NEXT iTMM
         END
      END

      IF W_NbMoisTMM # 0 THEN
         W_MoyenW=W_MoyenW + INT(W_Moyen/W_NbMoisTMM + 1/2)
      END
      IF ENR_CONTRAT<1> # "02" THEN
           *W_CumulHresDiff=W_CumulHresDiff + ENR_CONTRAT<80,iTMM>
	    READ ENR_CUMSUIVCONT FROM F.CUMSUIVCONT,W_CleContratTMM THEN
	    	W_CumulHresDiff=W_CumulHresDiff + ENR_CUMSUIVCONT<1>
	    END
      END


   REPEAT

*******************************************************
* Michael : Ajout du nb hres moyen autres employeurs	*
*******************************************************
READ ENR_TPSAIDANTDISPO FROM F.TPSAIDANTDISPO,W_CleAidant THEN
	W_CumulHresDispo = 0
	iTpsDispo = 0
	LOOP
		iTpsDispo = iTpsDispo + 1
	WHILE ENR_TPSAIDANTDISPO<11,iTpsDispo> # ""
		IF ENR_TPSAIDANTDISPO<15,iTpsDispo> = "O" THEN
			W_CumulHresDispo = W_CumulHresDispo + ENR_TPSAIDANTDISPO<13,iTpsDispo> - ENR_TPSAIDANTDISPO<12,iTpsDispo>
		END
	REPEAT
	W_CumulHresDispo = INT(W_CumulHresDispo * 52 / 12 + 1/2)
	W_MoyenW = W_MoyenW + W_CumulHresDispo
END
* Fin modif Michael						*
*******************************************************



   IF W_CumulHresDiff # "" THEN
	
      W_CumulHresDiff = W_CumulHresDiff "MR2"
   END

*   IF W_MoyenW # "0" THEN
      W_MoyenW = W_MoyenW "MR2"
*   END

END

W_CumulHresDiff = W_CumulHresDiff "R#8"
W_MoyenW=W_MoyenW "R#6"

IF W_VientDeContrat="VRAI" THEN
   READ ENR_CONTRAT FROM F.CONTRAT,W_CleContrat THEN
      GOSUB 50
	
   END
END ELSE
   * Activit prestataire
   IF ENTREE<4> # "" THEN
      W_ACreer="Contrat"
   END ELSE
      READ ENR_CONTRATINV FROM F.CONTRATINV,W_CleAidant:W_CodeAide THEN
         W_ACreer="Contrat"
         W_CountInv=DCOUNT(ENR_CONTRATINV<1>,CHAR(253))
         FOR iInv = W_CountInv TO 1 STEP -1
            W_CleContrat=W_CleAidant:ENR_CONTRATINV<1,iInv>
            READ ENR_CONTRAT FROM F.CONTRAT,W_CleContrat THEN
               IF ENR_CONTRAT<65> = "" THEN
                  IF ENR_CONTRAT<7> <= W_DateDebTemporel THEN
                    IF W_DateFinTemporel # "" THEN
                       IF ENR_CONTRAT<8> # "" THEN
                          IF ENR_CONTRAT<8> >= W_DateFinTemporel THEN
                             GOSUB 50
                          END
                          * Pas bon
                           EXIT
                       END ELSE
                          GOSUB 50
                       END
                    END ELSE
                       IF ENR_CONTRAT<8> = "" THEN
                          GOSUB 50
                       END
                       EXIT
                    END
                  END
               END
            END
         NEXT i
      END ELSE
         W_ACreer="Contrat"
      END

   END

END

W_LigneAidant=W_CleAidant:" ":W_NomPrenom:" ":W_Commune:" ":W_Tel:"   ":W_MoyenW:"        ":W_CumulHresDiff:"   ":W_ACreer

EXECUTE 'EFFACER-LISTE ':W_ListeContratsTMMEFF

RETURN

****************************************************************************************
* Vrification prsence Activit sur contrat
50
W_ACreer="Activite"

W_CountAct=DCOUNT(ENR_CONTRAT<36>,CHAR(253))
FOR iAct = 1  TO W_CountAct
   IF ENR_CONTRAT<36,iAct> = W_CodeActivite THEN
      W_ACreer=""
      EXIT
   END
NEXT iAct

RETURN

****************************************************************************************
* MERGE.LIST
60
W_CleAidantDiff=-1
W_CleContratDiff=-1
W_PasseDiff="VRAI"
iSelect=0
EXECUTE "LISTE ":LISTCONTRATDIFF RETURNING MSGCODE1
IF MSGCODE1<1> # 209 THEN
   SELECT F.CONTRAT TO LISTCONTRATDIFF
   EXECUTE "LISTE ":LISTAIDANTDIFF RETURNING MSGCODE2
   IF MSGCODE2<1> # 209 THEN
      SELECT F.CIVILAIDANT TO LISTAIDANTDIFF

      READNEXT W_CleAidantDiff FROM LISTAIDANTDIFF ELSE W_CleAidantDiff = 0
      READNEXT W_CleContratDiff FROM LISTCONTRATDIFF ELSE W_CleContratDiff=99999

     70
     IF W_CleAidantDiff # 0 THEN
      IF W_CleAidantDiff * 1 > W_CleContratDiff * 1 THEN
         READNEXT W_CleContratDiff FROM LISTCONTRATDIFF ELSE W_CleContratDiff=99999
         GOTO 70
      END ELSE
         IF W_CleAidantDiff * 1 < W_CleContratDiff * 1 THEN
*            IF INDEX(W_TabAidantsTrouves,CHAR(254):W_CleAidantDiff,1) = 0 THEN
               iSelect=iSelect + 1
               W_AidantsSelect<iSelect>=W_CleAidantDiff
*            END
            READNEXT W_CleAidantDiff FROM LISTAIDANTDIFF ELSE W_CleAidantDiff = 0
            GOTO 70
         END ELSE
            READNEXT W_CleAidantDiff FROM LISTAIDANTDIFF ELSE W_CleAidantDiff = 0
            READNEXT W_CleContratDiff FROM LISTCONTRATDIFF ELSE W_CleContratDiff=99999
            GOTO 70
         END
      END

     END
   END

END ELSE

   EXECUTE "LISTE ":LISTAIDANTDIFF RETURNING MSGCODE2
   IF MSGCODE2<1> # 209 THEN
      SELECT F.CIVILAIDANT TO LISTAIDANTDIFF
      iSelect=0
      LOOP
         READNEXT W_CleAidant FROM LISTAIDANTDIFF ELSE W_FiniAidant="VRAI"
      WHILE W_FiniAidant="FAUX" DO
         iSelect=iSelect + 1
         W_AidantsSelect<iSelect>=W_CleAidant
	REPEAT
   END
END

RETURN
