**********************************************************
*  apuration de certains fichiers

*  DETAILCALCUL DETAILCHGPARTEMP HISTORINDEM HISTORCUMUL HRESHISTOR STATACTAIDE  A - 2
*  FACTURAIDE FACTURORG ARCHIVEBORDCAISSE  A - 1
*  ACCORD  A - 2
*  CIVILAIDE  A - 2 + tous les fichiers rattachs au dossier aid
*  CONTRAT mandataire  A - 2
*  CIVILAIDANT  A - 2 si contrat uniquement mandataire et si sorti depuis + de 2 ans  
*  CIVILAIDANT sorti depuis + de 5 ans si prestataire
*  + tous les fichiers rattachs au dossier aidant
*  ABSENCESAIDANT si l'aidant n'existe plus
*  CONTRAT si l'aidant n'existe plus
*  ABSENCESAIDANT : apuration des contrats supprims en att 17, 18 et 26 de ABSENCESAIDANT 

*  Vanessa
*  mars 2002
*  Mikael 21/08/2007
**********************************************************

* Ouvertures des fichiers

EXECUTE "SET-THOUS ."
EXECUTE "SET-DEC ,"
EXECUTE "DATE.FORMAT"
OPEN "","ABSENCESAIDANT" TO F.ABSENCESAIDANT ELSE PRINT "OUVERTURE ABSENCESAIDANT"
OPEN "","ABSENCESAIDE" TO F.ABSENCESAIDE ELSE PRINT "OUVERTURE ABSENCESAIDE"
OPEN "","ACCORD" TO F.ACCORD ELSE PRINT "OUVERTURE ACCORD"
OPEN "","ACTIVITESAIDE" TO F.ACTIVITESAIDE ELSE PRINT "OUVERTURE ACTIVITESAIDE"
OPEN "","ACTIVITESBISAIDE" TO F.ACTIVITESBISAIDE ELSE PRINT "OUVERTURE ACTIVITESBISAIDE"
OPEN "","AGGIRAIDE" TO F.AGGIRAIDE ELSE PRINT "OUVERTURE AGGIRAIDE"
OPEN "","ARCHIVEBORDCAISSE" TO F.ARCHIVEBORDCAISSE ELSE PRINT "OUVERTURE ARCHIVEBORDCAISSE"
OPEN "","ASSOCIATION" TO F.ASSOCIATION ELSE PRINT "OUVERTURE ASSOCIATION"
OPEN "","BALANCEAUX" TO F.BALANCEAUX ELSE PRINT "OUVERTURE BALANCEAUX"
OPEN "","BESOINSAIDE" TO F.BESOINSAIDE ELSE PRINT "OUVERTURE BESOINSAIDE"
OPEN "","BLOCNOTAIDANT" TO F.BLOCNOTAIDANT ELSE PRINT "OUVERTURE BLOCNOTAIDANT"
OPEN "","BLOCNOTAIDE" TO F.BLOCNOTAIDE ELSE PRINT "OUVERTURE BLOCNOTAIDE"
OPEN "","CAPIMPAIDANT" TO F.CAPIMPAIDANT ELSE PRINT "OUVERTURE CAPIMPAIDANT"
OPEN "","CHANTIERSAIDE" TO F.CHANTIERSAIDE ELSE PRINT "OUVERTURE CHANTIERSAIDE"
OPEN "","CIVILAIDANT" TO F.CIVILAIDANT ELSE PRINT "OUVERTURE CIVILAIDANT"
OPEN "","CIVILAIDE" TO F.CIVILAIDE ELSE PRINT "OUVERTURE CIVILAIDE"
OPEN "","CIVILAIDANTARCHIVE" TO F.CIVILAIDANTARCHIVE ELSE PRINT "OUVERTURE CIVILAIDANTARCHIVE"
OPEN "","CIVILAIDEARCHIVE" TO F.CIVILAIDEARCHIVE ELSE PRINT "OUVERTURE CIVILAIDEARCHIVE"
OPEN "","COMPLFACT" TO F.COMPLFACT ELSE PRINT "OUVERTURE COMPLFACT"
OPEN "","CONTACTS" TO F.CONTACTS ELSE PRINT "OUVERTURE CONTACTS"
OPEN "","CONTRAT" TO F.CONTRAT ELSE PRINT "OUVERTURE CONTRAT"
OPEN "","CONTRATINV" TO F.CONTRATINV ELSE PRINT "OUVERTURE CONTRATINV"
OPEN "","COTISANAIDE" TO F.COTISANAIDE ELSE PRINT "OUVERTURE COTISANAIDE"
OPEN "","DEMANDACC" TO F.DEMANDACC ELSE PRINT "OUVERTURE DEMANDACC"
OPEN "","DETAILABSAIDE" TO F.DETAILABSAIDE ELSE PRINT "OUVERTURE DETAILABSAIDE"
OPEN "","DETAILCALCUL" TO F.DETAILCALCUL ELSE PRINT "OUVERTURE DETAILCALCUL"
OPEN "","DETAILCHGPARTEMP" TO F.DETAILCHGPARTEMP ELSE PRINT "OUVERTURE DETAILCHGPARTEMP"
OPEN "","DETAILINDEM" TO F.DETAILINDEM ELSE PRINT "OUVERTURE DETAILINDEM"
OPEN "","DETAILINTER" TO F.DETAILINTER ELSE PRINT "OUVERTURE DETAILINTER"
OPEN "","ELTSFACTAIDE" TO F.ELTSFACTAIDE ELSE PRINT "OUVERTURE ELTSFACTAIDE"
OPEN "","ELTSPARTEMP" TO F.ELTSPARTEMP ELSE PRINT "OUVERTURE ELTSPARTEMP"
OPEN "","ENVIRONAIDE" TO F.ENVIRONAIDE ELSE PRINT "OUVERTURE ENVIRONAIDE"
OPEN "","ETRANGER" TO F.ETRANGER ELSE PRINT "OUVERTURE ETRANGER"
OPEN "","FACTURAIDE" TO F.FACTURAIDE ELSE PRINT "OUVERTURE FACTURAIDE"
OPEN "","FACTURORG" TO F.FACTURORG ELSE PRINT "OUVERTURE FACTURORG"
OPEN "","FICHEMEDAIDE" TO F.FICHEMEDAIDE ELSE PRINT "OUVERTURE FICHEMEDAIDE"
OPEN "","FORMEXPAIDANT" TO F.FORMEXPAIDANT ELSE PRINT "OUVERTURE FORMEXPAIDANT"
OPEN "","HISTORCUMUL" TO F.HISTORCUMUL ELSE PRINT "OUVERTURE HISTORCUMUL"
OPEN "","HISTORINDEM" TO F.HISTORINDEM ELSE PRINT "OUVERTURE HISTORINDEM"
OPEN "","HRESATTENTE" TO F.HRESATTENTE ELSE PRINT "OUVERTURE HRESATTENTE"
OPEN "","HRESHISTOR" TO F.HRESHISTOR ELSE PRINT "OUVERTURE HRESHISTOR"
OPEN "","INFOSAIDANT" TO F.INFOSAIDANT ELSE PRINT "OUVERTURE INFOSAIDANT"
OPEN "","MISSIONSAIDANT" TO F.MISSIONSAIDANT ELSE PRINT "OUVERTURE MISSIONSAIDANT"
OPEN "","OPPOSITION" TO F.OPPOSITION ELSE PRINT "OUVERTURE OPPOSITION"
OPEN "","ORIGINEAIDE" TO F.ORIGINEAIDE ELSE PRINT "OUVERTURE ORIGINEAIDE"
OPEN "","PROVISIONDNT" TO F.PROVISIONDNT ELSE PRINT "OUVERTURE PROVISIONDNT"
OPEN "","RATTSALANT" TO F.RATTSALANT ELSE PRINT "OUVERTURE RATTSALANT"
OPEN "","REGULDNT" TO F.REGULDNT ELSE PRINT "OUVERTURE REGULDNT"
OPEN "","REJETSORGCHG" TO F.REJETSORGCHG ELSE PRINT "OUVERTURE REJETSORGCHG"
OPEN "","RESSOURCESAIDE" TO F.RESSOURCESAIDE ELSE PRINT "OUVERTURE RESSOURCESAIDE"
OPEN "","RIBAIDANT" TO F.RIBAIDANT ELSE PRINT "OUVERTURE RIBAIDANT"
OPEN "","STATACTAIDE" TO F.STATACTAIDE ELSE PRINT "OUVERTURE STATACTAIDE"

*********************************************************
* Recuperation des arguments

 PROCREAD ARGUMENTS ELSE STOP
 W_Periode=FIELD(ARGUMENTS," ",2)

* W_Periode="200312"

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

* initialisation des variables

W_Date=""
W_Mois=""
W_An=""
W_RequeteFacturaide=""
W_RequeteFacturorg=""
W_RequeteArchive=""
W_RequeteProv=""
W_RequeteStat=""
W_RequeteHresHistor=""
W_RequeteHistorIndem=""
W_RequeteCumul=""
W_RequeteDetChg=""
W_RequeteDetCalcul=""
W_RequeteContact=""
W_RequeteAcc=""
W_RequeteAide=""
W_RequeteContrat=""
W_RequeteAidant=""
W_RequeteAbs=""
W_RequeteCont=""
W_RequeteRejet=""
W_RequeteAct=""
W_RequeteCompl=""
W_RequeteDetAbs=""
W_RequeteAtt=""
W_RequeteIndem=""
W_RequeteOpp=""
W_RequeteInter=""
*********************************************************

* PROGRAMME PRINCIPAL

   W_Periode=W_Periode[1,4]-1:W_Periode[5,2]

*********************************************************
* apuration de FACTURAIDE  A - 1                       *
*********************************************************

   EXECUTE 'SELECT FACTURAIDE AVEC PeriodeCleFactAide <= "':W_Periode:'"'
   EXECUTE 'SAUVE-LISTE W_RequeteFacturaide'
   EXECUTE "LISTE W_RequeteFacturaide" RETURNING MSGCODE

   IF MSGCODE<1> # 209 THEN

      SELECT F.FACTURAIDE TO W_RequeteFacturaide

      W_Fin="FAUX"

      LOOP
         READNEXT W_CleFactAide FROM W_RequeteFacturaide ELSE W_Fin = "VRAI"
      WHILE W_Fin = "FAUX" DO
         DELETE F.FACTURAIDE,W_CleFactAide

      REPEAT
   END


*********************************************************
* apuration de FACTURORG  A - 1                        *
*********************************************************

   EXECUTE 'SELECT FACTURORG AVEC PeriodeFacturOrg <= "':W_Periode:'"'
   EXECUTE 'SAUVE-LISTE W_RequeteFacturorg'
   EXECUTE "LISTE W_RequeteFacturorg" RETURNING MSGCODE

   IF MSGCODE<1> # 209 THEN

      SELECT F.FACTURORG TO W_RequeteFacturorg

      W_Fin="FAUX"

      LOOP
         READNEXT W_CleFactOrg FROM W_RequeteFacturorg ELSE W_Fin = "VRAI"
      WHILE W_Fin = "FAUX" DO
         DELETE F.FACTURORG,W_CleFactOrg

      REPEAT
   END


*********************************************************
* apuration de ARCHIVEBORDCAISSE  A - 1                *
*********************************************************

   EXECUTE 'SELECT ARCHIVEBORDCAISSE AVEC PeriodeArchive <= "':W_Periode:'"'
   EXECUTE 'SAUVE-LISTE W_RequeteArchive'
   EXECUTE "LISTE W_RequeteArchive" RETURNING MSGCODE

   IF MSGCODE<1> # 209 THEN

      SELECT F.ARCHIVEBORDCAISSE TO W_RequeteArchive

      W_Fin="FAUX"

      LOOP
         READNEXT W_CleArchive FROM W_RequeteArchive ELSE W_Fin = "VRAI"
      WHILE W_Fin = "FAUX" DO
         DELETE F.ARCHIVEBORDCAISSE,W_CleArchive
      REPEAT
   END


*********************************************************
* apuration de PROVISIONDNT  A - 1                     *
*********************************************************

   EXECUTE 'SELECT PROVISIONDNT AVEC AnneeProv <= "':W_Periode[1,4]:'"'
   EXECUTE 'SAUVE-LISTE W_RequeteProv'
   EXECUTE "LISTE W_RequeteProv" RETURNING MSGCODE

   IF MSGCODE<1> # 209 THEN

      SELECT F.PROVISIONDNT TO W_RequeteProv

      W_Fin="FAUX"

      LOOP
         READNEXT W_CleProv FROM W_RequeteProv ELSE W_Fin = "VRAI"
      WHILE W_Fin = "FAUX" DO
         DELETE F.PROVISIONDNT,W_CleProv
      REPEAT
   END


   W_Periode=W_Periode[1,4]-1:W_Periode[5,2]

*********************************************************
* apuration de DETAILINTER  A - 2                      *
*********************************************************

   EXECUTE 'SELECT DETAILINTER AVEC PeriodeDetailInter <= "':W_Periode:'"'
   EXECUTE 'SAUVE-LISTE W_RequeteInter'
   EXECUTE "LISTE W_RequeteInter" RETURNING MSGCODE

   IF MSGCODE<1> # 209 THEN 
       SELECT F.DETAILINTER TO W_RequeteInter
       W_Fini="FAUX"

       LOOP
   	    READNEXT W_CleInter FROM W_RequeteInter ELSE W_Fini="VRAI"
       WHILE W_Fini="FAUX" DO
            DELETE F.DETAILINTER,W_CleInter

       REPEAT
   END


*********************************************************
* apuration de STATACTAIDE  A - 2                      *
*********************************************************

   EXECUTE 'SELECT STATACTAIDE AVEC PeriodeAct <= "':W_Periode:'"'
   EXECUTE 'SAUVE-LISTE W_RequeteStat'
   EXECUTE "LISTE W_RequeteStat" RETURNING MSGCODE

   IF MSGCODE<1> # 209 THEN

      SELECT F.STATACTAIDE TO W_RequeteStat
      W_Fin="FAUX"

      LOOP
         READNEXT W_CleStat FROM W_RequeteStat ELSE W_Fin = "VRAI"
      WHILE W_Fin = "FAUX" DO
         DELETE F.STATACTAIDE,W_CleStat

      REPEAT
   END


*********************************************************
* apuration de HRESHISTOR  A - 2                       *
*********************************************************

   EXECUTE 'SELECT HRESHISTOR AVEC PeriodeHresHistor <= "':W_Periode:'"'
   EXECUTE 'SAUVE-LISTE W_RequeteHresHistor'
   EXECUTE "LISTE W_RequeteHresHistor" RETURNING MSGCODE

   IF MSGCODE<1> # 209 THEN
      SELECT F.HRESHISTOR TO W_RequeteHresHistor

      W_Fin="FAUX"

      LOOP
         READNEXT W_CleHresHistor FROM W_RequeteHresHistor ELSE W_Fin = "VRAI"
      WHILE W_Fin = "FAUX" DO
         DELETE F.HRESHISTOR,W_CleHresHistor

      REPEAT
   END


*********************************************************
* apuration de HISTORINDEM  A - 2                      *
*********************************************************

   EXECUTE 'SELECT HISTORINDEM AVEC 1 <= "':W_Periode:'"'
   EXECUTE 'SAUVE-LISTE W_RequeteHistorIndem'
   EXECUTE "LISTE W_RequeteHistorIndem" RETURNING MSGCODE

   IF MSGCODE<1> # 209 THEN

      SELECT F.HISTORINDEM TO W_RequeteHistorIndem

      W_Fin="FAUX"

      LOOP
         READNEXT W_CleHistorIndem FROM W_RequeteHistorIndem ELSE W_Fin = "VRAI"
      WHILE W_Fin = "FAUX" DO
         READ ENR_HISTORINDEM FROM F.HISTORINDEM,W_CleHistorIndem ELSE ENR_HISTORINDEM=""
         W_Count=DCOUNT(ENR_HISTORINDEM<1>,CHAR(253))
         FOR i=W_Count TO 1 STEP -1
            IF ENR_HISTORINDEM<1,i> <= W_Periode THEN
               ENR_HISTORINDEM=DELETE(ENR_HISTORINDEM,1,i)
               ENR_HISTORINDEM=DELETE(ENR_HISTORINDEM,2,i)
               ENR_HISTORINDEM=DELETE(ENR_HISTORINDEM,3,i)
               ENR_HISTORINDEM=DELETE(ENR_HISTORINDEM,4,i)
            END
         NEXT i
         WRITE ENR_HISTORINDEM ON F.HISTORINDEM,W_CleHistorIndem
         IF ENR_HISTORINDEM<1> = "" THEN
            DELETE F.HISTORINDEM,W_CleHistorIndem
         END
      REPEAT

   END


*********************************************************
* apuration de HISTORCUMUL  A - 2                      *
*********************************************************

   EXECUTE 'SELECT HISTORCUMUL AVEC PeriodeHistCum <= "':W_Periode[1,4]:'"'
   EXECUTE 'SAUVE-LISTE W_RequeteCumul'
   EXECUTE "LISTE W_RequeteCumul" RETURNING MSGCODE

   IF MSGCODE<1> # 209 THEN

      SELECT F.HISTORCUMUL TO W_RequeteCumul

      W_Fin="FAUX"

      LOOP
         READNEXT W_CleCumul FROM W_RequeteCumul ELSE W_Fin = "VRAI"
      WHILE W_Fin = "FAUX" DO
         DELETE F.HISTORCUMUL,W_CleCumul
      REPEAT
   END


*********************************************************
* apuration de DETAILCHGPARTEMP  A - 2                 *
*********************************************************

   EXECUTE 'SELECT DETAILCHGPARTEMP AVEC AnneeDetChg <= "':W_Periode[1,4]:'"'
   EXECUTE 'SAUVE-LISTE W_RequeteDetChg'
   EXECUTE "LISTE W_RequeteDetChg" RETURNING MSGCODE

   IF MSGCODE<1> # 209 THEN

      SELECT F.DETAILCHGPARTEMP TO W_RequeteDetChg

      W_Fin="FAUX"

      LOOP
         READNEXT W_CleDetChg FROM W_RequeteDetChg ELSE W_Fin = "VRAI"
      WHILE W_Fin = "FAUX" DO
         DELETE F.DETAILCHGPARTEMP,W_CleDetChg

      REPEAT
   END


*********************************************************
* apuration de DETAILCALCUL  A - 2                     *
*********************************************************

   W_Mois=W_Periode[5,2]+1
   W_An=W_Periode[1,4]
   IF W_Mois="13" THEN
      W_Mois="01"
      W_An=W_An+1
   END

   W_Date = ICONV("01/":W_Mois:"/":W_An,"D4/")-1

   EXECUTE 'SELECT DETAILCALCUL AVEC TypeContrat = "I" AND AVEC PeriodeDetailCalcul <= "':W_Periode:'" OR AVEC TypeContrat = "D" AND AVEC DatFinContratDetailCalcul <= "':W_Date:'" AND AVEC DatFinContratDetailCalcul # "" AND AVEC PeriodeDetailCalcul <= "':W_Periode:'"'
   EXECUTE 'SAUVE-LISTE W_RequeteDetCalcul'
   EXECUTE "LISTE W_RequeteDetCalcul" RETURNING MSGCODE

   IF MSGCODE<1> # 209 THEN

      SELECT F.DETAILCALCUL TO W_RequeteDetCalcul

      W_Fin="FAUX"

      LOOP
         READNEXT W_CleDetCalcul FROM W_RequeteDetCalcul ELSE W_Fin = "VRAI"
      WHILE W_Fin = "FAUX" DO
         DELETE F.DETAILCALCUL,W_CleDetCalcul

      REPEAT
   END


*********************************************************
* apuration de CONTACTS  A - 2                         *
*********************************************************

   EXECUTE 'SELECT CONTACTS AVEC 36 <= "':W_Date:'" AND AVEC 36 # ""'
   EXECUTE 'SAUVE-LISTE W_RequeteContact'
   EXECUTE "LISTE W_RequeteContact" RETURNING MSGCODE

   IF MSGCODE<1> # 209 THEN

      SELECT F.CONTACTS TO W_RequeteContact

      W_Fin="FAUX"

      LOOP
         READNEXT W_CleContact FROM W_RequeteContact ELSE W_Fin = "VRAI"
      WHILE W_Fin = "FAUX" DO
         DELETE F.CONTACTS,W_CleContact

      REPEAT
   END

*********************************************************
* apuration de CIVILAIDE  A - 2                        *
*********************************************************

   EXECUTE 'SELECT CIVILAIDE AVEC 43 <= "':W_Date:'" AND AVEC 43 # ""'
   EXECUTE 'SAUVE-LISTE W_RequeteAide'
   EXECUTE "LISTE W_RequeteAide" RETURNING MSGCODE

   IF MSGCODE<1> # 209 THEN

      SELECT F.CIVILAIDE TO W_RequeteAide

      W_Fin="FAUX"

      LOOP
         READNEXT W_CleAide FROM W_RequeteAide ELSE W_Fin = "VRAI"
      WHILE W_Fin = "FAUX" DO

         W_End="FAUX"
         W_Trouve="FAUX"
         W_SauveAsso=""
         i=0
         j=1

         LOOP
         WHILE W_End = "FAUX" DO

            i = i+1 "R%3"
            READ ENR_ASSOCIATION FROM F.ASSOCIATION,i ELSE W_End = "VRAI"
            READ ENR_BALANCEAUX FROM F.BALANCEAUX,"N0":i:W_CleAide THEN 
               W_Trouve="VRAI"
            END
            READ ENR_BALANCEAUX FROM F.BALANCEAUX,"N1":i:W_CleAide THEN
               W_Trouve="VRAI"
            END

            W_SauveAsso<j>=i
            j=j+1
         REPEAT

         IF W_Trouve="FAUX" THEN
            W_Count=DCOUNT(W_SauveAsso,CHAR(254))
            FOR i = 1 TO W_Count
               DELETE F.COTISANAIDE,W_CleAide:W_SauveAsso<i>
            NEXT i

            READ ENR_CIVILAIDE FROM F.CIVILAIDE,W_CleAide ELSE ENR_CIVILAIDE=""
            WRITE ENR_CIVILAIDE ON F.CIVILAIDEARCHIVE,W_CleAide

            DELETE F.CIVILAIDE,W_CleAide
            DELETE F.ABSENCESAIDE,W_CleAide
            DELETE F.ACTIVITESAIDE,W_CleAide
            DELETE F.AGGIRAIDE,W_CleAide
            DELETE F.BESOINSAIDE,W_CleAide
            DELETE F.BLOCNOTAIDE,W_CleAide
            DELETE F.CHANTIERSAIDE,W_CleAide
            DELETE F.DEMANDACC,W_CleAide
            DELETE F.ELTSFACTAIDE,W_CleAide
            DELETE F.ELTSPARTEMP,W_CleAide
            DELETE F.ENVIRONAIDE,W_CleAide
            DELETE F.FICHEMEDAIDE,W_CleAide
            DELETE F.ORIGINEAIDE,W_CleAide
            DELETE F.REGULDNT,W_CleAide
            DELETE F.RESSOURCESAIDE,W_CleAide
         END
      REPEAT
   END
   
   

*********************************************************
* apuration de ACCORD  A - 2                           *
*********************************************************

*  chaque apuration, on rordonne les cls des accords :
* on supprime l'accord, puis on prend le dernier accord dispo et 
* on l'crit  la place de l'accord supprim pour combler le trou 
* et on delete le dernier accord copi 

   EXECUTE 'SELECT ACCORD AVEC 18 = "O" OR AVEC 6 <= "':W_Date:'" AND AVEC 6 # "" OR AVEC NomAide = "" PAR 0'
   EXECUTE 'SAUVE-LISTE W_RequeteAcc'
   EXECUTE "LISTE W_RequeteAcc" RETURNING MSGCODE

   IF MSGCODE<1> # 209 THEN

      SELECT F.ACCORD TO W_RequeteAcc

      W_Fin="FAUX"
      W_SauveAide=""
      W_SauveAccord=""
      k=1

      LOOP
         READNEXT W_CleAcc FROM W_RequeteAcc ELSE W_Fin = "VRAI"
      WHILE W_Fin = "FAUX" DO

         IF W_SauveAide="" THEN
            W_SauveAide=W_CleAcc[1,5]
         END

         IF W_SauveAide # W_CleAcc[1,5] THEN

            GOSUB 30

         END

         W_SauveAccord<k>=W_CleAcc
         k=k+1

      REPEAT
      GOSUB 30
   END


*********************************************************
* apuration de CONTRAT en mandataire  A - 2            *
*********************************************************

   EXECUTE 'SELECT CONTRAT AVEC 1 = "02" AND AVEC 58 <= "':W_Periode:'" AND AVEC 58 # "" OR AVEC 1 = "02" AND AVEC 65 = "O" PAR 0'
   EXECUTE 'SAUVE-LISTE W_RequeteContrat'
   EXECUTE "LISTE W_RequeteContrat" RETURNING MSGCODE

   IF MSGCODE<1> # 209 THEN

      SELECT F.CONTRAT TO W_RequeteContrat

      W_Fin="FAUX"
      W_SauveAidant=""
      W_SauveContrat=""
      k=1

      LOOP
         READNEXT W_CleContrat FROM W_RequeteContrat ELSE W_Fin = "VRAI"
      WHILE W_Fin = "FAUX" DO

         READ ENR_CONTRAT FROM F.CONTRAT,W_CleContrat ELSE ENR_CONTRAT=""

         * recherche si le contrat se trouve dans le fichier CONTRATINV
         READ ENR_CONTRATINV FROM F.CONTRATINV,W_CleContrat[1,5]:ENR_CONTRAT<3> ELSE ENR_CONTRATINV=""
         W_Count=DCOUNT(ENR_CONTRATINV<1>,CHAR(253))
         FOR i = 1 TO W_Count
            IF ENR_CONTRATINV<1,i>=W_CleContrat[6,3] THEN
               ENR_CONTRATINV=DELETE(ENR_CONTRATINV,1,i)
               IF ENR_CONTRATINV<1>="" THEN
                  DELETE F.CONTRATINV,W_CleContrat[1,5]:ENR_CONTRAT<3>
               END ELSE
                  WRITE ENR_CONTRATINV ON F.CONTRATINV,W_CleContrat[1,5]:ENR_CONTRAT<3>
               END
               EXIT
            END

         NEXT i

         DELETE F.CONTRAT,W_CleContrat
         DELETE F.RATTSALANT,W_CleContrat

         IF W_SauveAidant="" THEN
            W_SauveAidant=W_CleContrat[1,5]
         END

         IF W_SauveAidant # W_CleContrat[1,5] THEN
            READ ENR_CIVILAIDANT FROM F.CIVILAIDANT,W_SauveAidant ELSE ENR_CIVILAIDANT=""
            GOSUB 10

            W_SauveAidant=W_CleContrat[1,5]
         END
         W_SauveContrat<k>=W_CleContrat[6,3]
         k=k+1

      REPEAT
      READ ENR_CIVILAIDANT FROM F.CIVILAIDANT,W_SauveAidant ELSE ENR_CIVILAIDANT=""

      GOSUB 10

   END


*********************************************************
* apuration de CIVILAIDANT sorti depuis + de 5 ans      *
*********************************************************

   W_Mois=W_Periode[5,2]+1
   W_An=W_Periode[1,4]-3
   IF W_Mois="13" THEN
      W_Mois="01"
      W_An=W_An+1
   END

   W_Date = ICONV("01/":W_Mois:"/":W_An,"D4/")-1

   EXECUTE 'SELECT CIVILAIDANT AVEC 36 <= "':W_Date:'" AND AVEC 36 # ""'
   EXECUTE 'SAUVE-LISTE W_RequeteAidant'
   EXECUTE "LISTE W_RequeteAidant" RETURNING MSGCODE

   IF MSGCODE<1> # 209 THEN

      SELECT F.CIVILAIDANT TO W_RequeteAidant

      W_Fin="FAUX"

      LOOP
         READNEXT W_CleAidant FROM W_RequeteAidant ELSE W_Fin = "VRAI"
      WHILE W_Fin = "FAUX" DO

         READ ENR_CIVILAIDANT FROM F.CIVILAIDANT,W_CleAidant ELSE ENR_CIVILAIDANT=""
         WRITE ENR_CIVILAIDANT ON F.CIVILAIDANTARCHIVE,W_CleAidant

         DELETE F.CIVILAIDANT,W_CleAidant
         DELETE F.BLOCNOTAIDANT,W_CleAidant
         DELETE F.CAPIMPAIDANT,W_CleAidant
         DELETE F.FORMEXPAIDANT,W_CleAidant     
         DELETE F.INFOSAIDANT,W_CleAidant
         DELETE F.MISSIONSAIDANT,W_CleAidant
         DELETE F.RIBAIDANT,W_CleAidant
         DELETE F.ETRANGER,W_CleAidant
      REPEAT

   END


*********************************************************
* apuration de ABSENCESAIDANT si l'aidant n'existe plus *
*********************************************************

   EXECUTE 'SELECT ABSENCESAIDANT AVEC NomAidant = ""'
   EXECUTE 'SAUVE-LISTE W_RequeteAbs'
   EXECUTE "LISTE W_RequeteAbs" RETURNING MSGCODE

   IF MSGCODE<1> # 209 THEN

      SELECT F.ABSENCESAIDANT TO W_RequeteAbs

      W_Fin="FAUX"

      LOOP
         READNEXT W_CleAbs FROM W_RequeteAbs ELSE W_Fin = "VRAI"
      WHILE W_Fin = "FAUX" DO
         DELETE F.ABSENCESAIDANT,W_CleAbs

      REPEAT

   END


*********************************************************
* apuration de CONTRAT si l'aidant n'existe plus        *
*********************************************************

   EXECUTE 'SELECT CONTRAT AVEC NomAidantContrat = ""'
   EXECUTE 'SAUVE-LISTE W_RequeteCont'
   EXECUTE "LISTE W_RequeteCont" RETURNING MSGCODE

   IF MSGCODE<1> # 209 THEN

      SELECT F.CONTRAT TO W_RequeteCont

      W_Fin="FAUX"

      LOOP
         READNEXT W_CleContrat FROM W_RequeteCont ELSE W_Fin = "VRAI"
      WHILE W_Fin = "FAUX" DO
         DELETE F.CONTRAT,W_CleContrat
         DELETE F.RATTSALANT,W_CleContrat

      REPEAT

   END


*********************************************************
* apuration des contrats supprims dans ABSENCESAIDANT  *
*********************************************************

   * recherche si une absence n'est pas rattache au contrat qu'on veut supprimer
   * si c'est le cas, supprime le contrat de l'absence et les MV associes
   EXECUTE 'SELECT ABSENCESAIDANT AVEC 17 # "" AND AVEC ConvColContrat17 = "" OR AVEC 18 # "" AND AVEC ConvColContrat18 = "" OR AVEC 26 # "" AND AVEC ConvColContrat26 = ""'
   EXECUTE 'SAUVE-LISTE W_RequeteAbs'
   EXECUTE "LISTE W_RequeteAbs" RETURNING MSGCODE

   IF MSGCODE<1> # 209 THEN

      SELECT F.ABSENCESAIDANT TO W_RequeteAbs

      W_Fin="FAUX"

      LOOP
         READNEXT W_CleAbs FROM W_RequeteAbs ELSE W_Fin = "VRAI"
      WHILE W_Fin = "FAUX" DO

         READ ENR_ABSENCESAIDANT FROM F.ABSENCESAIDANT,W_CleAbs ELSE ENR_ABSENCESAIDANT=""
               
         ENR_CONTRAT=""
         W_Count=DCOUNT(ENR_ABSENCESAIDANT<17>,CHAR(253))
         FOR i = 1 TO W_Count
            READ ENR_CONTRAT FROM F.CONTRAT,ENR_ABSENCESAIDANT<17,i> ELSE ENR_CONTRAT=""
            IF ENR_CONTRAT="" THEN
               ENR_ABSENCESAIDANT=DELETE(ENR_ABSENCESAIDANT,13,i)
               ENR_ABSENCESAIDANT=DELETE(ENR_ABSENCESAIDANT,14,i)
               ENR_ABSENCESAIDANT=DELETE(ENR_ABSENCESAIDANT,15,i)
               ENR_ABSENCESAIDANT=DELETE(ENR_ABSENCESAIDANT,16,i)
               ENR_ABSENCESAIDANT=DELETE(ENR_ABSENCESAIDANT,17,i)
               ENR_ABSENCESAIDANT=DELETE(ENR_ABSENCESAIDANT,20,i)
               i=i-1
               W_Count=W_Count-1
            END
         NEXT i

         W_Count=DCOUNT(ENR_ABSENCESAIDANT<18>,CHAR(253))
         FOR i = 1 TO W_Count
            READ ENR_CONTRAT FROM F.CONTRAT,ENR_ABSENCESAIDANT<18,i> ELSE ENR_CONTRAT=""
            IF ENR_CONTRAT="" THEN
               ENR_ABSENCESAIDANT=DELETE(ENR_ABSENCESAIDANT,18,i)
               i=i-1
               W_Count=W_Count-1
            END
         NEXT i

         W_Count=DCOUNT(ENR_ABSENCESAIDANT<26>,CHAR(253))
         FOR i = 1 TO W_Count
            READ ENR_CONTRAT FROM F.CONTRAT,ENR_ABSENCESAIDANT<26,i> ELSE ENR_CONTRAT=""
            IF ENR_CONTRAT="" THEN
               ENR_ABSENCESAIDANT=DELETE(ENR_ABSENCESAIDANT,21,i)
               ENR_ABSENCESAIDANT=DELETE(ENR_ABSENCESAIDANT,22,i)
               ENR_ABSENCESAIDANT=DELETE(ENR_ABSENCESAIDANT,23,i)
               ENR_ABSENCESAIDANT=DELETE(ENR_ABSENCESAIDANT,24,i)
               ENR_ABSENCESAIDANT=DELETE(ENR_ABSENCESAIDANT,25,i)
               ENR_ABSENCESAIDANT=DELETE(ENR_ABSENCESAIDANT,26,i)
               i=i-1
               W_Count=W_Count-1
            END
         NEXT i
         WRITE ENR_ABSENCESAIDANT ON F.ABSENCESAIDANT,W_CleAbs

      REPEAT

   END


*********************************************************
* apuration de REJETSORGCHG si l'aid n'existe plus     *
*********************************************************

   EXECUTE 'SELECT REJETSORGCHG AVEC NomPrenomAideRejet = ""'
   EXECUTE 'SAUVE-LISTE W_RequeteRejet'
   EXECUTE "LISTE W_RequeteRejet" RETURNING MSGCODE

   IF MSGCODE<1> # 209 THEN

      SELECT F.REJETSORGCHG TO W_RequeteRejet

      W_Fin="FAUX"

      LOOP
         READNEXT W_CleRejet FROM W_RequeteRejet ELSE W_Fin = "VRAI"
      WHILE W_Fin = "FAUX" DO
         DELETE F.REJETSORGCHG,W_CleRejet
      REPEAT

   END


*********************************************************
* apuration de ACTIVITESBISAIDE si l'aid n'existe plus *
*********************************************************

   EXECUTE 'SELECT ACTIVITESBISAIDE AVEC NomAide = ""'
   EXECUTE 'SAUVE-LISTE W_RequeteAct'
   EXECUTE "LISTE W_RequeteAct" RETURNING MSGCODE

   IF MSGCODE<1> # 209 THEN

      SELECT F.ACTIVITESBISAIDE TO W_RequeteAct

      W_Fin="FAUX"

      LOOP
         READNEXT W_CleAct FROM W_RequeteAct ELSE W_Fin = "VRAI"
      WHILE W_Fin = "FAUX" DO
         DELETE F.ACTIVITESBISAIDE,W_CleAct
      REPEAT

   END


*********************************************************
* apuration de COMPLFACT si l'aid n'existe plus        *
*********************************************************

   EXECUTE 'SELECT COMPLFACT AVEC NomAideComplFact = ""'
   EXECUTE 'SAUVE-LISTE W_RequeteCompl'
   EXECUTE "LISTE W_RequeteCompl" RETURNING MSGCODE

   IF MSGCODE<1> # 209 THEN

      SELECT F.COMPLFACT TO W_RequeteCompl

      W_Fin="FAUX"

      LOOP
         READNEXT W_CleCompl FROM W_RequeteCompl ELSE W_Fin = "VRAI"
      WHILE W_Fin = "FAUX" DO
         DELETE F.COMPLFACT,W_CleCompl
      REPEAT

   END


*********************************************************
* apuration de DETAILABSAIDE si l'aid n'existe plus    *
*********************************************************

   EXECUTE 'SELECT DETAILABSAIDE AVEC NomAide = ""'
   EXECUTE 'SAUVE-LISTE W_RequeteDetAbs'
   EXECUTE "LISTE W_RequeteDetAbs" RETURNING MSGCODE

   IF MSGCODE<1> # 209 THEN

      SELECT F.DETAILABSAIDE TO W_RequeteDetAbs

      W_Fin="FAUX"

      LOOP
         READNEXT W_CleDetAbs FROM W_RequeteDetAbs ELSE W_Fin = "VRAI"
      WHILE W_Fin = "FAUX" DO
         DELETE F.DETAILABSAIDE,W_CleDetAbs
      REPEAT

   END


*********************************************************
* apuration de HRESATTENTE si l'aid n'existe plus      *
*********************************************************

   EXECUTE 'SELECT HRESATTENTE AVEC CommuneHresAttente = ""'
   EXECUTE 'SAUVE-LISTE W_RequeteAtt'
   EXECUTE "LISTE W_RequeteAtt" RETURNING MSGCODE

   IF MSGCODE<1> # 209 THEN

      SELECT F.HRESATTENTE TO W_RequeteAtt

      W_Fin="FAUX"

      LOOP
         READNEXT W_CleAtt FROM W_RequeteAtt ELSE W_Fin = "VRAI"
      WHILE W_Fin = "FAUX" DO
         DELETE F.HRESATTENTE,W_CleAtt 
      REPEAT

   END


*********************************************************
* apuration de DETAILINDEM si l'aidant n'existe plus    *
*********************************************************

   EXECUTE 'SELECT DETAILINDEM AVEC NomAidantDetailIndem = ""'
   EXECUTE 'SAUVE-LISTE W_RequeteIndem'
   EXECUTE "LISTE W_RequeteIndem" RETURNING MSGCODE

   IF MSGCODE<1> # 209 THEN

      SELECT F.DETAILINDEM TO W_RequeteIndem

      W_Fin="FAUX"

      LOOP
         READNEXT W_CleInd FROM W_RequeteIndem ELSE W_Fin = "VRAI"
      WHILE W_Fin = "FAUX" DO
         DELETE F.DETAILINDEM,W_CleInd
      REPEAT

   END


*********************************************************
* apuration de OPPOSITION si l'aidant n'existe plus     *
*********************************************************

   EXECUTE 'SELECT OPPOSITION AVEC NomAidant = ""'
   EXECUTE 'SAUVE-LISTE W_RequeteOpp'
   EXECUTE "LISTE W_RequeteOpp" RETURNING MSGCODE

   IF MSGCODE<1> # 209 THEN

      SELECT F.OPPOSITION TO W_RequeteOpp

      W_Fin="FAUX"

      LOOP
         READNEXT W_CleOpp FROM W_RequeteOpp ELSE W_Fin = "VRAI"
      WHILE W_Fin = "FAUX" DO
         DELETE F.OPPOSITION,W_CleOpp
      REPEAT

   END


STOP

*************************************************************************************************
* apuration de CIVILAIDANT  A - 2 si contrat uniquement mandataire et si sorti depuis + de 2 ans   

10

   W_Count=DCOUNT(W_SauveContrat,CHAR(254))
   IF ENR_CIVILAIDANT<42> # "" THEN
      W_Count42=DCOUNT(ENR_CIVILAIDANT<42>,CHAR(253))
   END ELSE
      W_Count42=0
   END

   FOR i = 1 TO W_Count
      W_Count42=W_Count42+1
      ENR_CIVILAIDANT<42,W_Count42>=W_SauveContrat<i>
   NEXT i

   WRITE ENR_CIVILAIDANT ON F.CIVILAIDANT,W_SauveAidant

   W_SauveContrat=""
   k=1

   IF INT(ENR_CIVILAIDANT<36>) <= INT(W_Date) THEN
      W_Trouve="FAUX"
      FOR i = 1 TO ENR_CIVILAIDANT<41>
         READ ENR_CONTRAT FROM F.CONTRAT,W_SauveAidant:i "R%3" THEN
            W_Trouve="VRAI"
            EXIT
         END
      NEXT i
      IF W_Trouve="FAUX" THEN

         WRITE ENR_CIVILAIDANT ON F.CIVILAIDANTARCHIVE,W_SauveAidant

         DELETE F.CIVILAIDANT,W_SauveAidant
         DELETE F.BLOCNOTAIDANT,W_SauveAidant
         DELETE F.CAPIMPAIDANT,W_SauveAidant
         DELETE F.FORMEXPAIDANT,W_SauveAidant     
         DELETE F.INFOSAIDANT,W_SauveAidant
         DELETE F.MISSIONSAIDANT,W_SauveAidant
         DELETE F.RIBAIDANT,W_SauveAidant
         DELETE F.ETRANGER,W_SauveAidant
      END     
   END

RETURN


*************************************************************************************************
* apuration et rorganisation des accords 

30

   * lecture pour trouver le dernier accord

   W_End="FAUX"
   W_Cle=W_SauveAide:"000"

   LOOP
   WHILE W_End = "FAUX" DO

      W_Cle = W_Cle+1
      W_Cle=W_Cle "R%8"
      READ ENR_ACCORD FROM F.ACCORD,W_Cle ELSE W_End = "VRAI"

   REPEAT

   W_Max = W_Cle-1
   W_Max = W_Max "R%8"

   W_Count=DCOUNT(W_SauveAccord,CHAR(254))
   FOR i = W_Count TO 1 STEP -1
      DELETE F.ACCORD,W_SauveAccord<i>
      IF W_SauveAccord<i>=W_Max THEN
         W_Max = W_Max-1
         W_Max = W_Max "R%8"
      END
   NEXT i

   FOR i = W_SauveAide:"001" TO W_Max

      ENR_ACCORD=""
      W_Cle=i "R%8"

      READ ENR_ACCORD FROM F.ACCORD,W_Cle ELSE ENR_ACCORD=""
      IF ENR_ACCORD="" THEN

         READ ENR_ACCORD FROM F.ACCORD,W_Max ELSE ENR_ACCORD=""

         IF ENR_ACCORD # "" THEN
            WRITE ENR_ACCORD ON F.ACCORD,W_Cle
            DELETE F.ACCORD,W_Max

            W_End="FAUX"

            LOOP
            WHILE W_End = "FAUX" DO

               W_Max = W_Max-1
               W_Max = W_Max "R%8"
               READ ENR_ACCORD FROM F.ACCORD,W_Max THEN
                  W_End = "VRAI"
               END

            REPEAT
         END

      END
               
   NEXT i

   W_SauveAccord=""
   k=1
   W_SauveAide = W_CleAcc[1,5]

RETURN
