***************************************************************
* 2 fonctionnalits :
* - Gnration du fichier DADS  la norme N4DS - type traitement = 1
* - Gnration du fichier pour l'attestation emploi dmatrialise (DNAC) - type traitement = 2
* 
* DIDIER - OCTOBRE 2011
***************************************************************

EXECUTE "SET-DEC ."
EXECUTE "DATE.FORMAT"

OPEN "","ABSENCESAIDANT" TO F.ABSENCESAIDANT ELSE STOP
OPEN "","ACTIVITES" TO F.ACTIVITES ELSE STOP
OPEN "","ASSOCIATION" TO F.ASSOCIATION ELSE STOP
OPEN "","CIVILAIDANT" TO F.CIVILAIDANT ELSE STOP
OPEN "","CONTRAT" TO F.CONTRAT ELSE STOP
OPEN "","DADS-U" TO F.DADSU ELSE STOP
OPEN "","ETABLISSEMENT" TO F.ETABLISSEMENT ELSE STOP
OPEN "","HISTORCUMUL" TO F.HISTORCUMUL ELSE STOP
OPEN "","ORGANISMESOCIAL" TO F.ORGANISMESOCIAL ELSE STOP
OPEN "","TDSRETRAITE" TO F.TDSRETRAITE ELSE STOP
OPEN "","RUBCHARGE" TO F.RUBCHARGE ELSE STOP
OPEN "","TABLES" TO F.TABLES ELSE STOP
OPEN "","TAMPONDADS" TO F.TAMPONDADS ELSE STOP
OPEN "","TEMPO" TO F.TEMPO ELSE STOP
OPEN "","TRANCHE" TO F.TRANCHE ELSE STOP
OPEN "","PAYS" TO F.PAYS ELSE STOP
OPEN "","PRUDCASPARTICULIERS" TO F.PRUDCASPARTICULIERS ELSE STOP
OPEN "","TDSCASPARTICULIERSDADSU" TO F.TDSCASPARTICULIERSDADSU ELSE STOP
OPEN "","TDSFRAISPROFESSIONNELS" TO F.TDSFRAISPROFESSIONNELS ELSE STOP
OPEN "","TDSEPARGNESAL" TO F.TDSEPARGNESAL ELSE STOP
OPEN "","TDSHONORAIRES" TO F.TDSHONORAIRES ELSE STOP
OPEN "","TDSTARIFICATIONAT" TO F.TDSTARIFICATIONAT ELSE STOP
OPEN "","TDSURSSAFPLAFOND" TO F.TDSURSSAFPLAFOND ELSE STOP
OPEN "","TDSURSSAFTOTALITE" TO F.TDSURSSAFTOTALITE ELSE STOP
OPEN "","TDSCNRACL" TO F.TDSCNRACL ELSE NULL
OPEN "","HISTORCUMULPERACT" TO F.HISTORCUMULPERACT ELSE STOP
OPEN "","PROFIL" TO F.PROFIL ELSE STOP
OPEN "","CONSTANTESPAIE" TO F.CONSTANTESPAIE ELSE STOP
OPEN "","TDSPARAMCNRACL" TO F.TDSPARAMCNRACL ELSE STOP
OPEN "","TDSPREVOYANCE" TO F.TDSPREVOYANCE ELSE STOP
OPEN "","PARAMPOLEEMPLOI" TO F.PARAMPOLEEMPLOI ELSE STOP
OPEN "","POLEEMPLOI" TO F.POLEEMPLOI ELSE STOP
OPEN "","COMPTEUR" TO F.COMPTEUR ELSE STOP
OPEN "","RUBSAISIE" TO F.RUBSAISIE ELSE STOP
OPEN "","REGRUBSAISIE" TO F.REGRUBSAISIE ELSE STOP
OPEN "","CONVENTIONCOL" TO F.CONVENTIONCOL ELSE STOP
OPEN "","DETAILCALCUL" TO F.DETAILCALCUL ELSE STOP
OPEN "","POLEEMPLOI" TO F.POLEEMPLOI ELSE STOP
OPEN "","CIVILAIDE" TO F.CIVILAIDE ELSE STOP
OPEN "","ELTSPARTEMP" TO F.ELTSPARTEMP ELSE STOP

**********
* RECUPERATION DES PARAMETRES PASSES A LA PROCEDURE
**********
PROCREAD PARAMETRES ELSE STOP
* RECUPERE LE TYPE DE TRAITEMENT : 1 POUR DADS, 2 POUR DNAC
W_RANGTRAIT=INDEX(PARAMETRES," ",1)
W_TYPETRAIT=PARAMETRES[W_RANGTRAIT+1,1]
IF W_TYPETRAIT="1" THEN
   W_RANGANNEE=INDEX(PARAMETRES," ",2)
   W_ANNEE=PARAMETRES[W_RANGANNEE+1,4]
   W_RANGENTITE=INDEX(PARAMETRES," ",3)
   W_CODEENTITE=PARAMETRES[W_RANGENTITE+1,3]
   W_RANGTYPE=INDEX(PARAMETRES," ",4)
   W_TYPE=PARAMETRES[W_RANGTYPE+1,1]
   W_TYPEACT=""
END ELSE
   W_RANGANNEE=INDEX(PARAMETRES," ",2)
   W_ANNEEMOIS=PARAMETRES[W_RANGANNEE+1,6]
   W_ANNEE=W_ANNEEMOIS[1,4]
   W_RANGENTITE=INDEX(PARAMETRES," ",3)
   W_CODEENTITE=PARAMETRES[W_RANGENTITE+1,3]
   W_RANGTYPEACT=INDEX(PARAMETRES," ",4)
   W_TYPEACT=PARAMETRES[W_RANGTYPEACT+1,1]
   W_RANGDATESYST=INDEX(PARAMETRES," ",5)
   W_DATESYST=PARAMETRES[W_RANGDATESYST+1,8]
* Didier 14/11/2013 : date systme en interne pour gestion numro de version
   W_DATESYSTINTERNE=ICONV(W_DATESYST[1,2]:"/":W_DATESYST[3,2]:"/":W_DATESYST[5,4],"D4/")
   W_RANGHEURESYST=INDEX(PARAMETRES," ",6)
   W_HEURESYST=PARAMETRES[W_RANGHEURESYST+1,6]
   W_RANGCODEAIDANT=INDEX(PARAMETRES," ",7)
   W_LONGPARAM=LEN(PARAMETRES)
   W_TABCODEAIDANT=PARAMETRES[38,W_LONGPARAM-37]
END
* Didier 20/01/2012 : gestion numro ordre par paquet de 100 A.E.D.
* Didier 20/02/2012 : gestion par paquet de 70 A.E.D. car taille  ne pas dpasser
* Didier 01/03/2012 : gestion par paquet de 50 A.E.D. pour permettre dition groupe en un clic
* Mikael 28/06/2012 : gestion numro ordre par paquet de 20 A.E.D.
W_NUMORDRE=1

**********
* TRAITEMENT
**********

W_DECLARIRCANTECCNRACL="NON" 
W_NBSALDECLARE = 0
LISTETDSHONO = ""
LISTEABSAIDANT = ""
W_TOTALHONORAIRES = 0

ENR_ERREURDADSU = ""
W_NBERREURDADSU = 0
ENR_DADSDNAC = ""
W_TOTALGENETOT = 0
W_TOTALGENEPLAF = 0
W_TOTALGENEBRUTE = 0
W_TOTALGENECSG = 0
W_TOTALGENENET = 0
W_TOTALGENETAXE = 0
W_TOTALGENETAXE1 = 0
W_TOTALGENETAXE2 = 0
W_MONTANTTAXETOT=0
W_MONTANTTAXETR1=0
W_MONTANTTAXETR2=0
W_TABRETRAITERAPPORT=""
W_TABCASPARTRAPPORT=""
W_TABPREVOYANCERAPPORT=""
W_CASCNRACL="NON"
W_CASIRCANTEC="NON"
W_CASNBI="NON"
W_CASRAFP="NON"
W_MONTREDUCFILLON=0
W_BASEREDUCFILLON=0
W_BASESMICREDUCFILLON=0
W_MONTSUPPLFAMILIAL=0
W_CUMULHEURESPAYEES=0
W_CUMULBRUT=0
W_DERNIERMOIS60SMICHH=0
W_BASECNRACLEXOSANSNBI=0
W_BASECNRACLNONEXOSANSNBI=0
W_COTISPATROCNRACLEXOSANSNBI=0
W_COTISPATROCNRACLNONEXOSANSNBI=0
W_COTISSALCNRACLEXOSANSNBI=0
W_COTISSALCNRACLNONEXOSANSNBI=0
W_MONTSUPPLCOMPL=0
W_BASENBI=0
W_COTISPATRONBI=0
W_COTISSALNBI=0
W_BASERAFP=0
W_COTISPATRORAFP=0
W_COTISSALRAFP=0
W_TOTREDUCFILLON=0
W_TABPERIODEACTIVITE=""
W_NBSTRUCTURES20=0
W_TABCONTRATAIDANT=""

**********
* TRAITEMENT
**********

READ ENR_CONSTANTESPAIE FROM F.CONSTANTESPAIE, "1" ELSE STOP
W_SMICENVIGUEUR=0
I=1
LOOP
UNTIL W_SMICENVIGUEUR#0 DO
   W_DATESMIC=OCONV(ENR_CONSTANTESPAIE<4,I>,"D4/")
   IF W_DATESMIC[7,4]<=W_ANNEE THEN W_SMICENVIGUEUR=ENR_CONSTANTESPAIE<3,I>
   I=I+1
REPEAT
IF W_SMICENVIGUEUR=0 THEN W_SMICENVIGUEUR=ENR_CONSTANTESPAIE<3,1>

READ ENR_TDSPARAMCNRACL FROM F.TDSPARAMCNRACL,"1" ELSE ENR_TDSPARAMCNRACL=""
READ ENR_PARAMPOLEEMPLOI FROM F.PARAMPOLEEMPLOI,"1" ELSE ENR_PARAMPOLEEMPLOI=""
READ ENR_REGRUBSAISIE FROM F.REGRUBSAISIE,"ASSEDIC" ELSE ENR_REGRUBSAISIE=""

IF W_TYPETRAIT="1" THEN

* Didier 15/11/2012 : gestion pargne salariale
   * MAJ FLAG DE TRAITEMENT DANS FICHIER TDSEPARGNESAL
   LISTTDSEPARGNESAL=""
   EXECUTE 'SSELECT TDSEPARGNESAL AVEC 0 = "':W_ANNEE:W_CODEENTITE:']" AND AVEC 4 = "1"'
   EXECUTE 'SAUVE-LISTE LISTTDSEPARGNESAL'
   EXECUTE "LISTE LISTTDSEPARGNESAL" RETURNING MSGCODE
   IF MSGCODE<1>#209 THEN
      SELECT F.TDSEPARGNESAL TO LISTTDSEPARGNESAL
      W_FINTDSEPARGNESAL = "NON"
      LOOP
         READNEXT CLETDSEPARGNESAL FROM LISTTDSEPARGNESAL ELSE W_FINTDSEPARGNESAL = "OUI"
      UNTIL W_FINTDSEPARGNESAL = "OUI" DO
         READ ENR_TDSEPARGNESAL FROM F.TDSEPARGNESAL,CLETDSEPARGNESAL ELSE ENR_TDSEPARGNESAL=""
         ENR_TDSEPARGNESAL<4>=""
         WRITE ENR_TDSEPARGNESAL ON F.TDSEPARGNESAL,CLETDSEPARGNESAL
      REPEAT
   END
   EXECUTE "EFFACER-LISTE LISTTDSEPARGNESAL"

   * MAJ FLAG DE TRAITEMENT DANS FICHIER TDSFRAISPROFESSIONNELS
   LISTTDSFRAISPROF=""
   EXECUTE 'SSELECT TDSFRAISPROFESSIONNELS AVEC 0 = "':W_ANNEE:W_CODEENTITE:']" AND AVEC 3 = "1"'
   EXECUTE 'SAUVE-LISTE LISTTDSFRAISPROF'
   EXECUTE "LISTE LISTTDSFRAISPROF" RETURNING MSGCODE
   IF MSGCODE<1>#209 THEN
      SELECT F.TDSFRAISPROFESSIONNELS TO LISTTDSFRAISPROF
      W_FINTDSFRAISPROF = "NON"
      LOOP
         READNEXT CLETDSFRAISPROF FROM LISTTDSFRAISPROF ELSE W_FINTDSFRAISPROF = "OUI"
      UNTIL W_FINTDSFRAISPROF = "OUI" DO
         READ ENR_TDSFRAISPROFESSIONNELS FROM F.TDSFRAISPROFESSIONNELS,CLETDSFRAISPROF ELSE ENR_TDSFRAISPROFESSIONNELS=""
         ENR_TDSFRAISPROFESSIONNELS<3>=""
         WRITE ENR_TDSFRAISPROFESSIONNELS ON F.TDSFRAISPROFESSIONNELS,CLETDSFRAISPROF
      REPEAT
   END
   EXECUTE "EFFACER-LISTE LISTTDSFRAISPROF"

   * MAJ FLAG DE TRAITEMENT DANS FICHIER TDSCNRACL
   LISTTDSCNRACL=""
   EXECUTE 'SSELECT TDSCNRACL AVEC 0 = "[':W_CODEENTITE:W_ANNEE:'" AND AVEC 4 = "1"'
   EXECUTE 'SAUVE-LISTE LISTTDSCNRACL'
   EXECUTE "LISTE LISTTDSCNRACL" RETURNING MSGCODE
   IF MSGCODE<1>#209 THEN
      SELECT F.TDSCNRACL TO LISTTDSCNRACL
      W_FINTDSCNRACL = "NON"
      LOOP
         READNEXT CLETDSCNRACL FROM LISTTDSCNRACL ELSE W_FINTDSCNRACL = "OUI"
      UNTIL W_FINTDSCNRACL = "OUI" DO
         READ ENR_TDSCNRACL FROM F.TDSCNRACL,CLETDSCNRACL ELSE ENR_TDSCNRACL=""
         ENR_TDSCNRACL<4>=""
         WRITE ENR_TDSCNRACL ON F.TDSCNRACL,CLETDSCNRACL
      REPEAT
   END
   EXECUTE "EFFACER-LISTE LISTTDSCNRACL"

   * CHARGEMENT EN TABLE DES TARIFICATIONS AT
   W_TABETAB=""
   LISTTDSTARIFAT=""
   EXECUTE 'TSELECT TDSTARIFICATIONAT AVEC 0 = "':W_ANNEE:W_CODEENTITE:']"'
   EXECUTE 'SAUVE-LISTE LISTTDSTARIFAT'
   EXECUTE "LISTE LISTTDSTARIFAT" RETURNING W_MSG
   SELECT F.TDSTARIFICATIONAT TO LISTTDSTARIFAT
   IF W_MSG<1>#209 THEN
      I=1
      W_FINTDSTARIFAT = "NON"
      LOOP
         READNEXT CLETDSTARIFAT FROM LISTTDSTARIFAT ELSE W_FINTDSTARIFAT = "OUI"
      UNTIL W_FINTDSTARIFAT = "OUI" DO
         READ ENR_TDSTARIFICATIONAT FROM F.TDSTARIFICATIONAT,CLETDSTARIFAT ELSE ENR_TDSTARIFICATIONAT = ""
         W_TABETAB<1,I>=CLETDSTARIFAT
         W_TABETAB<2,I>=ENR_TDSTARIFICATIONAT<1>
         W_TABETAB<3,I>=ENR_TDSTARIFICATIONAT<2>
         W_TABETAB<4,I>=ENR_TDSTARIFICATIONAT<3>
         W_TABETAB<5,I>=ENR_TDSTARIFICATIONAT<4>
         W_TABETAB<6,I>=ENR_TDSTARIFICATIONAT<5>
         W_TABETAB<7,I>=ENR_TDSTARIFICATIONAT<11>
         W_TABETAB<8,I>=ENR_TDSTARIFICATIONAT<6>
         I=I+1
      REPEAT
   END
   EXECUTE "EFFACER-LISTE LISTTDSTARIFAT"

   * CHARGEMENT EN TABLE POUR PREVOYANCES
   LISTTDSPREVOYANCE=""
   W_TABPREVOYANCE=""
   EXECUTE 'SELECT TDSPREVOYANCE AVEC TypeOrgTdsPrevoyance = "08" AND AVEC CodeOrgTdsPrevoyance # "" AND AVEC CodeAssoTdsPrevoyance = "':W_CODEENTITE:'" PAR @ID'
   EXECUTE 'SAUVE-LISTE LISTTDSPREVOYANCE'
   EXECUTE "LISTE LISTTDSPREVOYANCE" RETURNING W_MSG
   SELECT F.TDSPREVOYANCE TO LISTTDSPREVOYANCE
   IF W_MSG<1>#209 THEN
      W_FINTDSPREVOYANCE = "NON"
      LOOP
         READNEXT CLETDSPREVOYANCE FROM LISTTDSPREVOYANCE ELSE W_FINTDSPREVOYANCE = "OUI"
      UNTIL W_FINTDSPREVOYANCE = "OUI" DO
         READ ENR_TDSPREVOYANCE FROM F.TDSPREVOYANCE,CLETDSPREVOYANCE ELSE ENR_TDSPREVOYANCE = ""
         READ ENR_ORGANISMESOCIAL FROM F.ORGANISMESOCIAL,CLETDSPREVOYANCE ELSE ENR_ORGANISMESOCIAL = ""
         W_NBRUB = DCOUNT(ENR_TDSPREVOYANCE<1>,CHAR(253))
         FOR I = 1 TO W_NBRUB
            READ ENR_RUBCHARGE FROM F.RUBCHARGE,ENR_TDSPREVOYANCE<1,I> ELSE ENR_RUBCHARGE = ""
            READ ENR_TRANCHE FROM F.TRANCHE,ENR_RUBCHARGE<2> ELSE ENR_TRANCHE = ""
            W_NBORG = DCOUNT(W_TABPREVOYANCE<1>,CHAR(253))
            IF W_NBORG = 0 THEN 
               J = -1
            END ELSE	
               FOR J = 1 TO W_NBORG
                  IF W_TABPREVOYANCE<1,J> = CLETDSPREVOYANCE THEN EXIT
               NEXT J
            END
            W_TABPREVOYANCE<1,J> = CLETDSPREVOYANCE
            * TRANCHE TOTALITE
            IF ENR_TRANCHE<10> = "01" THEN W_TABPREVOYANCE<2,J,-1> = ENR_TDSPREVOYANCE<1,I>
            * TRANCHE A
            IF ENR_TRANCHE<10> = "02" THEN W_TABPREVOYANCE<3,J,-1> = ENR_TDSPREVOYANCE<1,I>
            * TRANCHE B
            IF ENR_TRANCHE<10> = "03" THEN W_TABPREVOYANCE<7,J,-1> = ENR_TDSPREVOYANCE<1,I>
            W_TABPREVOYANCE<4,J> = ENR_ORGANISMESOCIAL<17>
            W_TABPREVOYANCE<5,J> = ENR_ORGANISMESOCIAL<20>
            W_TABPREVOYANCE<6,J> = ENR_ORGANISMESOCIAL<1>
            W_TABPREVOYANCE<8,J> = ENR_ORGANISMESOCIAL<21>
            W_TABPREVOYANCE<9,J> = ENR_ORGANISMESOCIAL<3>
            W_TABPREVOYANCE<10,J> = ENR_ORGANISMESOCIAL<22>
            W_TABPREVOYANCE<11,J> = ENR_ORGANISMESOCIAL<23>
* Didier 15/11/2012 : code population rattachement
            W_TABPREVOYANCE<12,J> = ENR_ORGANISMESOCIAL<24>
         NEXT I
      REPEAT
      EXECUTE "EFFACER-LISTE LISTTDSPREVOYANCE"
   END
END

* RECHERCHE DES TAXES SUR LES SALAIRES ET DES RUBRIQUES URSSAT TOTALITE AVEC TRANCHE SUR ASSIETTE INDIVIDUELLE
W_MONTANTTAXETOT=0
W_MONTANTTAXETR1=0
W_MONTANTTAXETR2=0
W_TAUXTAXETOT=0
W_TAUXTAXETR1=0
W_TAUXTAXETR2=0
W_PLANCHERTAXETR1=0
W_PLAFONDTAXETR1=0
W_TABURSSAFTOTFORFAIT=""
W_TABCSG=""
W_TABTAXESALTOT=""
LISTRUBCHARGE=""
EXECUTE 'SELECT RUBCHARGE AVEC 16 = "05" OR AVEC 16 = "01" AND AVEC TypeTranche = "01" OR AVEC TypeTranche = "06"'
EXECUTE 'SAUVE-LISTE LISTRUBCHARGE'
EXECUTE "LISTE LISTRUBCHARGE" RETURNING W_MSG
SELECT F.RUBCHARGE TO LISTRUBCHARGE
IF W_MSG<1>#209 THEN
   W_FINRUBCHARGE = "NON"
   LOOP
      READNEXT CLERUBCHARGE FROM LISTRUBCHARGE ELSE W_FINRUBCHARGE = "OUI"
   UNTIL W_FINRUBCHARGE = "OUI" DO
      READ ENR_RUBCHARGE FROM F.RUBCHARGE,CLERUBCHARGE ELSE ENR_RUBCHARGE = ""
      READ ENR_TRANCHE FROM F.TRANCHE,ENR_RUBCHARGE<2> ELSE ENR_TRANCHE = ""
      IF ENR_RUBCHARGE<16>="05" THEN
         IF ENR_TRANCHE<10> = "01" THEN
            W_TAUXTAXETOT = ENR_RUBCHARGE<14>
            W_TABTAXESALTOT<-1>=CLERUBCHARGE
         END ELSE
            IF ENR_TRANCHE<5> >= "9999900" THEN
               W_TAUXTAXETR2 = ENR_RUBCHARGE<14>
            END ELSE
               W_TAUXTAXETR1 = ENR_RUBCHARGE<14>
               W_PLANCHERTAXETR1=ENR_TRANCHE<4>
               W_PLAFONDTAXETR1=ENR_TRANCHE<5>
            END
         END
      END ELSE
         IF ENR_TRANCHE<11>#"" THEN W_TABURSSAFTOTFORFAIT<-1>=CLERUBCHARGE
         IF ENR_TRANCHE<10>="06" THEN
            W_TABCSG<1,-1>=CLERUBCHARGE
* Didier 28/01/2013 : forcer ENR_RUBCHARGE<12>  0 si vide car problme nourriture table
            IF ENR_RUBCHARGE<12>="" THEN ENR_RUBCHARGE<12>=0 
            W_TABCSG<2,-1>=ENR_RUBCHARGE<12>
         END
      END
   REPEAT
END
EXECUTE "EFFACER-LISTE LISTRUBCHARGE"

* LECTURE ASSOCIATION
READ ENR_ASSOCIATION FROM F.ASSOCIATION,W_CODEENTITE ELSE ENR_ASSOCIATION=""
W_CODEDECALAGEPAIE=""
W_DERNIERJOURPERDADS=""
IF ENR_ASSOCIATION<25> = "1" THEN
   IF ENR_ASSOCIATION<48> = W_ANNEE THEN
      W_CODEDECALAGEPAIE="02"
      W_ANNEEMOISDEB=W_ANNEE:"01"
      W_ANNEEMOISFIN=W_ANNEE:"11"
      W_DERNIERJOURPERDADS="30/11/":W_ANNEE
   END ELSE	   
     W_CODEDECALAGEPAIE="03"
     W_ANNEEMOISDEB=W_ANNEE-1
     W_ANNEEMOISDEB=W_ANNEEMOISDEB:"12"
     W_ANNEEMOISFIN=W_ANNEE:"11"
     W_DERNIERJOURPERDADS="30/11/":W_ANNEE
   END
END ELSE
   W_CODEDECALAGEPAIE="01"
   W_ANNEEMOISDEB=W_ANNEE:"01"
   W_ANNEEMOISFIN=W_ANNEE:"12"
   W_DERNIERJOURPERDADS="31/12/":W_ANNEE
END
IF W_TYPETRAIT="2" THEN W_CODEDECALAGEPAIE="01"

READ ENR_ACTIVITES FROM F.ACTIVITES,W_CODEENTITE:"001" ELSE ENR_ACTIVITES = ""

* CAS PARTICULIERS + RUBRIQUES URSSAF TOTALITE + RUBRIQUES URSSAF PLAFONNE + TAXES SUR LES SALAIRES
READ ENR_TDSCASPARTICULIERSDADSU FROM F.TDSCASPARTICULIERSDADSU,"1" ELSE ENR_TDSCASPARTICULIERSDADSU = ""
IF W_TYPETRAIT="1" THEN
   IF ENR_TDSCASPARTICULIERSDADSU<4> = W_ANNEE THEN
      W_PLANCHERTAXETR1 = ENR_TDSCASPARTICULIERSDADSU<5>
      W_PLAFONDTAXETR1 = ENR_TDSCASPARTICULIERSDADSU<6>
      W_TAUXTAXETOT = ENR_TDSCASPARTICULIERSDADSU<7>
      W_TAUXTAXETR1 = ENR_TDSCASPARTICULIERSDADSU<8>
      W_TAUXTAXETR2 = ENR_TDSCASPARTICULIERSDADSU<9>
   END ELSE
      ENR_TDSCASPARTICULIERSDADSU<4> = W_ANNEE
      ENR_TDSCASPARTICULIERSDADSU<5> = W_PLANCHERTAXETR1
      ENR_TDSCASPARTICULIERSDADSU<6> = W_PLAFONDTAXETR1
      ENR_TDSCASPARTICULIERSDADSU<7> = W_TAUXTAXETOT
      ENR_TDSCASPARTICULIERSDADSU<8> = W_TAUXTAXETR1
      ENR_TDSCASPARTICULIERSDADSU<9> = W_TAUXTAXETR2
      WRITE ENR_TDSCASPARTICULIERSDADSU ON F.TDSCASPARTICULIERSDADSU,"1"
   END
END
W_ENR_TDSCASPARTICULIERSDADSU=ENR_TDSCASPARTICULIERSDADSU
IF W_TYPETRAIT="1" THEN
   READ ENR_TABLESPARTDADSU FROM F.TABLES,"TYPEEXODADSU" ELSE ENR_TABLESPARTDADSU = ""
   W_NBCASPART = DCOUNT(ENR_TDSCASPARTICULIERSDADSU<2>,CHAR(253))
   W_TABCASPARTICULIERS=""
   FOR I = 1 TO W_NBCASPART
      IF ENR_TDSCASPARTICULIERSDADSU<2,I>#"" THEN
         J = 1
         LOOP
         UNTIL ENR_TABLESPARTDADSU<2,J> = ENR_TDSCASPARTICULIERSDADSU<2,I> OR ENR_TABLESPARTDADSU<2,J> = "" DO
            J = J + 1
         REPEAT
         IF ENR_TABLESPARTDADSU<2,J> = ENR_TDSCASPARTICULIERSDADSU<2,I> THEN
            W_TABCASPARTICULIERS<1,-1>=ENR_TABLESPARTDADSU<2,J>
            W_TABCASPARTICULIERS<2,-1>=ENR_TABLESPARTDADSU<3,J>
            W_TABCASPARTICULIERS<3,-1>=ENR_TDSCASPARTICULIERSDADSU<10,I>
            W_TABCASPARTICULIERS<4,-1>=ENR_TDSCASPARTICULIERSDADSU<1,I>
            W_TABCASPARTICULIERS<5,-1>=0
            W_TABCASPARTICULIERS<6,-1>=0
            W_TABCASPARTICULIERS<7,-1>=0
         END
      END
   NEXT I
   W_TABCASPARTRAPPORT=W_TABCASPARTICULIERS
END
W_TABURSSAFTOT = W_ENR_TDSCASPARTICULIERSDADSU<10>
W_TABURSSAFPLAF = W_ENR_TDSCASPARTICULIERSDADSU<1>

* CHARGEMENT EN TABLE POUR CAISSES DE RETRAITE
LISTTDSRETRAITE=""
W_TABRETRAITE=""
EXECUTE 'SELECT TDSRETRAITE AVEC TypeOrgDadsU = "03" OR = "04" AND AVEC CodeOrgDadsU # "" AND AVEC Asso = "':W_CODEENTITE:'" PAR @ID'
EXECUTE 'SAUVE-LISTE LISTTDSRETRAITE'
EXECUTE "LISTE LISTTDSRETRAITE" RETURNING W_MSG
SELECT F.TDSRETRAITE TO LISTTDSRETRAITE
IF W_MSG<1>#209 THEN
   W_FINTDSRETRAITE = "NON"
   LOOP
      READNEXT CLETDSRETRAITE FROM LISTTDSRETRAITE ELSE W_FINTDSRETRAITE = "OUI"
   UNTIL W_FINTDSRETRAITE = "OUI" DO
	READ ENR_TDSRETRAITE FROM F.TDSRETRAITE,CLETDSRETRAITE ELSE ENR_TDSRETRAITE = ""
      READ ENR_ORGANISMESOCIAL FROM F.ORGANISMESOCIAL,CLETDSRETRAITE ELSE ENR_ORGANISMESOCIAL = ""
      W_NBRUB = DCOUNT(ENR_TDSRETRAITE<1>,CHAR(253))
      FOR I = 1 TO W_NBRUB
         READ ENR_RUBCHARGE FROM F.RUBCHARGE,ENR_TDSRETRAITE<1,I> ELSE ENR_RUBCHARGE = ""
         READ ENR_TRANCHE FROM F.TRANCHE,ENR_RUBCHARGE<2> ELSE ENR_TRANCHE = ""
         W_NBORG = DCOUNT(W_TABRETRAITE<1>,CHAR(253))
         IF W_NBORG = 0 THEN 
            J = -1
         END ELSE	
            FOR J = 1 TO W_NBORG
               IF W_TABRETRAITE<1,J> = CLETDSRETRAITE THEN EXIT
            NEXT J
         END
         W_TABRETRAITE<1,J> = CLETDSRETRAITE
         * TRANCHE TOTALITE
         IF ENR_TRANCHE<10> = "01" THEN W_TABRETRAITE<2,J,-1> = ENR_TDSRETRAITE<1,I>
         * TRANCHE A
         IF ENR_TRANCHE<10> = "02" THEN W_TABRETRAITE<3,J,-1> = ENR_TDSRETRAITE<1,I>
         * TRANCHE B
         IF ENR_TRANCHE<10> = "03" THEN W_TABRETRAITE<7,J,-1> = ENR_TDSRETRAITE<1,I>
         W_TABRETRAITE<4,J> = ENR_ORGANISMESOCIAL<17>
         W_TABRETRAITE<5,J> = ENR_ORGANISMESOCIAL<20>
         W_TABRETRAITE<6,J> = ENR_ORGANISMESOCIAL<1>
         W_TABRETRAITE<8,J> = ENR_ORGANISMESOCIAL<21>
         W_TABRETRAITE<9,J> = ENR_ORGANISMESOCIAL<3>
         W_TABRETRAITE<10,J> = ENR_ORGANISMESOCIAL<22>
      NEXT I
   REPEAT
   EXECUTE "EFFACER-LISTE LISTTDSRETRAITE"
END

IF W_TYPETRAIT="2" THEN
   READ ENR_COMPTEUR FROM F.COMPTEUR,W_CODEENTITE ELSE ENR_COMPTEUR=""
END

IF W_TYPETRAIT="1" THEN
   * TRAITEMENT HISTORCUMULPERACT
   LISTHISTCUMPERACT=""
   EXECUTE 'TSELECT HISTORCUMULPERACT AVEC CodeAssoHistCumPerAct = "':W_CODEENTITE:'" AND AVEC AnneeHistCumulPerAct = "':W_ANNEE:'" PAR CodeEtablHistCumPerAct PAR NomPrenomAidantHistCumPerAct PAR CodeAidantHistCumPerAct PAR NumOrdreHistCumPerAct'
   EXECUTE 'SAUVE-LISTE LISTHISTCUMPERACT'
   EXECUTE "LISTE LISTHISTCUMPERACT" RETURNING W_MSG
   SELECT F.HISTORCUMULPERACT TO LISTHISTCUMPERACT
   IF W_MSG<1>=209 THEN STOP
   GOSUB 100
END ELSE
   LISTCONTRATDNAC=""
   W_REQUETE=""
   W_REQUETE1=""
* Didier 11/02/2013 : suppression dans slection AVEC 116 = "" de manire  produire une AED mme si un autre contrat qui suit
*   W_REQUETE='SSELECT CONTRAT AVEC 65 # "O" AND AVEC 116 = "" AND AVEC 2 = "':W_CODEENTITE:'" AND AVEC 58 = "':W_ANNEEMOIS:'"'
   W_REQUETE='SSELECT CONTRAT AVEC 65 # "O" AND AVEC 2 = "':W_CODEENTITE:'" AND AVEC 58 = "':W_ANNEEMOIS:'"'
   IF W_TABCODEAIDANT="" THEN W_REQUETE=W_REQUETE:' AND AVEC 95 = ""'
   IF W_TYPEACT="M" THEN
	*modif Clment DA13007 12/03/2013 Ajout restriction si Type activit = "M" alors 49 doit tre diffrent de "85"
      W_REQUETE=W_REQUETE:' AND AVEC 1 = "02" AND AVEC 49 <> "85" '
   END ELSE
      W_REQUETE=W_REQUETE:' AND AVEC 1 # "02" AND AVEC EtatAvancementCalcul = "P"'
      IF W_TYPEACT="P" THEN
         W_LONGREQUETE=LEN(W_REQUETE)
         W_REQUETE1=W_REQUETE[16,W_LONGREQUETE-15]
         W_REQUETE1=W_REQUETE1:' AND AVEC 6= "A" AND AVEC TypeActivite <> "S"'
         W_REQUETE=W_REQUETE:' AND AVEC TypeActivite = "P"'
      END ELSE
         W_REQUETE=W_REQUETE:' AND AVEC TypeActivite = "':W_TYPEACT:'"'
      END
   END
   IF W_TABCODEAIDANT#"" THEN 
      W_REQUETE=W_REQUETE:' AND AVEC 0 = "':W_TABCODEAIDANT[1,8]:'"'
      IF W_REQUETE1#"" THEN W_REQUETE1=W_REQUETE1:' AND AVEC 0 = "':W_TABCODEAIDANT[1,8]:'"'
      I=10
      LOOP
      UNTIL W_TABCODEAIDANT[I,8]="" DO
         W_REQUETE=W_REQUETE:' OR = "':W_TABCODEAIDANT[I,8]:'"'
         IF W_REQUETE1#"" THEN W_REQUETE1=W_REQUETE1:' OR = "':W_TABCODEAIDANT[I,8]:'"'
         I=I+9
      REPEAT
   END
   IF W_REQUETE1#"" THEN W_REQUETE=W_REQUETE:" OR ":W_REQUETE1
   W_REQUETE=W_REQUETE:" PAR NomAidantContrat PAR PrenomAidantContrat PAR CodeAidant"
   EXECUTE W_REQUETE
   EXECUTE 'SAUVE-LISTE LISTCONTRATDNAC'
   EXECUTE "LISTE LISTCONTRATDNAC" RETURNING W_MSG
   SELECT F.CONTRAT TO LISTCONTRATDNAC
   IF W_MSG<1>=209 THEN
      * Modif Greg - 21/11/11 - Si la slection ne retourne rien, on crit quand mme dans le fichier,
	  * de manire  pouvoir faire la distinction entre le fait qu'il n'y a rien  retourn et le fait
	  * que le programme peut ne pas aboutir pour une raison ou une autre.
      * Cela permet d'avoir des messages d'erreur/d'information plus prcis dans VB.
	  ENR_TAMPONDADS=""
	  ENR_TAMPONDADS<1>="RIEN"
      WRITE ENR_TAMPONDADS ON F.TAMPONDADS,"AED-":W_CODEENTITE:"-":W_ANNEEMOIS:"-":W_TYPEACT:"-":W_DATESYST:"-":W_HEURESYST
      STOP
   END
   GOSUB 200
END
STOP


**********
* TRAITEMENT DADS
**********
100 ENR_DADSU=""
W_TRAITEPARGNESAL="NON"
GOSUB 100100
GOSUB 100101
GOSUB 100105

W_CODEETABL=""
W_CODEAIDANT=""
W_FINTRAIT = "NON"

LOOP
   READNEXT CLEHISTCUMPERACT FROM LISTHISTCUMPERACT ELSE W_FINTRAIT = "OUI"
UNTIL W_FINTRAIT = "OUI" DO
   IF W_CODEAIDANT#CLEHISTCUMPERACT[1,5] THEN
      IF W_CODEAIDANT#"" THEN
         GOSUB 600500
* Didier 12/11/2013 : rduction Fillon maintenant dans structure S40.G30.40 au lieu de S65.G30.40
*         GOSUB 653040
         IF W_CODEPOPULATION="10" THEN GOSUB 654005
         GOSUB 654006
         GOSUB 654010
         GOSUB 654305
         GOSUB 654307
         GOSUB 654310
         GOSUB 655305
      END
      IF W_CODEETABL#CLEHISTCUMPERACT[13,3] THEN
         IF W_CODEETABL#"" THEN
            GOSUB 700500
            GOSUB 800100
            GOSUB 806200
         END
         W_CODEETABL=CLEHISTCUMPERACT[13,3]
         GOSUB 200100
         W_NBSTRUCTURES20=W_NBSTRUCTURES20+1
         GOSUB 200105
         GOSUB 201010
      END
      W_CODEAIDANT=CLEHISTCUMPERACT[1,5]
      W_TABCONTRATAIDANT=""
      W_CASCNRACL="NON"
      W_CASIRCANTEC="NON"
      W_CASNBI="NON"
      W_CASRAFP="NON"
      W_MONTREDUCFILLON=0
      W_BASEREDUCFILLON=0
      W_BASESMICREDUCFILLON=0
      W_MONTSUPPLFAMILIAL=0
      W_CUMULHEURESPAYEES=0
      W_CUMULBRUT=0
      W_DERNIERMOIS60SMICHH=0
      W_BASECNRACLEXOSANSNBI=0
      W_BASECNRACLNONEXOSANSNBI=0
      W_COTISPATROCNRACLEXOSANSNBI=0
      W_COTISPATROCNRACLNONEXOSANSNBI=0
      W_COTISSALCNRACLEXOSANSNBI=0
      W_COTISSALCNRACLNONEXOSANSNBI=0
      W_MONTSUPPLCOMPL=0
      W_BASENBI=0
      W_COTISPATRONBI=0
      W_COTISSALNBI=0
      W_BASERAFP=0
      W_COTISPATRORAFP=0
      W_COTISSALRAFP=0
      W_TABPERIODEACTIVITE=""
      READ ENR_CIVILAIDANT FROM F.CIVILAIDANT,W_CODEAIDANT ELSE ENR_CIVILAIDANT=""
      GOSUB 300100
   END
   READ ENR_HISTORCUMULPERACT FROM F.HISTORCUMULPERACT,CLEHISTCUMPERACT ELSE ENR_HISTORCUMULPERACT=""
   GOSUB 4001001
   GOSUB 401000
   IF W_CODEPOPULATION="10" THEN GOSUB 401005
   IF W_CODEPOPULATION="40" OR W_CODEPOPULATION="43" THEN GOSUB 401010
   GOSUB 401500
   IF W_CODEPOPULATION="10" THEN GOSUB 401505
   IF W_CODEPOPULATION="40" OR W_CODEPOPULATION="43" THEN GOSUB 401510
   GOSUB 402000
   IF W_CODEPOPULATION#"40" THEN GOSUB 402500
   GOSUB 4028051
   GOSUB 402815
   GOSUB 403004
   GOSUB 403006
* Didier 15/11/2012 : gestion pargne salariale
   GOSUB 403010
   GOSUB 403035
   GOSUB 403036
* Didier 12/11/2013 : rduction Fillon maintenant dans structure S40.G30.40 au lieu de S65.G30.40
   GOSUB 403040
   GOSUB 404000
   GOSUB 404005
   GOSUB 404010
   GOSUB 420505
   GOSUB 430505
   GOSUB 440300
   GOSUB 440305
   GOSUB 450100
   IF W_TABORGPREV#"" THEN
      GOSUB 450105
      GOSUB 450500
      GOSUB 450510
      GOSUB 450515
   END
   GOSUB 481000
   IF W_CODEPOPULATION="40" THEN GOSUB 530100
REPEAT
IF W_CODEAIDANT#"" THEN
   GOSUB 600500
* Didier 12/11/2013 : rduction Fillon maintenant dans structure S40.G30.40 au lieu de S65.G30.40
*   GOSUB 653040
   IF W_CODEPOPULATION="10" THEN GOSUB 654005
   GOSUB 654006
   GOSUB 654010
   GOSUB 654305
   GOSUB 654307
   GOSUB 654310
   GOSUB 655305
END

* Didier 15/11/2012 : gestion pargne salariale sans dads
GOSUB 911111

IF W_CODEETABL#"" THEN
   GOSUB 700500
   GOSUB 800100
   GOSUB 806200
END
GOSUB 900100
EXECUTE "EFFACER-LISTE LISTHISTCUMPERACT"
GOSUB 999991
RETURN


**********
* TRAITEMENT A.E.D. (Attestation Employeur dmatrialise)
**********
200 ENR_DADSU=""
ENR_TAMPONDADS = ""
GOSUB 100100
GOSUB 100101
GOSUB 100105

W_CODEETABL=""
W_CODEAIDANT=""
W_FINTRAIT = "NON"
* Didier 20/01/2012 : gestion numro ordre par paquet de 100 A.E.D.
W_COMPTEURAED=0

LOOP
   READNEXT CLECONTRATDNAC FROM LISTCONTRATDNAC ELSE W_FINTRAIT = "OUI"
UNTIL W_FINTRAIT = "OUI" DO
* Didier 20/01/2012 : gestion numro ordre par paquet de 100 A.E.D.
   W_COMPTEURAED=W_COMPTEURAED+1
* Didier 20/02/2012 : gestion numro ordre par paquet de 70 A.E.D.
* Didier 01/03/2012 : gestion numro ordre par paquet de 50 A.E.D.
* Mikael 28/06/2012 : gestion numro ordre par paquet de 20 A.E.D. 
   IF W_COMPTEURAED=21 THEN
      GOSUB 900100
      GOSUB 999992
      W_NUMORDRE=W_NUMORDRE+1
      ENR_DADSU=""
      ENR_TAMPONDADS = ""
      GOSUB 100100
      GOSUB 100101
      GOSUB 100105
      W_CODEETABL=""
      W_CODEAIDANT=""
      W_COMPTEURAED=1
      W_NBSTRUCTURES20=0
   END
   
   READ ENR_CONTRAT FROM F.CONTRAT,CLECONTRATDNAC ELSE ENR_CONTRAT=""
   READ ENR_CONVENTIONCOL FROM F.CONVENTIONCOL,ENR_CONTRAT<1> ELSE ENR_CONVENTIONCOL = ""
   W_DATEDEBCONTRAT=OCONV(ENR_CONTRAT<7>,"D4/")
   W_DATEDEBCONTRAT=CONVERT("/","",W_DATEDEBCONTRAT)
   IF ENR_CONTRAT<96>#"" THEN
      W_DATEFINACTIVITEBIS=ENR_CONTRAT<96>
      W_DATEFINCONTRATREEL=OCONV(ENR_CONTRAT<96>,"D4/")
   END ELSE
      W_DATEFINACTIVITEBIS=ENR_CONTRAT<8>
      W_DATEFINCONTRATREEL=OCONV(ENR_CONTRAT<8>,"D4/")
   END
   W_DATEFINCONTRAT=OCONV(ENR_CONTRAT<8>,"D4/")
   W_DATEFINCONTRAT=CONVERT("/","",W_DATEFINCONTRAT)
   W_DATEFINCONTRATREEL=CONVERT("/","",W_DATEFINCONTRATREEL)
   W_DATEFINCONTRATS20=W_DATEFINCONTRAT
   W_PERIODEDERNIERBULLETIN=ENR_CONTRAT<58>
   W_PERIODEDERNJOURTRAV = OCONV(ENR_CONTRAT<51>,"D4/")

* Didier 02/09/2013 : revu traitement lorsque dernier jour travaill = dernier jour du mois
   W_AADERNJOURMOIS=W_PERIODEDERNJOURTRAV[7,4]
   W_MMDERNJOURMOIS=W_PERIODEDERNJOURTRAV[4,2]+1
   IF W_MMDERNJOURMOIS=13 THEN W_AADERNJOURMOIS=W_AADERNJOURMOIS+1
   IF W_MMDERNJOURMOIS MATCH "1N" THEN W_MMDERNJOURMOIS="0":W_MMDERNJOURMOIS
   W_DERNJOURMOIS="01/":W_MMDERNJOURMOIS:"/":W_AADERNJOURMOIS
   W_DERNJOURMOIS=ICONV(W_DERNJOURMOIS,"D4/") - 1
   W_PERIODEDERNJOURTRAV = W_PERIODEDERNJOURTRAV[7,4]:W_PERIODEDERNJOURTRAV[4,2]
   IF ENR_CONTRAT<51>=W_DERNJOURMOIS THEN
      W_FINPERIODE12MOIS=W_DERNJOURMOIS
      IF W_FINPERIODE12MOIS<ENR_CONTRAT<7> THEN W_FINPERIODE12MOIS=ENR_CONTRAT<7>
      W_FINPERIODE12MOIS = OCONV(W_FINPERIODE12MOIS,"D4/")
      W_FINPERIODE12MOIS = W_FINPERIODE12MOIS[7,4]:W_FINPERIODE12MOIS[4,2]
      IF W_FINPERIODE12MOIS=W_PERIODEDERNIERBULLETIN THEN
         W_DEBPERIODE12MOIS=W_FINPERIODE12MOIS-100
         W_FINPERIODE12MOIS=W_FINPERIODE12MOIS-1
         IF W_FINPERIODE12MOIS[5,2]="00" THEN
            W_FINPERIODE12MOIS=W_FINPERIODE12MOIS[1,4]-1
            W_FINPERIODE12MOIS=W_FINPERIODE12MOIS:"12"         
         END
      END ELSE
         IF W_FINPERIODE12MOIS[5,2]=12 THEN
            W_DEBPERIODE12MOIS=W_FINPERIODE12MOIS[1,4]:"01"
         END ELSE
            W_DEBPERIODE12MOIS=W_FINPERIODE12MOIS-99
         END
      END
      W_PERIODEDATEENTREE=OCONV(ENR_CONTRAT<7>,"D4/")
      W_PERIODEDATEENTREE=W_PERIODEDATEENTREE[7,4]:W_PERIODEDATEENTREE[4,2]
      IF W_FINPERIODE12MOIS<W_PERIODEDATEENTREE THEN W_FINPERIODE12MOIS=W_PERIODEDATEENTREE
   END ELSE
      W_FINPERIODE12MOIS = ICONV("01/":W_PERIODEDERNJOURTRAV[5,2]:"/":W_PERIODEDERNJOURTRAV[1,4], "D4/") - 1
      W_DEBPERIODE12MOIS = (W_PERIODEDERNJOURTRAV[1,4] - 1):W_PERIODEDERNJOURTRAV[5,2]
      IF W_FINPERIODE12MOIS<ENR_CONTRAT<7> THEN W_FINPERIODE12MOIS=ENR_CONTRAT<7>
      W_FINPERIODE12MOIS = OCONV(W_FINPERIODE12MOIS,"D4/")
      W_FINPERIODE12MOIS = W_FINPERIODE12MOIS[7,4]:W_FINPERIODE12MOIS[4,2]
   END

   W_DEBPERIODE12MOISINT = ICONV("01/":W_DEBPERIODE12MOIS[5,2]:"/":W_DEBPERIODE12MOIS[1,4], "D4/")
   IF ENR_CONTRAT<7>>W_DEBPERIODE12MOISINT THEN W_DEBPERIODE12MOISINT=ENR_CONTRAT<7>
   W_DEBPERIODE12MOIS=OCONV(W_DEBPERIODE12MOISINT,"D4/")
   W_DEBPERIODE12MOIS=W_DEBPERIODE12MOIS[7,4]:W_DEBPERIODE12MOIS[4,2]
   W_DATEDEBCONTRATS20="01/":W_DEBPERIODE12MOIS[5,2]:"/":W_DEBPERIODE12MOIS[1,4]
   IF ICONV(W_DATEDEBCONTRATS20,"D4/")<ENR_CONTRAT<7> THEN W_DATEDEBCONTRATS20=OCONV(ENR_CONTRAT<7>,"D4/")
   W_DATEDEBCONTRATS20=CONVERT("/","",W_DATEDEBCONTRATS20)
   IF W_TYPEACT="M" THEN
      W_CODEETABL=ENR_CONTRAT<3>
      READ ENR_CIVILAIDE FROM F.CIVILAIDE,ENR_CONTRAT<3> ELSE ENR_CIVILAIDE=""
      READ ENR_ELTSPARTEMP FROM F.ELTSPARTEMP,ENR_CONTRAT<3> ELSE ENR_ELTSPARTEMP=""
   END ELSE
      W_CODEETABL=ENR_CONTRAT<3>[4,3]
   END
   GOSUB 200100
   W_NBSTRUCTURES20=W_NBSTRUCTURES20+1
   GOSUB 200105
   W_CODEAIDANT=CLECONTRATDNAC[1,5]
   W_MONTANTPRIMES=0
   W_MONTANTCPAUMOIS=0
   READ ENR_CIVILAIDANT FROM F.CIVILAIDANT,W_CODEAIDANT ELSE ENR_CIVILAIDANT=""
   ENR_TAMPONDADS<1,-1> = W_CODEAIDANT
   ENR_TAMPONDADS<2,-1> = CLECONTRATDNAC[6,3]
   ENR_TAMPONDADS<3,-1> = ENR_CIVILAIDANT<2>:" ":ENR_CIVILAIDANT<3>
   ENR_TAMPONDADS<4,-1> = ENR_CONTRAT<95>
   GOSUB 300100
   W_DERNIEREPERIODES40="NON"
   W_PERIODESALAIRE=W_DEBPERIODE12MOIS
   W_DATEDEBACTIVITEBIS=""
   LOOP
   UNTIL W_PERIODESALAIRE>W_FINPERIODE12MOIS DO
* Didier 26/01/2012 : remise  0
      W_MONTANTPRIMES=0
      W_DATEDEBACTIVITE = "01/":W_PERIODESALAIRE[5,2]:"/":W_PERIODESALAIRE[1,4]
      IF W_PERIODESALAIRE=W_DEBPERIODE12MOIS THEN
         IF ICONV(W_DATEDEBACTIVITE,"D4/")<ENR_CONTRAT<7> THEN W_DATEDEBACTIVITE=OCONV(ENR_CONTRAT<7>,"D4/")
      END
      W_DATEDEBACTIVITEINT=ICONV(W_DATEDEBACTIVITE,"D4/")
      IF W_DATEDEBACTIVITEBIS="" THEN W_DATEDEBACTIVITEBIS=W_DATEDEBACTIVITEINT
      W_DATEDEBACTIVITE=CONVERT("/","",W_DATEDEBACTIVITE)
      W_PERIODESALAIREFIN=W_PERIODESALAIRE + 1
      IF W_PERIODESALAIREFIN[5,2] = "13" THEN
          W_PERIODESALAIREFIN = (W_PERIODESALAIREFIN[1,4] + 1):"01"
      END
      W_DATEFINACTIVITE = "01/":W_PERIODESALAIREFIN[5,2]:"/":W_PERIODESALAIREFIN[1,4]
      W_DATEFINACTIVITEINT=ICONV(W_DATEFINACTIVITE,"D4/")-1
      IF W_DATEFINACTIVITEINT>ENR_CONTRAT<8> THEN W_DATEFINACTIVITEINT=ENR_CONTRAT<8>
      W_DATEFINACTIVITE = OCONV(W_DATEFINACTIVITEINT,"D4/")
      W_DATEFINACTIVITE=CONVERT("/","",W_DATEFINACTIVITE)
      IF W_PERIODEDERNIERBULLETIN=W_PERIODESALAIRE THEN
         W_DERNIEREPERIODES40="OUI"
      END
      READ ENR_DETAILCALCUL FROM F.DETAILCALCUL,CLECONTRATDNAC:W_PERIODESALAIRE ELSE ENR_DETAILCALCUL=""
      GOSUB 4001002
* Didier 07/05/2012 : gestion date paiement
      W_DATEPAIEMENT=W_DATEFINACTIVITE
      GOSUB 401000
      IF W_CODEPOPULATION="10" THEN GOSUB 401005
      IF W_CODEPOPULATION="40" OR W_CODEPOPULATION="43" THEN GOSUB 401010
      GOSUB 401500
      IF W_CODEPOPULATION="10" THEN GOSUB 401505
      IF W_CODEPOPULATION="40" OR W_CODEPOPULATION="43" THEN GOSUB 401510
      GOSUB 402000
      GOSUB 4028052
      IF W_CODEPOPULATION="10" THEN GOSUB 402810
* Didier 16/02/2012 : structure  faire uniquement sur dernire priode d'activit
      IF W_PERIODEDERNIERBULLETIN=W_PERIODESALAIRE THEN
         GOSUB 402815
      END
      IF W_CODEPOPULATION="40" THEN GOSUB 402820
      GOSUB 481000
* 01/02/2013 : structure supprim du cahier des charges V01X07
*      GOSUB 481005
      GOSUB 481605
      GOSUB 484715
      IF W_PERIODEDERNIERBULLETIN=W_PERIODESALAIRE THEN
         GOSUB 485500
         GOSUB 485505
         GOSUB 485515
* Didier 15/11/2012 : structure S48.G55.20 (cadre 9 dclaration)
         GOSUB 485520
         GOSUB 600500
         GOSUB 800100
      END
      W_PERIODESALAIRE = W_PERIODESALAIRE + 1
      IF W_PERIODESALAIRE[5,2] = "13" THEN
         W_PERIODESALAIRE = (W_PERIODESALAIRE[1,4] + 1):"01"
      END
   REPEAT
   IF W_PERIODEDERNIERBULLETIN>W_FINPERIODE12MOIS THEN
* Didier 26/01/2012 : remise  0
      W_MONTANTPRIMES=0
      W_DERNIEREPERIODES40="OUI"
      W_CUMUL_ENR_DETAILCALCUL=""
      W_PERIODESALAIRE = W_FINPERIODE12MOIS
      W_DATEDEBACTIVITE=""
      W_DATEFINACTIVITE=""
      LOOP
         W_PERIODESALAIRE = W_PERIODESALAIRE + 1
         IF W_PERIODESALAIRE[5,2] = "13" THEN
            W_PERIODESALAIRE = (W_PERIODESALAIRE[1,4] + 1):"01"
         END
      UNTIL W_PERIODESALAIRE>W_PERIODEDERNIERBULLETIN DO
         IF W_DATEDEBACTIVITE="" THEN
            W_DATEDEBACTIVITE = "01/":W_PERIODESALAIRE[5,2]:"/":W_PERIODESALAIRE[1,4]
            W_DATEDEBACTIVITEINT=ICONV(W_DATEDEBACTIVITE,"D4/")
            W_DATEDEBACTIVITE=CONVERT("/","",W_DATEDEBACTIVITE)
* Didier 16/02/2012
*            IF W_PERIODEDERNIERBULLETIN=W_PERIODEDERNJOURTRAV THEN
*               W_DATEFINACTIVITEINT=ENR_CONTRAT<8>
*            END ELSE
               W_DATEFINACTIVITE=W_PERIODESALAIRE + 1
               IF W_DATEFINACTIVITE[5,2] = "13" THEN W_DATEFINACTIVITE=(W_DATEFINACTIVITE[1,4] + 1):"01"
               W_DATEFINACTIVITE = "01/":W_DATEFINACTIVITE[5,2]:"/":W_DATEFINACTIVITE[1,4]
               W_DATEFINACTIVITEINT=ICONV(W_DATEFINACTIVITE,"D4/")-1
               IF W_DATEFINACTIVITEINT>ENR_CONTRAT<8> THEN W_DATEFINACTIVITEINT=ENR_CONTRAT<8>
               IF ENR_CONTRAT<96>#"" AND W_DATEFINACTIVITEINT>ENR_CONTRAT<96> THEN W_DATEFINACTIVITEINT=ENR_CONTRAT<96>
*            END
            W_DATEFINACTIVITE = OCONV(W_DATEFINACTIVITEINT,"D4/")
            W_DATEFINACTIVITE=CONVERT("/","",W_DATEFINACTIVITE)
* Didier 07/05/2012 : gestion date paiement
            W_DATEPAIEMENT=W_DATEFINACTIVITE
         END
         READ ENR_DETAILCALCUL FROM F.DETAILCALCUL,CLECONTRATDNAC:W_PERIODESALAIRE ELSE ENR_DETAILCALCUL=""
* Didier 07/05/2012 : gestion date paiement
         IF ENR_DETAILCALCUL#"" THEN
            W_DATEPAIEMENT=W_PERIODESALAIRE + 1
            IF W_DATEPAIEMENT[5,2] = "13" THEN W_DATEPAIEMENT=(W_DATEPAIEMENT[1,4] + 1):"01"
            W_DATEPAIEMENT = "01/":W_DATEPAIEMENT[5,2]:"/":W_DATEPAIEMENT[1,4]
            W_DATEPAIEMENTINT=ICONV(W_DATEPAIEMENT,"D4/")-1
            IF W_DATEPAIEMENTINT>ENR_CONTRAT<8> THEN W_DATEPAIEMENTINT=ENR_CONTRAT<8>
            IF ENR_CONTRAT<96>#"" AND W_DATEPAIEMENTINT>ENR_CONTRAT<96> THEN W_DATEPAIEMENTINT=ENR_CONTRAT<96>
            W_DATEPAIEMENT = OCONV(W_DATEPAIEMENTINT,"D4/")
            W_DATEPAIEMENT=CONVERT("/","",W_DATEPAIEMENT)
         END
         IF W_CUMUL_ENR_DETAILCALCUL="" THEN
            W_CUMUL_ENR_DETAILCALCUL=ENR_DETAILCALCUL
         END ELSE
* Didier 11/02/2013 : gestion MV  vide
            I=1
            LOOP
            UNTIL ENR_DETAILCALCUL<2,I>="" DO
               W_CUMUL_ENR_DETAILCALCUL<2,-1>=ENR_DETAILCALCUL<2,I>
               W_INDCUM=DCOUNT(W_CUMUL_ENR_DETAILCALCUL<2>,CHAR(253))
               W_CUMUL_ENR_DETAILCALCUL<3,W_INDCUM>=ENR_DETAILCALCUL<3,I>
               W_CUMUL_ENR_DETAILCALCUL<4,W_INDCUM>=ENR_DETAILCALCUL<4,I>
               W_CUMUL_ENR_DETAILCALCUL<5,W_INDCUM>=ENR_DETAILCALCUL<5,I>
               I=I+1
            REPEAT
            W_CUMUL_ENR_DETAILCALCUL<6>=W_CUMUL_ENR_DETAILCALCUL<6>+ENR_DETAILCALCUL<6>
            W_CUMUL_ENR_DETAILCALCUL<7>=W_CUMUL_ENR_DETAILCALCUL<7>+ENR_DETAILCALCUL<7>
            W_CUMUL_ENR_DETAILCALCUL<15>=W_CUMUL_ENR_DETAILCALCUL<15>+ENR_DETAILCALCUL<15>
            W_CUMUL_ENR_DETAILCALCUL<16>=W_CUMUL_ENR_DETAILCALCUL<16>+ENR_DETAILCALCUL<16>
            W_CUMUL_ENR_DETAILCALCUL<21>=W_CUMUL_ENR_DETAILCALCUL<21>+ENR_DETAILCALCUL<21>
            I=1
            LOOP
            UNTIL ENR_DETAILCALCUL<8,I>="" DO
               W_CUMUL_ENR_DETAILCALCUL<8,-1>=ENR_DETAILCALCUL<8,I>
               W_INDCUM=DCOUNT(W_CUMUL_ENR_DETAILCALCUL<8>,CHAR(253))
               W_CUMUL_ENR_DETAILCALCUL<9,W_INDCUM>=ENR_DETAILCALCUL<9,I>
               W_CUMUL_ENR_DETAILCALCUL<10,W_INDCUM>=ENR_DETAILCALCUL<10,I>
               W_CUMUL_ENR_DETAILCALCUL<11,W_INDCUM>=ENR_DETAILCALCUL<11,I>
               W_CUMUL_ENR_DETAILCALCUL<12,W_INDCUM>=ENR_DETAILCALCUL<12,I>
               W_CUMUL_ENR_DETAILCALCUL<13,W_INDCUM>=ENR_DETAILCALCUL<13,I>
               W_CUMUL_ENR_DETAILCALCUL<14,W_INDCUM>=ENR_DETAILCALCUL<14,I>
               I=I+1
            REPEAT
            I=1
            LOOP
            UNTIL ENR_DETAILCALCUL<17,I>="" DO
               W_CUMUL_ENR_DETAILCALCUL<17,-1>=ENR_DETAILCALCUL<17,I>
               W_INDCUM=DCOUNT(W_CUMUL_ENR_DETAILCALCUL<17>,CHAR(253))
               W_CUMUL_ENR_DETAILCALCUL<18,W_INDCUM>=ENR_DETAILCALCUL<18,I>
               W_CUMUL_ENR_DETAILCALCUL<19,W_INDCUM>=ENR_DETAILCALCUL<19,I>
               W_CUMUL_ENR_DETAILCALCUL<20,W_INDCUM>=ENR_DETAILCALCUL<20,I>
               I=I+1
            REPEAT
         END
      REPEAT
      ENR_DETAILCALCUL=W_CUMUL_ENR_DETAILCALCUL
      GOSUB 4001002
      GOSUB 401000
      IF W_CODEPOPULATION="10" THEN GOSUB 401005
      IF W_CODEPOPULATION="40" OR W_CODEPOPULATION="43" THEN GOSUB 401010
      GOSUB 401500
      IF W_CODEPOPULATION="10" THEN GOSUB 401505
      IF W_CODEPOPULATION="40" OR W_CODEPOPULATION="43" THEN GOSUB 401510
      GOSUB 402000
      GOSUB 4028052
      IF W_CODEPOPULATION="10" THEN GOSUB 402810
      GOSUB 402815
      IF W_CODEPOPULATION="40" THEN GOSUB 402820
      GOSUB 481000
* 01/02/2013 : structure supprim du cahier des charges V01X07
*      GOSUB 481005
      GOSUB 481605
      GOSUB 484715
      GOSUB 485500
      GOSUB 485505
      GOSUB 485515
* Didier 15/11/2012 : structure S48.G55.20 (cadre 9 dclaration)
      GOSUB 485520
      GOSUB 600500
      GOSUB 800100
   END
REPEAT
GOSUB 900100
EXECUTE "EFFACER-LISTE LISTCONTRATDNAC"
GOSUB 999992
RETURN


**********
* 100100 -> EMETTEUR (S10.G01.00)
**********
100100
W_CHAINE = "S10.G01.00."
IF ENR_ASSOCIATION<48> = "" AND ENR_ASSOCIATION<25> = "1" THEN
   ENR_ASSOCIATION<48> = W_ANNEE
   WRITE ENR_ASSOCIATION ON F.ASSOCIATION, W_CODEENTITE
END
READ ENR_ETABLISSEMENT FROM F.ETABLISSEMENT,W_CODEENTITE:"001" ELSE ENR_ETABLISSEMENT = ""
W_SIREN = ENR_ASSOCIATION<14>
W_SIRET = ENR_ETABLISSEMENT<14>[LEN(ENR_ETABLISSEMENT<14>)-4,5]
ENR_DADSU<-1> = W_CHAINE:"001.001,'":W_SIREN:"'"
ENR_DADSU<-1> = W_CHAINE:"001.002,'":W_SIRET:"'"
W_TXTACONVERTIR=ENR_ASSOCIATION<2>
GOSUB 9999991
W_RAISONSOCIALEASSO=W_TXTACONVERTIR
ENR_DADSU<-1> = W_CHAINE:"002,'":W_TXTACONVERTIR:"'"
W_TXTACONVERTIR=ENR_ASSOCIATION<7>
GOSUB 9999991
W_COMPLASSO=W_TXTACONVERTIR
IF W_TXTACONVERTIR # "" THEN ENR_DADSU<-1> = W_CHAINE:"003.001,'":W_TXTACONVERTIR:"'"
W_TXTACONVERTIR=ENR_ASSOCIATION<3>
IF ENR_ASSOCIATION<4>[1,1] = "B" OR ENR_ASSOCIATION<4>[1,1] = "T" OR ENR_ASSOCIATION<4>[1,1] = "Q" THEN W_TXTACONVERTIR = W_TXTACONVERTIR:" ":ENR_ASSOCIATION<4>[1,1]
IF ENR_ASSOCIATION<5> # "" THEN W_TXTACONVERTIR = W_TXTACONVERTIR:" ":ENR_ASSOCIATION<5>
IF ENR_ASSOCIATION<6> # "" THEN W_TXTACONVERTIR = W_TXTACONVERTIR:" ":ENR_ASSOCIATION<6>
GOSUB 9999991
IF W_TXTACONVERTIR # "" THEN ENR_DADSU<-1> = W_CHAINE:"003.006,'":W_TXTACONVERTIR:"'"
W_ADRESSEASSO=W_TXTACONVERTIR 
W_TXTACONVERTIR=ENR_ASSOCIATION<8>
GOSUB 9999991
* Didier 15/11/2012 : gestion code postal avec cedex
IF ENR_ASSOCIATION<10>="1" AND LEN(W_TXTACONVERTIR)=5 THEN
   IF W_TXTACONVERTIR[3,1]="0" THEN
      W_TXTACONVERTIR=W_TXTACONVERTIR[1,3]:"00"
   END ELSE
      W_TXTACONVERTIR=W_TXTACONVERTIR[1,4]:"0"
   END
END
ENR_DADSU<-1> = W_CHAINE:"003.010,'":W_TXTACONVERTIR:"'"
W_CODEPOSTASSO=W_TXTACONVERTIR
W_TXTACONVERTIR=ENR_ASSOCIATION<9>
GOSUB 9999991
* Didier 15/02/2012 : remplacement tiret par espace
FOR Z = 1 TO LEN(W_TXTACONVERTIR)
   IF SEQ(W_TXTACONVERTIR[Z,1]) = 45 THEN W_TXTACONVERTIR = W_TXTACONVERTIR[1,Z-1]:" ":W_TXTACONVERTIR[Z+1,999]
NEXT Z
W_VILLEASSO=W_TXTACONVERTIR
ENR_DADSU<-1> = W_CHAINE:"003.012,'":W_TXTACONVERTIR:"'"
* Didier : ajout minute dans rfrence envoi + numro ordre
ENR_DADSU<-1> = W_CHAINE:"004,'":OCONV(DATE(),"D4/")[9,2]:OCONV(DATE(),"D4/")[4,2]:OCONV(DATE(),"D4/")[1,2]:" ":OCONV(TIME(),"MT")[1,2]:OCONV(TIME(),"MT")[4,2]:" ":W_NUMORDRE:"'"
ENR_DADSU<-1> = W_CHAINE:"005,'INFOLOGIS'"
ENR_DADSU<-1> = W_CHAINE:"006,'INFOLOGIS'"
ENR_DADSU<-1> = W_CHAINE:"007,'3.71'"
ENR_DADSU<-1> = W_CHAINE:"009,'40'"
IF W_TYPETRAIT="1" THEN
   ENR_DADSU<-1> = W_CHAINE:"010,'0":W_TYPE:"'"
END ELSE
   ENR_DADSU<-1> = W_CHAINE:"010,'02'"
END
* Didier 14/11/2013 : gestion version en AED en fonction date systme
IF W_TYPETRAIT="2" THEN
   IF W_DATESYSTINTERNE<"16817" THEN
      ENR_DADSU<-1> = W_CHAINE:"011,'V01X07'"
   END ELSE
      ENR_DADSU<-1> = W_CHAINE:"011,'V01X08'"
   END
END ELSE
   ENR_DADSU<-1> = W_CHAINE:"011,'V01X08'"
END
ENR_DADSU<-1> = W_CHAINE:"012,'01'"
RETURN


**********
* 100101 -> CONTACTS EMETTEUR (S10.G01.01)
**********
100101
W_CHAINE = "S10.G01.01."
ENR_DADSU<-1> = W_CHAINE:"001.001,'02'"
W_TXTACONVERTIR=ENR_ASSOCIATION<30>
GOSUB 9999991
IF W_TXTACONVERTIR # "" THEN
   ENR_DADSU<-1> = W_CHAINE:"001.002,'":W_TXTACONVERTIR:"'"
END ELSE
   W_TXTACONVERTIR=ENR_ASSOCIATION<2>
   GOSUB 9999991
   ENR_DADSU<-1> = W_CHAINE:"001.002,'":W_TXTACONVERTIR:"'"
END
ENR_DADSU<-1> = W_CHAINE:"002,'01'"
W_VerifMail = ENR_ASSOCIATION<35>
GOSUB 9999992
IF W_VerifMail # "" THEN
   ENR_DADSU<-1> = W_CHAINE:"005,'":W_VerifMail:"'"
END ELSE
   ENR_DADSU<-1> = W_CHAINE:"005,'infologis@orange.fr'"
   W_VerifMail="infologis@orange.fr"
END
ENR_DADSU<-1> = W_CHAINE:"006,'":ENR_ASSOCIATION<12>:"'"
ENR_DADSU<-1> = W_CHAINE:"007,'":ENR_ASSOCIATION<13>:"'"

* CONTACT INFOLOGIS
ENR_DADSU<-1> = W_CHAINE:"001.001,'01'"
ENR_DADSU<-1> = W_CHAINE:"001.002,'INFOLOGIS-SERVICE MAINTENANCE'"
ENR_DADSU<-1> = W_CHAINE:"002,'02'"
ENR_DADSU<-1> = W_CHAINE:"005,'infologis@orange.fr'"
ENR_DADSU<-1> = W_CHAINE:"006,'02 54 08 70 80'"
ENR_DADSU<-1> = W_CHAINE:"007,'02 54 08 70 89'"
RETURN


**********
* 100105 -> EMETTEUR-COMPTE-RENDU D'EXPLOITATION(S10.G01.05)
**********
100105
W_CHAINE = "S10.G01.05."
ENR_DADSU<-1> = W_CHAINE:"013.001,'":W_SIREN:"'"
ENR_DADSU<-1> = W_CHAINE:"013.002,'":W_SIRET:"'"
ENR_DADSU<-1> = W_CHAINE:"015.001,'":W_VerifMail:"'"
RETURN


**********
* 200100 -> DECLARATION (S20.G01.00)
**********
200100
W_CHAINE = "S20.G01.00."
IF W_TYPETRAIT="2" AND W_TYPEACT="M" THEN
   W_SIRETPARTEMPL=ENR_ELTSPARTEMP<4>
   W_SIRETPARTEMPL = TRIM(CONVERT(" ","",W_SIRETPARTEMPL))
   IF W_SIRETPARTEMPL MATCH "14N" THEN NULL ELSE W_SIRETPARTEMPL="99999999999999"
   ENR_DADSU<-1> = W_CHAINE:"001,'":W_SIRETPARTEMPL[1,9]:"'"
   W_NOMPARTEMPL=ENR_CIVILAIDE<2>:" ":ENR_CIVILAIDE<3>
   W_NOMPARTEMPL=TRIM(W_NOMPARTEMPL)
   IF LEN(W_NOMPARTEMPL)>60 THEN W_NOMPARTEMPL=W_NOMPARTEMPL "L(#60)"
   ENR_DADSU<-1> = W_CHAINE:"002,'":W_NOMPARTEMPL:"'"
   W_TYPEURSSAFMSA="U"
END ELSE
   ENR_DADSU<-1> = W_CHAINE:"001,'":ENR_ASSOCIATION<14>:"'"
   ENR_DADSU<-1> = W_CHAINE:"002,'":W_RAISONSOCIALEASSO:"'"
* Didier 12/11/2013 : gestion dclaration type MSA --> attribut 33 ETABLISSEMENT = M
   READ ENR_ETABLISSEMENT FROM F.ETABLISSEMENT,W_CODEENTITE:W_CODEETABL ELSE ENR_ETABLISSEMENT = ""
   W_TYPEURSSAFMSA=ENR_ETABLISSEMENT<33>
END
IF W_TYPETRAIT="1" THEN
   ENR_DADSU<-1> = W_CHAINE:"003.001,'0101":W_ANNEE:"'"
   ENR_DADSU<-1> = W_CHAINE:"003.002,'3112":W_ANNEE:"'"
   IF W_TYPEURSSAFMSA="M" THEN
      ENR_DADSU<-1> = W_CHAINE:"004.001,'02'"
   END ELSE
      ENR_DADSU<-1> = W_CHAINE:"004.001,'01'"
   END
   ENR_DADSU<-1> = W_CHAINE:"004.002,'51'"
END ELSE
   ENR_DADSU<-1> = W_CHAINE:"003.001,'":W_DATEDEBCONTRATS20:"'"
   ENR_DADSU<-1> = W_CHAINE:"003.002,'":W_DATEFINCONTRATS20:"'"
   ENR_DADSU<-1> = W_CHAINE:"004.001,'15'"
   IF ENR_CONTRAT<95>#"" THEN
      ENR_DADSU<-1> = W_CHAINE:"004.002,'59'"
   END ELSE
      ENR_DADSU<-1> = W_CHAINE:"004.002,'51'"
   END
END
IF W_TYPETRAIT="2" AND W_TYPEACT="M" THEN
   W_HEURESHEBDOETABL="4000"
   W_HEURESMENSETABL=INT(4000*52/12+1/2)
   ENR_DADSU<-1> = W_CHAINE:"005,'11'"
   ENR_DADSU<-1> = W_CHAINE:"007,'01'"
   ENR_DADSU<-1> = W_CHAINE:"008,'":W_SIRETPARTEMPL[10,5]:"'"
   W_SIRETETABL=W_SIRETPARTEMPL[10,5]
   W_TXTACONVERTIR=ENR_CIVILAIDE<9>
   GOSUB 9999991
   IF W_TXTACONVERTIR # "" THEN ENR_DADSU<-1> = W_CHAINE:"009.001,'":W_TXTACONVERTIR:"'"
   W_TXTACONVERTIR=ENR_CIVILAIDE<5>
   IF ENR_CIVILAIDE<6>[1,1] = "B" OR ENR_CIVILAIDE<6>[1,1] = "T" OR ENR_CIVILAIDE<6>[1,1] = "Q" THEN W_TXTACONVERTIR = W_TXTACONVERTIR:" ":ENR_CIVILAIDE<6>[1,1]
   IF ENR_CIVILAIDE<7> # "" THEN W_TXTACONVERTIR = W_TXTACONVERTIR:" ":ENR_CIVILAIDE<7>
   IF ENR_CIVILAIDE<8> # "" THEN W_TXTACONVERTIR = W_TXTACONVERTIR:" ":ENR_CIVILAIDE<8>
   GOSUB 9999991
   IF W_TXTACONVERTIR # "" THEN ENR_DADSU<-1> = W_CHAINE:"009.006,'":W_TXTACONVERTIR:"'"
   W_TXTACONVERTIR=ENR_CIVILAIDE<10>
   GOSUB 9999991
   ENR_DADSU<-1> = W_CHAINE:"009.010,'":W_TXTACONVERTIR:"'"
   W_TXTACONVERTIR=ENR_CIVILAIDE<11>
   GOSUB 9999991
* Didier 15/02/2012 : remplacement tiret par espace
   FOR Z = 1 TO LEN(W_TXTACONVERTIR)
      IF SEQ(W_TXTACONVERTIR[Z,1]) = 45 THEN W_TXTACONVERTIR = W_TXTACONVERTIR[1,Z-1]:" ":W_TXTACONVERTIR[Z+1,999]
   NEXT Z
   ENR_DADSU<-1> = W_CHAINE:"009.012,'":W_TXTACONVERTIR:"'"
END ELSE
   W_HEURESHEBDOETABL=ENR_ETABLISSEMENT<16>
   W_HEURESMENSETABL=INT(ENR_ETABLISSEMENT<16>*52/12+1/2)
   IF ENR_ETABLISSEMENT<25> = "" THEN	
      ENR_DADSU<-1> = W_CHAINE:"005,'11'"
   END ELSE
      ENR_DADSU<-1> = W_CHAINE:"005,'":ENR_ETABLISSEMENT<25>:"'"
   END
   W_SIRETETABL=ENR_ETABLISSEMENT<14>[10,5]
   ENR_DADSU<-1> = W_CHAINE:"007,'01'"
* Didier 12/11/2013 : remplac siret 1er tablissement trait par siret de l'tablisssement en cours de traitement
*   ENR_DADSU<-1> = W_CHAINE:"008,'":W_SIRET:"'"
   ENR_DADSU<-1> = W_CHAINE:"008,'":W_SIRETETABL:"'"
   W_TXTACONVERTIR=ENR_ETABLISSEMENT<7>
   GOSUB 9999991
   IF W_TXTACONVERTIR # "" THEN 
      ENR_DADSU<-1> = W_CHAINE:"009.001,'":W_TXTACONVERTIR:"'"
   END ELSE
      IF W_COMPLASSO # "" THEN ENR_DADSU<-1> = W_CHAINE:"009.001,'":W_COMPLASSO:"'"
   END
   W_TXTACONVERTIR=ENR_ETABLISSEMENT<3>
   IF ENR_ETABLISSEMENT<4>[1,1] = "B" OR ENR_ETABLISSEMENT<4>[1,1] = "T" OR ENR_ETABLISSEMENT<4>[1,1] = "Q" THEN W_TXTACONVERTIR = W_TXTACONVERTIR:" ":ENR_ETABLISSEMENT<4>[1,1]
   IF ENR_ETABLISSEMENT<5> # "" THEN W_TXTACONVERTIR = W_TXTACONVERTIR:" ":ENR_ETABLISSEMENT<5>
   IF ENR_ETABLISSEMENT<6> # "" THEN W_TXTACONVERTIR = W_TXTACONVERTIR:" ":ENR_ETABLISSEMENT<6>
   GOSUB 9999991
   IF W_TXTACONVERTIR # "" THEN ENR_DADSU<-1> = W_CHAINE:"009.006,'":W_TXTACONVERTIR:"'"
   W_TXTACONVERTIR=ENR_ETABLISSEMENT<8>
   GOSUB 9999991
   IF W_TXTACONVERTIR # "" THEN
* Didier 15/11/2012 : gestion code postal avec cedex
      IF ENR_ETABLISSEMENT<10>="1" AND LEN(W_TXTACONVERTIR)=5 THEN
         IF W_TXTACONVERTIR[3,1]="0" THEN
            W_TXTACONVERTIR=W_TXTACONVERTIR[1,3]:"00"
         END ELSE
            W_TXTACONVERTIR=W_TXTACONVERTIR[1,4]:"0"
         END
      END
      ENR_DADSU<-1> = W_CHAINE:"009.010,'":W_TXTACONVERTIR:"'"
   END ELSE
      ENR_DADSU<-1> = W_CHAINE:"009.010,'":W_CODEPOSTASSO:"'"
   END
   W_TXTACONVERTIR=ENR_ETABLISSEMENT<9>
   GOSUB 9999991
   IF W_TXTACONVERTIR # "" THEN 
      ENR_DADSU<-1> = W_CHAINE:"009.012,'":W_TXTACONVERTIR:"'"
   END ELSE
      ENR_DADSU<-1> = W_CHAINE:"009.012,'":W_VILLEASSO:"'"
   END
END
IF W_TYPETRAIT="1" THEN
   W_REF=TIMEDATE()
   W_REF=W_REF[1,2]:W_REF[4,2]:W_REF[7,2]
*   ENR_DADSU<-1> = W_CHAINE:"013.002,'":OCONV(DATE(),"D4/")[9,2]:OCONV(DATE(),"D4/")[4,2]:OCONV(DATE(),"D4/")[1,2]:"":OCONV(TIME(),"MT")[1,2]:"":OCONV(TIME(),"MT")[4,2]:"'"
   ENR_DADSU<-1> = W_CHAINE:"013.002,'":OCONV(DATE(),"D4/")[9,2]:OCONV(DATE(),"D4/")[4,2]:OCONV(DATE(),"D4/")[1,2]:"":W_REF:W_CODEETABL:"'"
END ELSE
   IF ENR_COMPTEUR<7>="" THEN ENR_COMPTEUR<7>=0
   W_NUMEROAED=ENR_COMPTEUR<7>+1
   ENR_COMPTEUR<7>=W_NUMEROAED
   WRITE ENR_COMPTEUR ON F.COMPTEUR,W_CODEENTITE
   ENR_DADSU<-1> = W_CHAINE:"013.002,'":W_NUMEROAED:"'"
   IF W_TYPEACT="M" THEN
      ENR_DADSU<-1> = W_CHAINE:"013.003,'CESU'"
   END ELSE
      ENR_DADSU<-1> = W_CHAINE:"013.003,'":CLECONTRATDNAC[6,3]:"'"
   END
   IF ENR_CONTRAT<95>#"" THEN ENR_DADSU<-1> = W_CHAINE:"013.004,'":ENR_CONTRAT<95>:"'"
   ENR_CONTRAT<95>=W_NUMEROAED
   WRITE ENR_CONTRAT ON F.CONTRAT,CLECONTRATDNAC
END
IF W_TYPETRAIT="1" THEN
   ENR_DADSU<-1> = W_CHAINE:"018,'A00'"
END ELSE
   ENR_DADSU<-1> = W_CHAINE:"018,'EVE'"
END
RETURN


**********
* 200105 -> DECLARATION-COMPTE RENDU D'EXPLOITATION (S20.G01.05)
**********
200105
W_CHAINE = "S20.G01.05."
ENR_DADSU<-1> = W_CHAINE:"014.001,'":W_SIREN:"'"
ENR_DADSU<-1> = W_CHAINE:"014.002,'":W_SIRET:"'"
ENR_DADSU<-1> = W_CHAINE:"016.001,'":W_VerifMail:"'"
RETURN


**********
* 201010 -> COMPLEMENT IDENTIFICATION ENTREPRISES DE SERVICES AUX PERSONNES (S20.G10.10)
**********
201010
W_CHAINE = "S20.G10.10."
W_NumAgr = UPCASE(TRIM(ENR_ASSOCIATION<23>))
FOR W_IncAgr = 1 TO LEN(W_NumAgr)
   IF W_NumAgr[W_IncAgr,1] < CHAR(48) OR W_NumAgr[W_IncAgr,1] > CHAR(57) THEN
      IF W_NumAgr[W_IncAgr,1] < CHAR(65) OR W_NumAgr[W_IncAgr,1] > CHAR(90) THEN
         W_NumAgr[W_IncAgr,1]=""
      END
   END
NEXT W_IncAgr
IF LEN(W_NumAgr) <= 12 THEN
   ENR_DADSU<-1> = W_CHAINE : "001,'" : W_NumAgr"L%12":"'"
END ELSE
   IF LEN(W_NumAgr) = 15 THEN
      IF W_NumAgr[1,1]="N" OR W_NumAgr[1,1]="R" OR W_NumAgr[1,1]="C" OR W_NumAgr[1,1]="E" THEN
         IF W_NumAgr[8,1]="A" OR W_NumAgr[8,1]="F" OR W_NumAgr[8,1]="M" OR W_NumAgr[8,1]="P" THEN
            IF W_NumAgr[12,1]="S" OR W_NumAgr[12,1]="Q" THEN
               W_DateAgrement=W_NumAgr[2,6]
               IF W_DateAgrement[5,2]<=99 AND W_DateAgrement[5,2]>=80 THEN
                  W_DateAgrement=W_DateAgrement[1,2]:"/":W_DateAgrement[3,2]:"/19":W_DateAgrement[5,2]
                  IF ICONV(W_DateAgrement,"D4/")#"" THEN
                     ENR_DADSU<-1> = W_CHAINE : "001,'" : W_NumAgr:"'"
                  END ELSE
                     ENR_DADSU<-1> = W_CHAINE : "001,'" : W_NumAgr[1,12]:"'"
                  END
               END ELSE
                  IF W_DateAgrement[5,2]<80 THEN
                     W_DateAgrement=W_DateAgrement[1,2]:"/":W_DateAgrement[3,2]:"/20":W_DateAgrement[5,2]
                     IF ICONV(W_DateAgrement,"D4/")#"" THEN
                        ENR_DADSU<-1> = W_CHAINE : "001,'" : W_NumAgr:"'"
                     END ELSE
                        ENR_DADSU<-1> = W_CHAINE : "001,'" : W_NumAgr[1,12]:"'"
                     END
                  END ELSE
                     ENR_DADSU<-1> = W_CHAINE : "001,'" : W_NumAgr[1,12]:"'"
                  END
               END
            END ELSE
               ENR_DADSU<-1> = W_CHAINE : "001,'" : W_NumAgr[1,12]:"'"
            END
         END ELSE
            ENR_DADSU<-1> = W_CHAINE : "001,'" : W_NumAgr[1,12]:"'"
         END
      END ELSE
         ENR_DADSU<-1> = W_CHAINE : "001,'" : W_NumAgr[1,12]:"'"
      END
   END ELSE
      ENR_DADSU<-1> = W_CHAINE : "001,'" : W_NumAgr[1,12]:"'"
   END
END
RETURN


**********
* 300100 -> IDENTIFICATION DU SALARIE (S30.G01.00)
**********
300100
W_CHAINE = "S30.G01.00."
W_NBSALDECLARE = W_NBSALDECLARE + 1
IF W_TYPETRAIT="1" THEN
   READ ENR_HISTORCUMUL FROM F.HISTORCUMUL,W_CODEAIDANT:W_ANNEE:W_CODEENTITE ELSE ENR_HISTORCUMUL=""
   READ ENR_PRUDCASPARTICULIERS FROM F.PRUDCASPARTICULIERS,W_CODEAIDANT ELSE ENR_PRUDCASPARTICULIERS = ""
END
W_NOMAIDANT=ENR_CIVILAIDANT<2>:" ":ENR_CIVILAIDANT<3>
W_NOMAIDANT=W_NOMAIDANT "L(#25)"
W_NUMSECU=""
IF ENR_CIVILAIDANT<17> # "" THEN	
   W_NUMSECU = TRIM(CONVERT(" ","",ENR_CIVILAIDANT<17>))
END
IF LEN(W_NUMSECU) # 13 THEN W_NUMSECU = ""
IF W_NUMSECU[1,1] # "1" AND W_NUMSECU[1,1] # "2" THEN W_NUMSECU = ""
W_AnSecu30 = OCONV(ENR_CIVILAIDANT<26>,"D4/")[9,2]
W_MoisSecu30 = OCONV(ENR_CIVILAIDANT<26>,"D4/")[4,2]
IF W_NUMSECU[2,4] # W_AnSecu30:W_MoisSecu30 THEN W_NUMSECU = ""
IF W_NUMSECU = "" THEN
   IF ENR_CIVILAIDANT<16> = "M" THEN
      W_NUMSECU = "1999999999999"
   END ELSE
      W_NUMSECU = "2999999999999"
   END
END
ENR_DADSU<-1> = W_CHAINE:"001,'":W_NUMSECU:"'"
W_TXTACONVERTIR = ENR_CIVILAIDANT<4>
IF ENR_CIVILAIDANT<4> = "" THEN W_TXTACONVERTIR = ENR_CIVILAIDANT<2>
GOSUB 9999991
ENR_DADSU<-1> = W_CHAINE:"002,'":W_TXTACONVERTIR:"'"
W_TXTACONVERTIR = ENR_CIVILAIDANT<3>
GOSUB 9999991
ENR_DADSU<-1> = W_CHAINE:"003,'":W_TXTACONVERTIR:"'"
W_TXTACONVERTIR = ENR_CIVILAIDANT<2>
GOSUB 9999991
ENR_DADSU<-1> = W_CHAINE:"004,'":W_TXTACONVERTIR:"'"
IF ENR_CIVILAIDANT<1> = "MME" THEN 
   ENR_DADSU<-1> = W_CHAINE:"007,'02'"
END ELSE 
   IF ENR_CIVILAIDANT<1> = "MLE" THEN
      ENR_DADSU<-1> = W_CHAINE:"007,'02'"
   END ELSE
      ENR_DADSU<-1> = W_CHAINE:"007,'01'"
   END
END
W_TXTACONVERTIR = ENR_CIVILAIDANT<9>
GOSUB 9999991
IF W_TXTACONVERTIR # "" THEN
   IF LEN(W_TXTACONVERTIR)>50 THEN W_TXTACONVERTIR=W_TXTACONVERTIR[1,50]
   ENR_DADSU<-1> = W_CHAINE:"008.001,'":W_TXTACONVERTIR:"'"
END
W_TXTACONVERTIR=ENR_CIVILAIDANT<5>
IF ENR_CIVILAIDANT<6>[1,1] = "B" OR ENR_CIVILAIDANT<6>[1,1] = "T" OR ENR_CIVILAIDANT<6>[1,1] = "Q" THEN W_TXTACONVERTIR = W_TXTACONVERTIR:" ":ENR_CIVILAIDANT<6>[1,1]
IF ENR_CIVILAIDANT<7> # "" THEN W_TXTACONVERTIR = W_TXTACONVERTIR:" ":ENR_CIVILAIDANT<7>
IF ENR_CIVILAIDANT<8> # "" THEN W_TXTACONVERTIR = W_TXTACONVERTIR:" ":ENR_CIVILAIDANT<8>
GOSUB 9999991
IF W_TXTACONVERTIR # "" THEN ENR_DADSU<-1> = W_CHAINE:"008.006,'":W_TXTACONVERTIR:"'"
IF ENR_CIVILAIDANT<39> # "" THEN ENR_DADSU<-1> = W_CHAINE:"008.007,'":ENR_CIVILAIDANT<39>:"'"
W_TXTACONVERTIR = ENR_CIVILAIDANT<10>
GOSUB 9999991
IF TRIM(ENR_CIVILAIDANT<47>) <> "" THEN
   NULL
END ELSE
   ENR_DADSU<-1> = W_CHAINE:"008.010,'":W_TXTACONVERTIR:"'"
END
W_TXTACONVERTIR = ENR_CIVILAIDANT<11>
GOSUB 9999991
W_TXTACONVERTIR = CONVERT("-","", W_TXTACONVERTIR)
ENR_DADSU<-1> = W_CHAINE:"008.012,'":W_TXTACONVERTIR:"'"
IF TRIM(ENR_CIVILAIDANT<47>) <> "" THEN	
   READ ENR_PAYS FROM F.PAYS, ENR_CIVILAIDANT<47> ELSE ENR_PAYS = ""
   ENR_DADSU<-1> = W_CHAINE:"008.013,'":ENR_PAYS<3>:"'"
   W_TXTACONVERTIR = ENR_CIVILAIDANT<10>
   GOSUB 9999991
   ENR_DADSU<-1> = W_CHAINE:"008.016,'":W_TXTACONVERTIR:"'"
END
ENR_DADSU<-1> = W_CHAINE:"009,'":CONVERT("/","",OCONV(ENR_CIVILAIDANT<26>,"D4/")):"'"
W_TXTACONVERTIR = ENR_CIVILAIDANT<27>
GOSUB 9999991
ENR_DADSU<-1> = W_CHAINE:"010,'":W_TXTACONVERTIR:"'"
IF ENR_CIVILAIDANT<17> # "" THEN
   IF ENR_CIVILAIDANT<17>[9,2]="00" THEN
      ENR_DADSU<-1> = W_CHAINE:"011,'99'"   
   END ELSE 
      ENR_DADSU<-1> = W_CHAINE:"011,'":ENR_CIVILAIDANT<17>[9,2]:"'"
   END
END ELSE 
   IF ENR_CIVILAIDANT<28> # "" THEN
      ENR_DADSU<-1> = W_CHAINE:"011,'":ENR_CIVILAIDANT<28>:"'"
   END ELSE
      ENR_DADSU<-1> = W_CHAINE:"011,'99'"
   END
END
ENR_DADSU<-1> = W_CHAINE:"012,'":ENR_CIVILAIDANT<30>[1,38]:"'"
ENR_DADSU<-1> = W_CHAINE:"013,'":ENR_CIVILAIDANT<19>[1,38]:"'"
ENR_DADSU<-1> = W_CHAINE:"019,'":W_CODEAIDANT:"'"
RETURN


**********
* 4001001 -> PERIODE D'ACTIVITE(S40.G01.00) POUR TRAITEMENT DADS (TYPE 1)
**********
4001001
W_CHAINE = "S40.G01.00."
IF W_TRAITEPARGNESAL="OUI" THEN
   W_TABPERIODEACTIVITE<1,-1> = ICONV(W_DERNIERJOURPERDADS,"D4/")
   W_DATEDEBACTIVITE = W_DERNIERJOURPERDADS
   W_DATEDEBACTIVITE=CONVERT("/","",W_DATEDEBACTIVITE)
   W_MOTIFDEBACTIVITE="095"
   W_TABPERIODEACTIVITE<2,-1> = ICONV(W_DERNIERJOURPERDADS,"D4/")
   W_DATEFINACTIVITE = W_DERNIERJOURPERDADS
   W_DATEFINACTIVITE=CONVERT("/","",W_DATEFINACTIVITE)
   W_MOTIFFINACTIVITE="096"
END ELSE
   W_TABPERIODEACTIVITE<1,-1> = ENR_HISTORCUMULPERACT<32>
   W_DATEDEBACTIVITE = OCONV(ENR_HISTORCUMULPERACT<32>,"D4/")
   W_DATEDEBACTIVITE=CONVERT("/","",W_DATEDEBACTIVITE)
   W_MOTIFDEBACTIVITE=ENR_HISTORCUMULPERACT<33>
   W_TABPERIODEACTIVITE<2,-1> = ENR_HISTORCUMULPERACT<35>
   W_DATEFINACTIVITE = OCONV(ENR_HISTORCUMULPERACT<35>,"D4/")
   W_DATEFINACTIVITE=CONVERT("/","",W_DATEFINACTIVITE)
   W_MOTIFFINACTIVITE=ENR_HISTORCUMULPERACT<36>
END
ENR_DADSU<-1> = W_CHAINE:"001,'":W_DATEDEBACTIVITE:"'"
ENR_DADSU<-1> = W_CHAINE:"002.001,'":W_MOTIFDEBACTIVITE:"'"
ENR_DADSU<-1> = W_CHAINE:"003,'":W_DATEFINACTIVITE:"'"
ENR_DADSU<-1> = W_CHAINE:"004.001,'":W_MOTIFFINACTIVITE:"'"
ENR_DADSU<-1> = W_CHAINE:"005,'":W_SIRETETABL:"'"
RETURN


**********
* 4001002 -> PERIODE D'ACTIVITE(S40.G01.00) POUR TRAITEMENT AED (TYPE 2)
**********
4001002
W_CHAINE = "S40.G01.00."
W_MOTIFDEBACTIVITE="097"
IF ENR_CONTRAT<7>=W_DATEDEBACTIVITEINT THEN
   IF ENR_CONTRAT<13>="CER" THEN
      W_MOTIFDEBACTIVITE="089"
   END ELSE
      W_MOTIFDEBACTIVITE="001"
   END
END
IF W_DERNIEREPERIODES40="NON" THEN
   W_MOTIFFINACTIVITE="098"
END ELSE
   W_MOTIFFINCONTRAT=ENR_CONTRAT<49>
   BEGIN CASE
      CASE W_MOTIFFINCONTRAT="59"
         W_MOTIFFINACTIVITE="010" ;* Dmission
      CASE W_MOTIFFINCONTRAT>="10" AND W_MOTIFFINCONTRAT<="15" 
         W_MOTIFFINACTIVITE="012" ;* Licenciement
      CASE W_MOTIFFINCONTRAT="20" OR W_MOTIFFINCONTRAT="21" OR W_MOTIFFINCONTRAT="25" OR W_MOTIFFINCONTRAT="86" OR W_MOTIFFINCONTRAT="93"
         W_MOTIFFINACTIVITE="012" ;* Licenciement
      CASE W_MOTIFFINCONTRAT="39"
         W_MOTIFFINACTIVITE="134" ;* Dpart volontaire  la retraite
      CASE W_MOTIFFINCONTRAT="38"
         W_MOTIFFINACTIVITE="136" ;* Mise  la retraite par employeur
      CASE W_MOTIFFINCONTRAT="43"
         W_MOTIFFINACTIVITE="138" ;* Rupture conventionnelle
      CASE 1
         IF ENR_CONTRAT<13>="CER" THEN
            W_MOTIFFINACTIVITE="090" ;* Cumul emploi retraite
         END ELSE
            W_MOTIFFINACTIVITE="008"
         END
   END CASE
END
ENR_DADSU<-1> = W_CHAINE:"001,'":W_DATEDEBACTIVITE:"'"
ENR_DADSU<-1> = W_CHAINE:"002.001,'":W_MOTIFDEBACTIVITE:"'"
ENR_DADSU<-1> = W_CHAINE:"003,'":W_DATEFINACTIVITE:"'"
ENR_DADSU<-1> = W_CHAINE:"004.001,'":W_MOTIFFINACTIVITE:"'"
ENR_DADSU<-1> = W_CHAINE:"005,'":W_SIRETETABL:"'"
RETURN


**********
* 401000 -> SITUATION ADMINISTRATIVE GENERALE DU SALARIE OU DE L'AGENT(S40.G10.00)
**********
401000
W_CHAINE = "S40.G10.00."
IF W_TYPETRAIT="1" THEN
   READ ENR_CONTRAT FROM F.CONTRAT,ENR_HISTORCUMULPERACT<34>[1,8] ELSE ENR_CONTRAT=""
   IF INDEX(W_TABCONTRATAIDANT,ENR_HISTORCUMULPERACT<34>[1,8],1) # 0 THEN
      NULL
   END ELSE
      W_TABCONTRATAIDANT<-1>=ENR_HISTORCUMULPERACT<34>[1,8]
   END
   W_NUMAVENANT=ENR_HISTORCUMULPERACT<34>[9,2]
END ELSE
   D=DCOUNT(EXTRACT(ENR_CONTRAT,15),CHAR(253))
   W_FINAVENANT="NON"
   W_NUMAVENANT=""
   LOOP
      IF D=0 THEN W_FINAVENANT="OUI"
   UNTIL W_FINAVENANT="OUI" DO
      DatEffetContrat=ENR_CONTRAT<15,D>
      W_NUMEROAVENANT=D "R%2"
      IF DatEffetContrat<=W_DATEFINACTIVITEINT THEN
         W_NUMAVENANT=D "R%2"
         W_FINAVENANT="OUI"
      END
      D=D-1
   REPEAT
   IF D=0 THEN D=1
END
W_CODEPOPULATION="10"
IF ENR_CONTRAT<121,W_NUMAVENANT>="40" THEN W_CODEPOPULATION="40"
IF ENR_CONTRAT<121,W_NUMAVENANT>="43" THEN W_CODEPOPULATION="43"
ENR_DADSU<-1> = W_CHAINE:"005,'":W_CODEPOPULATION:"'"
ENR_DADSU<-1> = W_CHAINE:"008.001,'03'"
IF W_TYPETRAIT="1" THEN
   W_NBETABL=DCOUNT(ENR_HISTORCUMUL<23>,CHAR(253))
END ELSE
   W_NBETABL=1
END
W_EMPLOISMULTIPLES="NON"
IF W_NBETABL>1 THEN
   ENR_DADSU<-1> = W_CHAINE:"008.002,'02'"
   W_EMPLOISMULTIPLES="OUI"
END ELSE
   ENR_DADSU<-1> = W_CHAINE:"008.002,'03'"
END
ENR_DADSU<-1> = W_CHAINE:"009.001,'":W_CODEDECALAGEPAIE:"'"
ENR_DADSU<-1> = W_CHAINE:"009.002,'16'"
W_TXTACONVERTIR = ENR_CONTRAT<16,W_NUMAVENANT> 
GOSUB 9999991
ENR_DADSU<-1> = W_CHAINE:"010,'":W_TXTACONVERTIR:"'"
* Didier 07/05/2012 : gestion date paiement
IF W_TYPETRAIT="2" THEN
   ENR_DADSU<-1> = W_CHAINE:"035,'":W_DATEPAIEMENT:"'"
END
RETURN


**********
* 401005 -> SITUATION ADMINISTRATIVE SPECIFIQUE DU SALARIE SOUS CONTRAT DE DROIT PRIVE (S40.G10.00)
**********
401005
W_CHAINE = "S40.G10.05."
ENR_DADSU<-1> = W_CHAINE:"011.001,'":ENR_CONTRAT<17,W_NUMAVENANT>:"'"
IF ENR_CONTRAT<17,W_NUMAVENANT> = "643a" THEN ENR_DADSU<-1> = W_CHAINE:"011.002,'L643'"
IF ENR_CONTRAT<4> = "D" THEN
   W_CODENATURECONTRAT = "02"
END ELSE
   W_CODENATURECONTRAT = "01"
END
IF ENR_CONTRAT<13>="APP" THEN W_CODENATURECONTRAT = "05"
ENR_DADSU<-1> = W_CHAINE:"012.001,'":W_CODENATURECONTRAT:"'"
IF W_TYPEURSSAFMSA="M" THEN
   ENR_DADSU<-1> = W_CHAINE:"012.002,'02'"
END ELSE
   ENR_DADSU<-1> = W_CHAINE:"012.002,'01'"
END
W_CODEINTITULECONTRAT="90"
IF ENR_CONTRAT<13>="CIE" THEN W_CODEINTITULECONTRAT="21"
IF ENR_CONTRAT<13>="PRO" THEN W_CODEINTITULECONTRAT="61"
IF ENR_CONTRAT<13>="CA" THEN W_CODEINTITULECONTRAT="40"
IF ENR_CONTRAT<13>="CUI" OR ENR_CONTRAT<13>="CAE" THEN W_CODEINTITULECONTRAT="41"
ENR_DADSU<-1> = W_CHAINE:"012.003,'":W_CODEINTITULECONTRAT:"'"
IF W_TYPETRAIT="1" THEN
   IF W_EMPLOISMULTIPLES="OUI" THEN ENR_DADSU<-1> = W_CHAINE:"012.005,'":ENR_HISTORCUMULPERACT<34>:"'"
END
* Didier 10/01/2013 : gestion structure S40.G10.05.012.006 pour date de fin prsume si rupture anticipe CDD
IF ENR_CONTRAT<49>="36" OR ENR_CONTRAT<49>="37" THEN
   W_DATEFINPRESUMEE=""
   IF ENR_CONTRAT<60>#"" THEN
      W_DATEFINPRESUMEE=OCONV(ENR_CONTRAT<60>,"D4/")
      W_DATEFINPRESUMEE=CONVERT("/","",W_DATEFINPRESUMEE)
   END
   IF W_DATEFINPRESUMEE="" THEN W_DATEFINPRESUMEE=W_DATEFINACTIVITE
   ENR_DADSU<-1> = W_CHAINE:"012.006,'":W_DATEFINPRESUMEE:"'"
END
ENR_DADSU<-1> = W_CHAINE:"013.004,'90'"
W_CODESTATUTCATCONV="07"
IF ENR_CONTRAT<17,W_NUMAVENANT>[1,1] = "3" OR ENR_CONTRAT<17,W_NUMAVENANT>[1,2] = "23" OR ENR_CONTRAT<17,W_NUMAVENANT>[1,4] = "431a" THEN
   W_CODESTATUTCATCONV = "03"
END ELSE
   IF ENR_CONTRAT<6>="A" THEN W_CODESTATUTCATCONV = "06"
*   IF ENR_CONTRAT<17,W_NUMAVENANT>[1,1] = "4" THEN W_CODESTATUTCATCONV = "04"
END
ENR_DADSU<-1> = W_CHAINE:"015.001,'":W_CODESTATUTCATCONV:"'"
IF W_TYPETRAIT="1" THEN
   IF W_CODESTATUTCATCONV="03" OR W_CODESTATUTCATCONV="04" THEN
      ENR_DADSU<-1> = W_CHAINE:"015.002,'01'"
   END ELSE
      ENR_DADSU<-1> = W_CHAINE:"015.002,'04'"
   END
END ELSE
   IF ENR_DETAILCALCUL<7>#"" AND ENR_DETAILCALCUL<7>#"0" THEN
      IF W_CODESTATUTCATCONV="03" OR W_CODESTATUTCATCONV="04" THEN
         ENR_DADSU<-1> = W_CHAINE:"015.002,'01'"
      END ELSE
         ENR_DADSU<-1> = W_CHAINE:"015.002,'04'"
      END
   END
END
* Didier 16/11/2012 : gestion IDCC de la CCN
*IF ENR_CONTRAT<1> = "01" THEN ENR_DADSU<-1> = W_CHAINE:"016,'1258'"
*IF ENR_CONTRAT<1> = "02" THEN ENR_DADSU<-1> = W_CHAINE:"016,'2111'"
*IF ENR_CONTRAT<1> = "03" THEN ENR_DADSU<-1> = W_CHAINE:"016,'0562'"
*IF ENR_CONTRAT<1> = "04" THEN ENR_DADSU<-1> = W_CHAINE:"016,'1031'"
*IF ENR_CONTRAT<1> = "05" THEN ENR_DADSU<-1> = W_CHAINE:"016,'0029'"
*IF ENR_CONTRAT<1> = "06" THEN ENR_DADSU<-1> = W_CHAINE:"016,'0550'"
*IF ENR_CONTRAT<1> = "07" OR ENR_CONTRAT<1> = "08" OR ENR_CONTRAT<1> = "09" THEN ENR_DADSU<-1> = W_CHAINE:"016,'9999'"
READ ENR_CONVENTIONCOL FROM F.CONVENTIONCOL,ENR_CONTRAT<1> ELSE ENR_CONVENTIONCOL=""
W_IDCC=ENR_CONVENTIONCOL<84>
IF W_IDCC="" THEN W_IDCC="9999"
ENR_DADSU<-1> = W_CHAINE:"016,'":W_IDCC:"'"

ENR_DADSU<-1> = W_CHAINE:"017,'":ENR_CONTRAT<22,W_NUMAVENANT>/1000:"'"
IF W_CODEDECALAGEPAIE="02" OR W_CODEDECALAGEPAIE="03" THEN
   IF ENR_HISTORCUMULPERACT<37>="1" THEN
      ENR_DADSU<-1> = W_CHAINE:"018,'01'"
   END ELSE
      ENR_DADSU<-1> = W_CHAINE:"018,'02'"
   END
END
* Didier 12/11/2013 : ajout gestion motif de recours  un CDD
* Mikael 11/12/2013 suite appel de bailleul et du mans ajout notion de date
IF W_DATESYSTINTERNE<"16817" THEN
* RIEN version 07
END ELSE
	IF W_CODENATURECONTRAT = "02" THEN
	   W_MOTIFRECOURSCDD=ENR_CONTRAT<137>
	   IF W_MOTIFRECOURSCDD="" THEN W_MOTIFRECOURSCDD="03"
	   ENR_DADSU<-1> = W_CHAINE:"019,'":W_MOTIFRECOURSCDD:"'"
	END
END
RETURN


**********
* 401010 -> SITUATION ADMINISTRATIVE SPECIFIQUE DE L'AGENT SOUS STATUT D'EMPLOI DE DROIT PUBLIC (S40.G10.10)
**********
401010
W_CHAINE = "S40.G10.10."
W_CODESTATUTCATCONV=""
ENR_DADSU<-1> = W_CHAINE:"002.001,'22'"
W_CODESTATUTJURIDIQUE=ENR_CONTRAT<122,W_NUMAVENANT>
IF W_CODEPOPULATION="40" THEN
   IF W_CODESTATUTJURIDIQUE="" THEN W_CODESTATUTJURIDIQUE="011"
END ELSE
   IF W_CODESTATUTJURIDIQUE="" THEN W_CODESTATUTJURIDIQUE="030"
END
ENR_DADSU<-1> = W_CHAINE:"002.002,'":W_CODESTATUTJURIDIQUE:"'"
IF W_CODEPOPULATION="40" THEN ENR_DADSU<-1> = W_CHAINE:"002.003,'01'"
* Didier 14/07/2012 : enlever les 6 premiers caractres si 0
IF ENR_CONTRAT<123,W_NUMAVENANT>#"" THEN
   IF ENR_CONTRAT<123,W_NUMAVENANT>[1,6]="000000" THEN
      ENR_DADSU<-1> = W_CHAINE:"002.004,'":ENR_CONTRAT<123,W_NUMAVENANT>[7,4]:"'"
   END ELSE
      ENR_DADSU<-1> = W_CHAINE:"002.004,'":ENR_CONTRAT<123,W_NUMAVENANT>:"'"
   END
END
IF ENR_CONTRAT<124,W_NUMAVENANT>#"" THEN ENR_DADSU<-1> = W_CHAINE:"002.005,'":ENR_CONTRAT<124,W_NUMAVENANT>:"'"
IF ENR_CONTRAT<125,W_NUMAVENANT>#"" THEN ENR_DADSU<-1> = W_CHAINE:"002.006,'":ENR_CONTRAT<125,W_NUMAVENANT>:"'"
IF ENR_CONTRAT<126,W_NUMAVENANT>#"" THEN ENR_DADSU<-1> = W_CHAINE:"004.001,'":ENR_CONTRAT<126,W_NUMAVENANT>:"'"
IF ENR_CONTRAT<127,W_NUMAVENANT>#"" THEN ENR_DADSU<-1> = W_CHAINE:"004.002,'":ENR_CONTRAT<127,W_NUMAVENANT>:"'"
IF ENR_CONTRAT<128,W_NUMAVENANT>#"" AND ENR_CONTRAT<128,W_NUMAVENANT>#"0" THEN
   W_MISENFORME=ENR_CONTRAT<128,W_NUMAVENANT> "R26"
   ENR_DADSU<-1> = W_CHAINE:"006,'":W_MISENFORME:"'"
   W_CASNBI="OUI"
END
ENR_DADSU<-1> = W_CHAINE:"011.001,'":ENR_CONTRAT<17,W_NUMAVENANT>:"'"
IF ENR_CONTRAT<4> = "D" THEN
   W_CODENATURECONTRAT = "02"
END ELSE
   W_CODENATURECONTRAT = "01"
END
IF W_CODEPOPULATION="43" THEN ENR_DADSU<-1> = W_CHAINE:"012.001,'":W_CODENATURECONTRAT:"'"
ENR_DADSU<-1> = W_CHAINE:"024,'101'"
RETURN


**********
* 401500 -> DUREE ET QUANTITE DU TRAVAIL EFFECTUEES (S40.G15.00)
**********
401500
W_CHAINE = "S40.G15.00."
ENR_DADSU<-1> = W_CHAINE:"001,'10'"
W_HEURESSUP=0
W_MONTSUP=0
W_HEURESCOMPL=0
W_MONTCOMPL=0
IF W_TYPETRAIT="1" THEN
   IF ENR_HISTORCUMULPERACT<2><0 THEN ENR_HISTORCUMULPERACT<2>=0
   W_CUMULHEURESPAYEES=W_CUMULHEURESPAYEES+ENR_HISTORCUMULPERACT<2>
   IF ENR_HISTORCUMULPERACT<1> > ENR_HISTORCUMULPERACT<2> THEN ENR_HISTORCUMULPERACT<1> = ENR_HISTORCUMULPERACT<2>
   IF ENR_HISTORCUMULPERACT<5>="" THEN ENR_HISTORCUMULPERACT<5>=0 
   W_CUMULBRUT=W_CUMULBRUT+ENR_HISTORCUMULPERACT<5>
   IF ENR_HISTORCUMULPERACT<3> > W_DERNIERMOIS60SMICHH THEN W_DERNIERMOIS60SMICHH=ENR_HISTORCUMULPERACT<3>
   W_MISENFORME=ENR_HISTORCUMULPERACT<2> "R26"
END ELSE
   I=1
   LOOP
   UNTIL ENR_DETAILCALCUL<2,I>="" DO
      READ ENR_RUBSAISIE FROM F.RUBSAISIE,ENR_DETAILCALCUL<2,I> ELSE ENR_RUBSAISIE=""
      IF ENR_RUBSAISIE<19>="2" THEN
         W_HEURESSUP=W_HEURESSUP+ENR_DETAILCALCUL<3,I>
         W_MONTSUP=W_MONTSUP+ENR_DETAILCALCUL<5,I>
      END
      IF ENR_RUBSAISIE<19>="1" THEN
         W_HEURESCOMPL=W_HEURESCOMPL+ENR_DETAILCALCUL<3,I>
         W_MONTCOMPL=W_MONTCOMPL+ENR_DETAILCALCUL<5,I>
      END
      I=I+1
   REPEAT
   IF ENR_DETAILCALCUL<6>="" THEN ENR_DETAILCALCUL<6>=0
* Didier 08/03/2013 - ticket 3002 : si ngatif alors 0
   IF ENR_DETAILCALCUL<6><0 THEN ENR_DETAILCALCUL<6>=0
   W_MISENFORME=ENR_DETAILCALCUL<6> "R26"
END
ENR_DADSU<-1> = W_CHAINE:"003,'":W_MISENFORME:"'"
W_HEURESMENSCONTRAT=0
W_HEURESHEBDOCONTRAT=0
IF ENR_CONTRAT<25,W_NUMAVENANT> = "1" THEN
   W_HEURESMENSCONTRAT = INT((ENR_CONTRAT<24,W_NUMAVENANT> * 52/12)+1/2)
   W_HEURESHEBDOCONTRAT = ENR_CONTRAT<24,W_NUMAVENANT>
END 
IF ENR_CONTRAT<25,W_NUMAVENANT> = "2" THEN
   W_HEURESMENSCONTRAT = INT((ENR_CONTRAT<24,W_NUMAVENANT> * 26/12)+1/2)
   W_HEURESHEBDOCONTRAT = INT((ENR_CONTRAT<24,W_NUMAVENANT> / 2)+1/2)
END
IF ENR_CONTRAT<25,W_NUMAVENANT> = "3" THEN
   W_HEURESMENSCONTRAT = ENR_CONTRAT<24,W_NUMAVENANT>
   W_HEURESHEBDOCONTRAT = INT((ENR_CONTRAT<24,W_NUMAVENANT> * 12/52)+1/2)
END
IF ENR_CONTRAT<25,W_NUMAVENANT> = "4" THEN
   W_HEURESMENSCONTRAT = INT((ENR_CONTRAT<24,W_NUMAVENANT> /12)+1/2)
   W_HEURESHEBDOCONTRAT = INT((ENR_CONTRAT<24,W_NUMAVENANT> / 52)+1/2)
END
IF W_HEURESMENSCONTRAT=0 THEN W_HEURESMENSCONTRAT=1
IF W_HEURESHEBDOCONTRAT=0 THEN W_HEURESHEBDOCONTRAT=1
W_TAUXTEMPSPARTIEL=INT(W_HEURESMENSCONTRAT*10000/W_HEURESMENSETABL+1/2)
IF W_EMPLOISMULTIPLES="OUI" AND W_TAUXTEMPSPARTIEL>=10000 THEN W_TAUXTEMPSPARTIEL="9999"
IF W_TAUXTEMPSPARTIEL<10000 THEN
   IF W_TAUXTEMPSPARTIEL<100 THEN W_TAUXTEMPSPARTIEL=100
   W_MISENFORME=W_TAUXTEMPSPARTIEL "R26"
   ENR_DADSU<-1> = W_CHAINE:"020.001,'":W_MISENFORME:"'"
END
IF W_TYPETRAIT="1" THEN
   W_MISENFORME=ENR_HISTORCUMULPERACT<2> "R26"
END ELSE
* Didier 08/03/2013 - ticket 3002 : si ngatif alors 0
   IF ENR_DETAILCALCUL<6><0 THEN ENR_DETAILCALCUL<6>=0
   W_MISENFORME=ENR_DETAILCALCUL<6> "R26"
END
ENR_DADSU<-1> = W_CHAINE:"022.001,'":W_MISENFORME:"'"
IF W_TYPETRAIT="1" THEN
   W_HEURESSUPPL=ENR_HISTORCUMULPERACT<24>
   IF W_HEURESSUPPL="" OR W_HEURESSUPPL<0 THEN W_HEURESSUPPL=0
   W_HEURESCOMPL=ENR_HISTORCUMULPERACT<26>
   IF W_HEURESCOMPL="" OR W_HEURESCOMPL<0 THEN W_HEURESCOMPL=0
   W_HEURESHORSSUPPLCOMPL=ENR_HISTORCUMULPERACT<2>-W_HEURESSUPPL-W_HEURESCOMPL
END ELSE
   W_HEURESHORSSUPPLCOMPL=ENR_DETAILCALCUL<6>-W_HEURESSUP-W_HEURESCOMPL
END
* Didier 06/04/2012 : suite appel CAEN en AED --> si total heures suppl et compl ngatif alors mettre heures brutes
IF W_TYPETRAIT="1" THEN
   W_MISENFORME=W_HEURESHORSSUPPLCOMPL "R26"
END ELSE
   IF W_HEURESHORSSUPPLCOMPL<0 THEN
* Didier 08/03/2013 - ticket 3002 : si ngatif alors 0
      IF ENR_DETAILCALCUL<6><0 THEN ENR_DETAILCALCUL<6>=0
      W_MISENFORME=ENR_DETAILCALCUL<6> "R26"
   END ELSE
      W_MISENFORME=W_HEURESHORSSUPPLCOMPL "R26"
   END
END
ENR_DADSU<-1> = W_CHAINE:"022.002,'":W_MISENFORME:"'"
RETURN


**********
* 401505 -> DUREE DU TRAVAIL SECTEUR PRIVE (S40.G15.05)
**********
401505
W_CHAINE = "S40.G15.05."
IF W_TAUXTEMPSPARTIEL>=10000 THEN
   ENR_DADSU<-1> = W_CHAINE:"013.001,'10'"
END ELSE
   ENR_DADSU<-1> = W_CHAINE:"013.001,'20'"
END
ENR_DADSU<-1> = W_CHAINE:"025.001,'10'"
W_MISENFORME=W_HEURESMENSETABL "R26"
ENR_DADSU<-1> = W_CHAINE:"025.002,'":W_MISENFORME:"'"
IF W_HEURESMENSCONTRAT>W_HEURESMENSETABL THEN W_HEURESMENSCONTRAT=W_HEURESMENSETABL
W_MISENFORME=W_HEURESMENSCONTRAT "R26"
ENR_DADSU<-1> = W_CHAINE:"025.003,'":W_MISENFORME:"'"
RETURN


**********
* 401510 -> DUREE DU TRAVAIL SECTEUR PUBLIC (S40.G15.10)
**********
401510
W_CHAINE = "S40.G15.10."
IF W_TAUXTEMPSPARTIEL>=10000 THEN
   ENR_DADSU<-1> = W_CHAINE:"013.001,'10'"
END ELSE
   ENR_DADSU<-1> = W_CHAINE:"013.001,'50'"
END
ENR_DADSU<-1> = W_CHAINE:"013.002,'01'"
W_MISENFORME=W_HEURESHEBDOETABL "R26"
ENR_DADSU<-1> = W_CHAINE:"025.002,'":W_MISENFORME:"'"
W_MISENFORME=W_HEURESHEBDOCONTRAT "R26"
ENR_DADSU<-1> = W_CHAINE:"025.004,'":W_MISENFORME:"'"
RETURN


**********
* 402000 -> REGIMES DE BASE OBLIGATOIRES DE SECURITE SOCIALE (S40.G20.00)
**********
402000
W_CHAINE = "S40.G20.00."
IF W_TYPEURSSAFMSA="M" THEN
   ENR_DADSU<-1> = W_CHAINE:"018.002,'300'"
END ELSE
   ENR_DADSU<-1> = W_CHAINE:"018.002,'200'"
END
IF W_CODEPOPULATION="40" THEN
   ENR_DADSU<-1> = W_CHAINE:"018.003,'900'"
   ENR_DADSU<-1> = W_CHAINE:"018.004,'120'"
END ELSE
   IF W_TYPEURSSAFMSA="M" THEN
      ENR_DADSU<-1> = W_CHAINE:"018.003,'300'"
      ENR_DADSU<-1> = W_CHAINE:"018.004,'300'"
   END ELSE
      ENR_DADSU<-1> = W_CHAINE:"018.003,'200'"
      ENR_DADSU<-1> = W_CHAINE:"018.004,'200'"
   END
END
RETURN


**********
* 402500 -> ACCIDENTS DU TRAVAIL (S40.G25.00)
**********
402500
IF W_TYPEURSSAFMSA="M" THEN RETURN
W_CHAINE = "S40.G25.00."
I=1
LOOP
UNTIL W_TABETAB<1,I>[1,10]=W_ANNEE:W_CODEENTITE:W_CODEETABL OR W_TABETAB<1,I>[1,10]="" DO
   I=I+1
REPEAT
IF W_TABETAB<1,I>[1,10]=W_ANNEE:W_CODEENTITE:W_CODEETABL THEN
   ENR_DADSU<-1> = W_CHAINE:"025,'":W_TABETAB<7,I>:"'"
   ENR_DADSU<-1> = W_CHAINE:"026,'":W_TABETAB<1,I>[11,5]:"'"
   IF TRIM(W_TABETAB<3,I>) # "" THEN ENR_DADSU<-1> = W_CHAINE:"027,'":W_TABETAB<3,I>:"'"
   W_MISENFORME=W_TABETAB<2,I> "R26"
   ENR_DADSU<-1> = W_CHAINE:"028,'":W_MISENFORME:"'"
END
IF ENR_HISTORCUMULPERACT<1>#"" AND ENR_HISTORCUMULPERACT<1>>0 THEN 
   W_MISENFORME=ENR_HISTORCUMULPERACT<1> "R26"
   ENR_DADSU<-1> = W_CHAINE:"029,'":W_MISENFORME:"'"
END ELSE
   ENR_DADSU<-1> = W_CHAINE:"029,'0.00'"
END
RETURN


**********
* 4028051 -> ASSIETTES DE REMUNERATIONS SECURITE SOCIALE (S40.G28.05) POUR TRAITEMENT DADS (TYPE 1)
**********
4028051
W_CHAINE = "S40.G28.05."
W_URSSAFTOT=0
W_URSSAFPLAF=0
W_CSG=0
W_CSG1=0
W_CSG2=0
W_TAXETOT=0
W_REDUCCOTISSAL908=0
W_DEDUCCOTISPAT909=0
W_NaturebaseCotis=""
W_RETRAITEGENE=""
W_PREVOYANCE=""
W_BASEASSEDIC=0
W_BASEAGS=0
W_COTISAIDANTASSEDIC=0
W_COTISPATROASSEDIC=0
* Didier 12/11/2013 : rduction Fillon en structure S40.G30.40 au lieu de S65.G30.40
W_MONTREDUCFILLON=0
W_BASEREDUCFILLON=0
W_BASESMICREDUCFILLON=0
R = 1
LOOP
UNTIL W_TABCASPARTICULIERS<1,R> = "" DO
   W_TABCASPARTICULIERS<5,R>=0
   W_TABCASPARTICULIERS<6,R>=0
   W_TABCASPARTICULIERS<7,R>=0
   R=R+1
REPEAT
I=1
LOOP
   W_CODERUBCHARGE=ENR_HISTORCUMULPERACT<15,I>
UNTIL W_CODERUBCHARGE="" DO
   IF INDEX(W_TABURSSAFTOT,W_CODERUBCHARGE,1) # 0 THEN
      W_URSSAFTOT = W_URSSAFTOT + ENR_HISTORCUMULPERACT<17,I>
      IF INDEX(W_TABURSSAFTOTFORFAIT,W_CODERUBCHARGE,1) # 0 THEN W_NaturebaseCotis = "Forfait"
   END
   IF INDEX(W_TABURSSAFPLAF,W_CODERUBCHARGE,1) # 0 THEN W_URSSAFPLAF = W_URSSAFPLAF + ENR_HISTORCUMULPERACT<17,I>
   IF INDEX(W_TABCSG<1>,ENR_HISTORCUMULPERACT<15,I>,1) # 0 THEN
      R=1
      LOOP
      UNTIL W_TABCSG<1,R>=ENR_HISTORCUMULPERACT<15,I> DO
         R=R+1
      REPEAT
* Didier 28/01/2013 : gestion table W_TABCSG pour champ 2  0 ou non
*      IF W_TABCSG<2,R>="" AND W_CSG1 = 0 THEN
      IF W_TABCSG<2,R>=0 AND W_CSG1 = 0 THEN
         W_CSG1=1
         W_CSG = W_CSG + ENR_HISTORCUMULPERACT<17,I>
      END
* Didier 28/01/2013 : gestion table W_TABCSG pour champ 2  0 ou non
*      IF W_TABCSG<2,R>#"" AND W_CSG2 = 0 THEN
      IF W_TABCSG<2,R>#0 AND W_CSG2 = 0 THEN
         W_CSG2=1
         W_CSG = W_CSG + ENR_HISTORCUMULPERACT<17,I>
      END 
   END
   IF W_CODERUBCHARGE="908" THEN W_REDUCCOTISSAL908=ENR_HISTORCUMULPERACT<18,I>
   IF W_CODERUBCHARGE="909" THEN W_DEDUCCOTISPAT909=-ENR_HISTORCUMULPERACT<19,I>
   IF INDEX(W_TABTAXESALTOT,W_CODERUBCHARGE,1) # 0 AND W_TAXETOT = 0 THEN W_TAXETOT = W_TAXETOT + ENR_HISTORCUMULPERACT<17,I>
   IF INDEX(ENR_PARAMPOLEEMPLOI<1>,W_CODERUBCHARGE,1) # 0 THEN
      W_BASEASSEDIC = W_BASEASSEDIC + ENR_HISTORCUMULPERACT<17,I>
      W_COTISAIDANTASSEDIC=W_COTISAIDANTASSEDIC-ENR_HISTORCUMULPERACT<18,I>
      W_COTISPATROASSEDIC=W_COTISPATROASSEDIC+ENR_HISTORCUMULPERACT<19,I>
   END
   IF INDEX(ENR_PARAMPOLEEMPLOI<2>,W_CODERUBCHARGE,1) # 0 THEN
      W_BASEAGS = W_BASEAGS + ENR_HISTORCUMULPERACT<17,I>
   END
   IF W_CODERUBCHARGE="904" OR W_CODERUBCHARGE="907" THEN
      W_BASESMICREDUCFILLON=W_BASESMICREDUCFILLON+ENR_HISTORCUMULPERACT<40>
      W_BASEREDUCFILLON=W_BASEREDUCFILLON+ENR_HISTORCUMULPERACT<17,I>
      W_MONTREDUCFILLON=W_MONTREDUCFILLON-ENR_HISTORCUMULPERACT<19,I>
   END
   IF INDEX(ENR_TDSPARAMCNRACL<3>,W_CODERUBCHARGE,1) # 0 THEN
      W_BASERAFP = W_BASERAFP + ENR_HISTORCUMULPERACT<17,I>
      W_COTISPATRORAFP = W_COTISPATRORAFP + ENR_HISTORCUMULPERACT<19,I>
      W_COTISSALRAFP = W_COTISSALRAFP - ENR_HISTORCUMULPERACT<18,I>
   END
   IF INDEX(ENR_TDSPARAMCNRACL<5>,W_CODERUBCHARGE,1) # 0 THEN
      W_BASECNRACLEXOSANSNBI = W_BASECNRACLEXOSANSNBI + ENR_HISTORCUMULPERACT<17,I>
      W_COTISPATROCNRACLEXOSANSNBI = W_COTISPATROCNRACLEXOSANSNBI + ENR_HISTORCUMULPERACT<19,I>
      W_COTISSALCNRACLEXOSANSNBI = W_COTISSALCNRACLEXOSANSNBI - ENR_HISTORCUMULPERACT<18,I>
   END
   IF INDEX(ENR_TDSPARAMCNRACL<4>,W_CODERUBCHARGE,1) # 0 THEN
      W_BASECNRACLNONEXOSANSNBI = W_BASECNRACLNONEXOSANSNBI + ENR_HISTORCUMULPERACT<17,I>
      W_COTISPATROCNRACLNONEXOSANSNBI = W_COTISPATROCNRACLNONEXOSANSNBI + ENR_HISTORCUMULPERACT<19,I>
      W_COTISSALCNRACLNONEXOSANSNBI = W_COTISSALCNRACLNONEXOSANSNBI - ENR_HISTORCUMULPERACT<18,I>
   END
   IF INDEX(ENR_TDSPARAMCNRACL<6>,W_CODERUBCHARGE,1) # 0 THEN
      W_BASENBI = W_BASENBI + ENR_HISTORCUMULPERACT<17,I>
      W_COTISPATRONBI = W_COTISPATRONBI + ENR_HISTORCUMULPERACT<19,I>
      W_COTISSALNBI = W_COTISSALNBI - ENR_HISTORCUMULPERACT<18,I>
   END
   R = 1
   LOOP
   UNTIL W_TABCASPARTICULIERS<1,R> = "" DO
      IF INDEX(W_TABCASPARTICULIERS<3,R>,W_CODERUBCHARGE,1) # 0 THEN
         W_TABCASPARTICULIERS<5,R>=W_TABCASPARTICULIERS<5,R>+ENR_HISTORCUMULPERACT<17,I>
         W_TABCASPARTRAPPORT<5,R>=W_TABCASPARTRAPPORT<5,R>+ENR_HISTORCUMULPERACT<17,I>
         W_TABCASPARTICULIERS<7,R>=W_TABCASPARTICULIERS<7,R>+ENR_HISTORCUMULPERACT<19,I>
         W_TABCASPARTRAPPORT<7,R>=W_TABCASPARTRAPPORT<7,R>+ENR_HISTORCUMULPERACT<19,I>
      END
      IF INDEX(W_TABCASPARTICULIERS<4,R>,W_CODERUBCHARGE,1) # 0 THEN
         W_TABCASPARTICULIERS<6,R>=W_TABCASPARTICULIERS<6,R>+ENR_HISTORCUMULPERACT<17,I>
         W_TABCASPARTRAPPORT<6,R>=W_TABCASPARTRAPPORT<6,R>+ENR_HISTORCUMULPERACT<17,I>
         W_TABCASPARTICULIERS<7,R>=W_TABCASPARTICULIERS<7,R>+ENR_HISTORCUMULPERACT<19,I>
         W_TABCASPARTRAPPORT<7,R>=W_TABCASPARTRAPPORT<7,R>+ENR_HISTORCUMULPERACT<19,I>
      END
      R = R + 1
   REPEAT
   W_NBORG = DCOUNT(W_TABRETRAITE<1>,CHAR(253))
   FOR M = 1 TO W_NBORG
      IF W_TABRETRAITE<1,M>[4,3] = "000" OR W_TABRETRAITE<1,M>[4,3] = W_CODEETABL THEN
         *TRANCHE TOTALITE
         IF INDEX(W_TABRETRAITE<2,M>,ENR_HISTORCUMULPERACT<15,I>,1) # 0 THEN 
            IF INDEX(W_RETRAITEGENE<1>,W_TABRETRAITE<1,M>,1) = 0 THEN
               W_RETRAITEGENE<1,-1> = W_TABRETRAITE<1,M>
               W_RETRAITEGENE<2,-1> = ENR_HISTORCUMULPERACT<17,I>
               W_RETRAITEGENE<3,-1> = 0
               W_RETRAITEGENE<4,-1> = W_TABRETRAITE<4,M>
               IF W_TABRETRAITE<9,M>="03" THEN
                  IF ENR_CONTRAT<82,W_NUMAVENANT>#"" THEN
                     W_RETRAITEGENE<5,-1> = ENR_CONTRAT<82,W_NUMAVENANT>
                  END ELSE
                     W_RETRAITEGENE<5,-1> = W_TABRETRAITE<5,M>
                  END
               END ELSE
                  W_RETRAITEGENE<5,-1> = W_TABRETRAITE<5,M>
               END
               W_RETRAITEGENE<6,-1> = W_TABRETRAITE<6,M>
               W_RETRAITEGENE<7,-1> = 0					
               W_RETRAITEGENE<8,-1> = W_TABRETRAITE<8,M>
               W_RETRAITEGENE<9,-1> = W_TABRETRAITE<9,M>
               W_RETRAITEGENE<10,-1> = W_TABRETRAITE<10,M>
               W_RETRAITEGENE<11,-1> = -ENR_HISTORCUMULPERACT<18,I>
               W_RETRAITEGENE<12,-1> = ENR_HISTORCUMULPERACT<19,I>
            END ELSE
               R=1
               LOOP
               UNTIL W_RETRAITEGENE<1,R>=W_TABRETRAITE<1,M> OR W_RETRAITEGENE<1,R>="" DO
                  R=R+1
               REPEAT
               IF W_RETRAITEGENE<1,R>=W_TABRETRAITE<1,M> THEN
                  IF W_RETRAITEGENE<8,R>="C" THEN
                     W_RETRAITEGENE<2,R> = W_RETRAITEGENE<2,R> + ENR_HISTORCUMULPERACT<17,I>
                  END
                  IF W_RETRAITEGENE<2,R>="" OR W_RETRAITEGENE<2,R>=0 THEN W_RETRAITEGENE<2,R> = ENR_HISTORCUMULPERACT<17,I>
                  W_RETRAITEGENE<11,R> = W_RETRAITEGENE<11,R> - ENR_HISTORCUMULPERACT<18,I>
                  W_RETRAITEGENE<12,R> = W_RETRAITEGENE<12,R> + ENR_HISTORCUMULPERACT<19,I>
               END
            END 
         END
         * TRANCHE A
         IF INDEX(W_TABRETRAITE<3,M>,ENR_HISTORCUMULPERACT<15,I>,1) # 0 THEN 
            IF INDEX(W_RETRAITEGENE<1>,W_TABRETRAITE<1,M>,1) = 0 THEN 
               W_RETRAITEGENE<1,-1> = W_TABRETRAITE<1,M>
               W_RETRAITEGENE<2,-1> = 0
               W_RETRAITEGENE<3,-1> = ENR_HISTORCUMULPERACT<17,I>
               W_RETRAITEGENE<4,-1> = W_TABRETRAITE<4,M>
               IF W_TABRETRAITE<9,M>="03" THEN
                  IF ENR_CONTRAT<82,W_NUMAVENANT>#"" THEN
                     W_RETRAITEGENE<5,-1> = ENR_CONTRAT<82,W_NUMAVENANT>
                  END ELSE
                     W_RETRAITEGENE<5,-1> = W_TABRETRAITE<5,M>
                  END
               END ELSE
                  W_RETRAITEGENE<5,-1> = W_TABRETRAITE<5,M>
               END
               W_RETRAITEGENE<6,-1> = W_TABRETRAITE<6,M>
               W_RETRAITEGENE<7,-1> = 0
               W_RETRAITEGENE<8,-1> = W_TABRETRAITE<8,M>
               W_RETRAITEGENE<9,-1> = W_TABRETRAITE<9,M>
               W_RETRAITEGENE<10,-1> = W_TABRETRAITE<10,M>
               W_RETRAITEGENE<11,-1> = -ENR_HISTORCUMULPERACT<18,I>
               W_RETRAITEGENE<12,-1> = ENR_HISTORCUMULPERACT<19,I>
            END ELSE
               R=1
               LOOP
               UNTIL W_RETRAITEGENE<1,R>=W_TABRETRAITE<1,M> OR W_RETRAITEGENE<1,R>="" DO
                  R=R+1
               REPEAT
               IF W_RETRAITEGENE<1,R>=W_TABRETRAITE<1,M> THEN
                  IF W_RETRAITEGENE<8,R>="C" THEN
                     W_RETRAITEGENE<3,R> = W_RETRAITEGENE<3,R> + ENR_HISTORCUMULPERACT<17,I>
                  END
                  IF W_RETRAITEGENE<3,R>="" OR W_RETRAITEGENE<3,R>=0 THEN W_RETRAITEGENE<3,R> = ENR_HISTORCUMULPERACT<17,I>
                  W_RETRAITEGENE<11,R> = W_RETRAITEGENE<11,R> - ENR_HISTORCUMULPERACT<18,I>
                  W_RETRAITEGENE<12,R> = W_RETRAITEGENE<12,R> + ENR_HISTORCUMULPERACT<19,I>
               END
            END
         END
         * TRANCHE B
         IF INDEX(W_TABRETRAITE<7,M>,ENR_HISTORCUMULPERACT<15,I>,1) # 0 THEN 
            IF INDEX(W_RETRAITEGENE<1>,W_TABRETRAITE<1,M>,1) = 0 THEN 
               W_RETRAITEGENE<1,-1> = W_TABRETRAITE<1,M>
               W_RETRAITEGENE<2,-1> = 0
               W_RETRAITEGENE<3,-1> = 0
               W_RETRAITEGENE<4,-1> = W_TABRETRAITE<4,M>
               IF W_TABRETRAITE<9,M>="03" THEN
                  IF ENR_CONTRAT<82,W_NUMAVENANT>#"" THEN
                     W_RETRAITEGENE<5,-1> = ENR_CONTRAT<82,W_NUMAVENANT>
                  END ELSE
                     W_RETRAITEGENE<5,-1> = W_TABRETRAITE<5,M>
                  END
               END ELSE
                  W_RETRAITEGENE<5,-1> = W_TABRETRAITE<5,M>
               END
               W_RETRAITEGENE<6,-1> = W_TABRETRAITE<6,M>
               W_RETRAITEGENE<7,-1> = ENR_HISTORCUMULPERACT<17,I>
               W_RETRAITEGENE<8,-1> = W_TABRETRAITE<8,M>
               W_RETRAITEGENE<9,-1> = W_TABRETRAITE<9,M>
               W_RETRAITEGENE<10,-1> = W_TABRETRAITE<10,M>
               W_RETRAITEGENE<11,-1> = -ENR_HISTORCUMULPERACT<18,I>
               W_RETRAITEGENE<12,-1> = ENR_HISTORCUMULPERACT<19,I>
            END ELSE
               R=1
               LOOP
               UNTIL W_RETRAITEGENE<1,R>=W_TABRETRAITE<1,M> OR W_RETRAITEGENE<1,R>="" DO
                  R=R+1
               REPEAT
               IF W_RETRAITEGENE<1,R>=W_TABRETRAITE<1,M> THEN
                  IF W_RETRAITEGENE<8,R>="C" THEN
                     W_RETRAITEGENE<7,R> = W_RETRAITEGENE<7,R> + ENR_HISTORCUMULPERACT<17,I>
                  END
                  IF W_RETRAITEGENE<7,R>="" OR W_RETRAITEGENE<7,R>=0 THEN W_RETRAITEGENE<7,R> = ENR_HISTORCUMULPERACT<17,I>
                  W_RETRAITEGENE<11,R> = W_RETRAITEGENE<11,R> - ENR_HISTORCUMULPERACT<18,I>
                  W_RETRAITEGENE<12,R> = W_RETRAITEGENE<12,R> + ENR_HISTORCUMULPERACT<19,I>
               END
            END 
         END
      END	
   NEXT M
   W_NBORG = DCOUNT(W_TABPREVOYANCE<1>,CHAR(253))
   FOR M = 1 TO W_NBORG
      IF W_TABPREVOYANCE<1,M>[4,3] = "000" OR W_TABPREVOYANCE<1,M>[4,3] = W_CODEETABL THEN
         *TRANCHE TOTALITE
         IF INDEX(W_TABPREVOYANCE<2,M>,ENR_HISTORCUMULPERACT<15,I>,1) # 0 THEN 
            IF INDEX(W_PREVOYANCE<1>,W_TABPREVOYANCE<1,M>,1) = 0 THEN
               W_PREVOYANCE<1,-1> = W_TABPREVOYANCE<1,M>
               W_PREVOYANCE<2,-1> = ENR_HISTORCUMULPERACT<17,I>
               W_PREVOYANCE<3,-1> = 0
               W_PREVOYANCE<4,-1> = W_TABPREVOYANCE<4,M>
               W_PREVOYANCE<5,-1> = W_TABPREVOYANCE<5,M>
               W_PREVOYANCE<6,-1> = W_TABPREVOYANCE<6,M>
               W_PREVOYANCE<7,-1> = 0					
               W_PREVOYANCE<8,-1> = W_TABPREVOYANCE<8,M>
               W_PREVOYANCE<9,-1> = W_TABPREVOYANCE<9,M>
               W_PREVOYANCE<10,-1> = W_TABPREVOYANCE<10,M>
               W_PREVOYANCE<11,-1> = -ENR_HISTORCUMULPERACT<18,I>
               W_PREVOYANCE<12,-1> = ENR_HISTORCUMULPERACT<19,I>
               W_PREVOYANCE<13,-1> = W_TABPREVOYANCE<11,M>
* Didier 15/11/2012 : code population rattachement
               IF ENR_CONTRAT<133,W_NUMAVENANT>#"" THEN
                  W_PREVOYANCE<14,-1> = ENR_CONTRAT<133,W_NUMAVENANT>
               END ELSE
                  W_PREVOYANCE<14,-1> = W_TABPREVOYANCE<12,M>
               END
            END ELSE
               R=1
               LOOP
               UNTIL W_PREVOYANCE<1,R>=W_TABPREVOYANCE<1,M> OR W_PREVOYANCE<1,R>="" DO
                  R=R+1
               REPEAT
               IF W_PREVOYANCE<1,R>=W_TABPREVOYANCE<1,M> THEN
                  IF W_PREVOYANCE<2,R>="" OR W_PREVOYANCE<2,R>=0 THEN W_PREVOYANCE<2,R>=ENR_HISTORCUMULPERACT<17,I>
                  W_PREVOYANCE<11,R> = W_PREVOYANCE<11,R> - ENR_HISTORCUMULPERACT<18,I>
                  W_PREVOYANCE<12,R> = W_PREVOYANCE<12,R> + ENR_HISTORCUMULPERACT<19,I>
               END
            END 
         END
         * TRANCHE A
         IF INDEX(W_TABPREVOYANCE<3,M>,ENR_HISTORCUMULPERACT<15,I>,1) # 0 THEN 
            IF INDEX(W_PREVOYANCE<1>,W_TABPREVOYANCE<1,M>,1) = 0 THEN 
               W_PREVOYANCE<1,-1> = W_TABPREVOYANCE<1,M>
               W_PREVOYANCE<2,-1> = 0
               W_PREVOYANCE<3,-1> = ENR_HISTORCUMULPERACT<17,I>
               W_PREVOYANCE<4,-1> = W_TABPREVOYANCE<4,M>
               W_PREVOYANCE<5,-1> = W_TABPREVOYANCE<5,M>
               W_PREVOYANCE<6,-1> = W_TABPREVOYANCE<6,M>
               W_PREVOYANCE<7,-1> = 0
               W_PREVOYANCE<8,-1> = W_TABPREVOYANCE<8,M>
               W_PREVOYANCE<9,-1> = W_TABPREVOYANCE<9,M>
               W_PREVOYANCE<10,-1> = W_TABPREVOYANCE<10,M>
               W_PREVOYANCE<11,-1> = -ENR_HISTORCUMULPERACT<18,I>
               W_PREVOYANCE<12,-1> = ENR_HISTORCUMULPERACT<19,I>
               W_PREVOYANCE<13,-1> = W_TABPREVOYANCE<11,M>
** Didier 15/11/2012 : code population rattachement
               IF ENR_CONTRAT<133,W_NUMAVENANT>#"" THEN
                  W_PREVOYANCE<14,-1> = ENR_CONTRAT<133,W_NUMAVENANT>
               END ELSE
                  W_PREVOYANCE<14,-1> = W_TABPREVOYANCE<12,M>
               END
            END ELSE
               R=1
               LOOP
               UNTIL W_PREVOYANCE<1,R>=W_TABPREVOYANCE<1,M> OR W_PREVOYANCE<1,R>="" DO
                  R=R+1
               REPEAT
               IF W_PREVOYANCE<1,R>=W_TABPREVOYANCE<1,M> THEN
                  IF W_PREVOYANCE<3,R>="" OR W_PREVOYANCE<3,R>=0 THEN W_PREVOYANCE<3,R>=ENR_HISTORCUMULPERACT<17,I>
                  W_PREVOYANCE<11,R> = W_PREVOYANCE<11,R> - ENR_HISTORCUMULPERACT<18,I>
                  W_PREVOYANCE<12,R> = W_PREVOYANCE<12,R> + ENR_HISTORCUMULPERACT<19,I>
               END
            END
         END
         * TRANCHE B
         IF INDEX(W_TABPREVOYANCE<7,M>,ENR_HISTORCUMULPERACT<15,I>,1) # 0 THEN 
            IF INDEX(W_PREVOYANCE<1>,W_TABPREVOYANCE<1,M>,1) = 0 THEN 
               W_PREVOYANCE<1,-1> = W_TABPREVOYANCE<1,M>
               W_PREVOYANCE<2,-1> = 0
               W_PREVOYANCE<3,-1> = 0
               W_PREVOYANCE<4,-1> = W_TABPREVOYANCE<4,M>
               W_PREVOYANCE<5,-1> = W_TABPREVOYANCE<5,M>
               W_PREVOYANCE<6,-1> = W_TABPREVOYANCE<6,M>
               W_PREVOYANCE<7,-1> = ENR_HISTORCUMULPERACT<17,I>
               W_PREVOYANCE<8,-1> = W_TABPREVOYANCE<8,M>
               W_PREVOYANCE<9,-1> = W_TABPREVOYANCE<9,M>
               W_PREVOYANCE<10,-1> = W_TABPREVOYANCE<10,M>
               W_PREVOYANCE<11,-1> = -ENR_HISTORCUMULPERACT<18,I>
               W_PREVOYANCE<12,-1> = ENR_HISTORCUMULPERACT<19,I>
               W_PREVOYANCE<13,-1> = W_TABPREVOYANCE<11,M>
** Didier 15/11/2012 : code population rattachement
               IF ENR_CONTRAT<133,W_NUMAVENANT>#"" THEN
                  W_PREVOYANCE<14,-1> = ENR_CONTRAT<133,W_NUMAVENANT>
               END ELSE
                  W_PREVOYANCE<14,-1> = W_TABPREVOYANCE<12,M>
               END
            END ELSE
               R=1
               LOOP
               UNTIL W_PREVOYANCE<1,R>=W_TABPREVOYANCE<1,M> OR W_PREVOYANCE<1,R>="" DO
                  R=R+1
               REPEAT
               IF W_PREVOYANCE<1,R>=W_TABPREVOYANCE<1,M> THEN
                  IF W_PREVOYANCE<7,R>="" OR W_PREVOYANCE<7,R>=0 THEN W_PREVOYANCE<7,R>=ENR_HISTORCUMULPERACT<17,I>
                  W_PREVOYANCE<11,R> = W_PREVOYANCE<11,R> - ENR_HISTORCUMULPERACT<18,I>
                  W_PREVOYANCE<12,R> = W_PREVOYANCE<12,R> + ENR_HISTORCUMULPERACT<19,I>
               END
            END 
         END
      END	
   NEXT M
   I=I+1
REPEAT
W_NBORG = DCOUNT(W_RETRAITEGENE<1>,CHAR(253))
FOR M = 1 TO W_NBORG
   IF INDEX(W_TABRETRAITERAPPORT<1>,W_RETRAITEGENE<1,M>,1) = 0 THEN
      FOR R=1 TO 12
         W_TABRETRAITERAPPORT<R,-1> = W_RETRAITEGENE<R,M>
      NEXT R
   END ELSE
      R=1
      W_FINRETAIDANT="NON"
      LOOP
         IF W_TABRETRAITERAPPORT<1,R>="" THEN W_FINRETAIDANT="OUI"
      UNTIL W_FINRETAIDANT="OUI" DO 
         IF W_TABRETRAITERAPPORT<1,R>=W_RETRAITEGENE<1,M> AND W_TABRETRAITERAPPORT<4,R>=W_RETRAITEGENE<4,M> AND W_TABRETRAITERAPPORT<5,R>=W_RETRAITEGENE<5,M> THEN
            W_FINRETAIDANT="OUI"
         END ELSE
            R=R+1
         END
      REPEAT
      IF W_TABRETRAITERAPPORT<1,R>=W_RETRAITEGENE<1,M> AND W_TABRETRAITERAPPORT<4,R>=W_RETRAITEGENE<4,M> AND W_TABRETRAITERAPPORT<5,R>=W_RETRAITEGENE<5,M> THEN
         W_TABRETRAITERAPPORT<2,R> = W_TABRETRAITERAPPORT<2,R> + W_RETRAITEGENE<2,M>
         W_TABRETRAITERAPPORT<3,R> = W_TABRETRAITERAPPORT<3,R> + W_RETRAITEGENE<3,M>
         W_TABRETRAITERAPPORT<7,R> = W_TABRETRAITERAPPORT<7,R> + W_RETRAITEGENE<7,M>
         W_TABRETRAITERAPPORT<11,R> = W_TABRETRAITERAPPORT<11,R> + W_RETRAITEGENE<11,M>
         W_TABRETRAITERAPPORT<12,R> = W_TABRETRAITERAPPORT<12,R> + W_RETRAITEGENE<12,M>
      END ELSE
         FOR R=1 TO 12
            W_TABRETRAITERAPPORT<R,-1> = W_RETRAITEGENE<R,M>
         NEXT R
      END
   END
NEXT M
W_NBORG = DCOUNT(W_PREVOYANCE<1>,CHAR(253))
FOR M = 1 TO W_NBORG
   IF INDEX(W_TABPREVOYANCERAPPORT<1>,W_PREVOYANCE<1,M>,1) = 0 THEN
      FOR R=1 TO 12
         W_TABPREVOYANCERAPPORT<R,-1> = W_PREVOYANCE<R,M>
      NEXT R
   END ELSE
      R=1
      W_FINPREVAIDANT="NON"
      LOOP
         IF W_TABPREVOYANCERAPPORT<1,R>="" THEN W_FINPREVAIDANT="OUI"
      UNTIL W_FINPREVAIDANT="OUI" DO 
         IF W_TABPREVOYANCERAPPORT<1,R>=W_PREVOYANCE<1,M> AND W_TABPREVOYANCERAPPORT<4,R>=W_PREVOYANCE<4,M> AND W_TABPREVOYANCERAPPORT<5,R>=W_PREVOYANCE<5,M> THEN
            W_FINPREVAIDANT="OUI"
         END ELSE
            R=R+1
         END
      REPEAT
      IF W_TABPREVOYANCERAPPORT<1,R>=W_PREVOYANCE<1,M> AND W_TABPREVOYANCERAPPORT<4,R>=W_PREVOYANCE<4,M> AND W_TABPREVOYANCERAPPORT<5,R>=W_PREVOYANCE<5,M> THEN
         W_TABPREVOYANCERAPPORT<2,R> = W_TABPREVOYANCERAPPORT<2,R> + W_PREVOYANCE<2,M>
         W_TABPREVOYANCERAPPORT<3,R> = W_TABPREVOYANCERAPPORT<3,R> + W_PREVOYANCE<3,M>
         W_TABPREVOYANCERAPPORT<7,R> = W_TABPREVOYANCERAPPORT<7,R> + W_PREVOYANCE<7,M>
         W_TABPREVOYANCERAPPORT<11,R> = W_TABPREVOYANCERAPPORT<11,R> + W_PREVOYANCE<11,M>
         W_TABPREVOYANCERAPPORT<12,R> = W_TABPREVOYANCERAPPORT<12,R> + W_PREVOYANCE<12,M>
      END ELSE
         FOR R=1 TO 12
            W_TABPREVOYANCERAPPORT<R,-1> = W_PREVOYANCE<R,M>
         NEXT R
      END
   END
NEXT M
* Didier 25/01/2012 : mis en commentaires car point fait au niveau de l'aidant et non par priode d'activit
*IF INT(((W_URSSAFTOT)/100)+1/2) <= INT(((W_URSSAFPLAF)/100)+1/2) THEN
*   IF INT(((W_URSSAFPLAF)/100)+1/2) - INT(((W_URSSAFTOT)/100)+1/2) <= 1 THEN
*      W_URSSAFPLAF = W_URSSAFTOT
*   END
*END
IF W_TYPEURSSAFMSA="M" THEN
   ENR_DADSU<-1> = W_CHAINE:"029.001,'0.00'"
END ELSE
   W_MISENFORME=W_URSSAFTOT "R26"
   ENR_DADSU<-1> = W_CHAINE:"029.001,'":W_MISENFORME:"'"
END
IF W_NaturebaseCotis = "Forfait" THEN
   ENR_DADSU<-1> = W_CHAINE:"029.003,'02'"
END ELSE
   ENR_DADSU<-1> = W_CHAINE:"029.003,'01'"
END
ENR_DADSU<-1> = W_CHAINE:"029.004,'0'"
IF W_TYPEURSSAFMSA#"M" THEN W_TOTALGENETOT = W_TOTALGENETOT + W_URSSAFTOT
IF W_TYPEURSSAFMSA="M" THEN
   ENR_DADSU<-1> = W_CHAINE:"030.001,'0.00'"
END ELSE
   W_MISENFORME=W_URSSAFPLAF "R26"
   ENR_DADSU<-1> = W_CHAINE:"030.001,'":W_MISENFORME:"'"
END
IF W_TYPEURSSAFMSA#"M" THEN W_TOTALGENEPLAF = W_TOTALGENEPLAF + W_URSSAFPLAF
* Didier 25/01/2012 : mis en commentaires car point fait au niveau de l'aidant et non par priode d'activit
*IF W_URSSAFTOT < W_URSSAFPLAF THEN
*   ENR_ERREURDADSU<-1> = W_CODEAIDANT:" | ":W_NOMAIDANT:" | LA BASE S.S PLAF (":W_URSSAFPLAF/100:") EST > A LA BASE S.S TOT (":W_URSSAFTOT/100:")"
*   W_NBERREURDADSU = W_NBERREURDADSU + 1
*END
I=1
W_RETRAITETOT=0
W_RETRAITEPLAF=0
W_CASCNRALIRCANTEC="NON"
LOOP
UNTIL W_RETRAITEGENE<1,I>="" DO
   IF W_RETRAITEGENE<8,I>="I" OR W_RETRAITEGENE<8,I>="C" THEN
      IF W_RETRAITEGENE<2,I>#"" THEN W_CASCNRALIRCANTEC="OUI"
      IF W_RETRAITEGENE<3,I>#"" THEN W_CASCNRALIRCANTEC="OUI"
   END
   IF W_RETRAITEGENE<2,I>#"" THEN W_RETRAITETOT=W_RETRAITETOT+W_RETRAITEGENE<2,I>
   IF W_RETRAITEGENE<3,I>#"" THEN W_RETRAITEPLAF=W_RETRAITEPLAF+W_RETRAITEGENE<3,I>
   I=I+1
REPEAT
* Didier 15/11/2012 : mis en commentaires
*IF W_RETRAITETOT # W_URSSAFTOT AND W_RETRAITETOT # "0" THEN
*   IF INT(W_RETRAITETOT/100) # INT(W_URSSAFTOT/100) AND W_CASCNRALIRCANTEC="NON" THEN	
*      ENR_ERREURDADSU<-1> = W_CODEAIDANT:" | ":W_NOMAIDANT:" | DIFF. ENTRE LA BASE S.S TOT (":W_URSSAFTOT/100:") ET LA BASE RET. TOT (":W_RETRAITETOT/100:")"
*   END
*END
*IF W_RETRAITEPLAF # W_URSSAFPLAF AND W_RETRAITEPLAF # "0" THEN
*   IF INT(W_RETRAITEPLAF/100) # INT(W_URSSAFPLAF/100) AND W_CASCNRALIRCANTEC="NON" THEN
*      ENR_ERREURDADSU<-1> = W_CODEAIDANT:" | ":W_NOMAIDANT:" | DIFF ENTRE LA BASE S.S PLAF (":W_URSSAFPLAF/100:") ET LA BASE RET. PLAF (":W_RETRAITEPLAF/100:")"
*   END
*END
RETURN


**********
* 4028052 -> ASSIETTES DE REMUNERATIONS SECURITE SOCIALE (S40.G28.05) POUR TRAITEMENT AED (TYPE 2)
**********
4028052
W_CHAINE = "S40.G28.05."
W_URSSAFTOT=0
W_URSSAFPLAF=0
W_NaturebaseCotis=""
W_RETRAITEGENE=""
W_BASEASSEDIC=0
W_BASEAGS=0
W_COTISAIDANTASSEDIC=0
W_COTISPATROASSEDIC=0
I=1
LOOP
   W_CODERUBCHARGE=ENR_DETAILCALCUL<8,I>
UNTIL W_CODERUBCHARGE="" DO
   IF INDEX(W_TABURSSAFTOT,W_CODERUBCHARGE,1) # 0 THEN
      IF ENR_DETAILCALCUL<9,I>="" THEN
         W_URSSAFTOT = W_URSSAFTOT + ENR_DETAILCALCUL<12,I>
      END ELSE
         W_URSSAFTOT = W_URSSAFTOT + ENR_DETAILCALCUL<9,I>
      END
      IF INDEX(W_TABURSSAFTOTFORFAIT,W_CODERUBCHARGE,1) # 0 THEN W_NaturebaseCotis = "Forfait"
   END
   IF INDEX(W_TABURSSAFPLAF,W_CODERUBCHARGE,1) # 0 THEN
      IF ENR_DETAILCALCUL<9,I>="" THEN
         W_URSSAFPLAF = W_URSSAFPLAF + ENR_DETAILCALCUL<12,I>
      END ELSE
         W_URSSAFPLAF = W_URSSAFPLAF + ENR_DETAILCALCUL<9,I>
      END
   END
   IF INDEX(ENR_PARAMPOLEEMPLOI<1>,W_CODERUBCHARGE,1) # 0 THEN
      IF ENR_DETAILCALCUL<9,I>="" THEN
         W_BASEASSEDIC = W_BASEASSEDIC + ENR_DETAILCALCUL<12,I>
      END ELSE
         W_BASEASSEDIC = W_BASEASSEDIC + ENR_DETAILCALCUL<9,I>
      END
      W_COTISAIDANTASSEDIC=W_COTISAIDANTASSEDIC-ENR_DETAILCALCUL<11,I>
      W_COTISPATROASSEDIC=W_COTISPATROASSEDIC+ENR_DETAILCALCUL<14,I>
   END
   IF INDEX(ENR_PARAMPOLEEMPLOI<2>,W_CODERUBCHARGE,1) # 0 THEN
      IF ENR_DETAILCALCUL<9,I>="" THEN
         W_BASEAGS = W_BASEAGS + ENR_DETAILCALCUL<12,I>
      END ELSE
         W_BASEAGS = W_BASEAGS + ENR_DETAILCALCUL<9,I>
      END
   END
   IF W_TYPEACT#"M" THEN
      W_NBORG = DCOUNT(W_TABRETRAITE<1>,CHAR(253))
      FOR M = 1 TO W_NBORG
         IF W_TABRETRAITE<1,M>[4,3] = "000" OR W_TABRETRAITE<1,M>[4,3] = W_CODEETABL THEN
            *TRANCHE TOTALITE
            IF INDEX(W_TABRETRAITE<2,M>,ENR_DETAILCALCUL<8,I>,1) # 0 THEN 
               IF INDEX(W_RETRAITEGENE<1>,W_TABRETRAITE<1,M>,1) = 0 THEN
                  W_RETRAITEGENE<1,-1> = W_TABRETRAITE<1,M>
                  IF ENR_DETAILCALCUL<9,I>="" THEN
                     W_RETRAITEGENE<2,-1> = ENR_DETAILCALCUL<12,I>
                  END ELSE	   
                     W_RETRAITEGENE<2,-1> = ENR_DETAILCALCUL<9,I>
                  END
                  W_RETRAITEGENE<3,-1> = 0
                  W_RETRAITEGENE<4,-1> = W_TABRETRAITE<4,M>
                  IF ENR_CONTRAT<82,W_NUMAVENANT>#"" THEN
                     W_RETRAITEGENE<5,-1> = ENR_CONTRAT<82,W_NUMAVENANT>
                  END ELSE
                     W_RETRAITEGENE<5,-1> = W_TABRETRAITE<5,M>
                  END
                  W_RETRAITEGENE<6,-1> = W_TABRETRAITE<6,M>
                  W_RETRAITEGENE<7,-1> = 0					
                  W_RETRAITEGENE<8,-1> = W_TABRETRAITE<8,M>
                  W_RETRAITEGENE<9,-1> = W_TABRETRAITE<9,M>
                  W_RETRAITEGENE<10,-1> = W_TABRETRAITE<10,M>
                  W_RETRAITEGENE<11,-1> = -ENR_DETAILCALCUL<11,I>
                  W_RETRAITEGENE<12,-1> = ENR_DETAILCALCUL<14,I>
               END ELSE
                  R=1
                  LOOP
                  UNTIL W_RETRAITEGENE<1,R>=W_TABRETRAITE<1,M> OR W_RETRAITEGENE<1,R>="" DO
                     R=R+1
                  REPEAT
                  IF W_RETRAITEGENE<1,R>=W_TABRETRAITE<1,M> THEN
                     IF W_RETRAITEGENE<8,R>="C" THEN
                        IF ENR_DETAILCALCUL<9,I>="" THEN
                           W_RETRAITEGENE<2,R> = W_RETRAITEGENE<2,R> + ENR_DETAILCALCUL<12,I>
                        END ELSE	   
                           W_RETRAITEGENE<2,R> = W_RETRAITEGENE<2,R> + ENR_DETAILCALCUL<9,I>
                        END
                     END
                     W_RETRAITEGENE<11,R> = W_RETRAITEGENE<11,R> - ENR_DETAILCALCUL<11,I>
                     W_RETRAITEGENE<12,R> = W_RETRAITEGENE<12,R> + ENR_DETAILCALCUL<14,I>
                  END
               END 
            END
            * TRANCHE A
            IF INDEX(W_TABRETRAITE<3,M>,ENR_DETAILCALCUL<8,I>,1) # 0 THEN 
               IF INDEX(W_RETRAITEGENE<1>,W_TABRETRAITE<1,M>,1) = 0 THEN 
                  W_RETRAITEGENE<1,-1> = W_TABRETRAITE<1,M>
                  W_RETRAITEGENE<2,-1> = 0
                  IF ENR_DETAILCALCUL<9,I>="" THEN
                     W_RETRAITEGENE<3,-1> = ENR_DETAILCALCUL<12,I>
                  END ELSE	   
                    W_RETRAITEGENE<3,-1> = ENR_DETAILCALCUL<9,I>
                  END
                  W_RETRAITEGENE<4,-1> = W_TABRETRAITE<4,M>
                  IF ENR_CONTRAT<82,W_NUMAVENANT>#"" THEN
                     W_RETRAITEGENE<5,-1> = ENR_CONTRAT<82,W_NUMAVENANT>
                  END ELSE
                     W_RETRAITEGENE<5,-1> = W_TABRETRAITE<5,M>
                  END
                  W_RETRAITEGENE<6,-1> = W_TABRETRAITE<6,M>
                  W_RETRAITEGENE<7,-1> = 0
                  W_RETRAITEGENE<8,-1> = W_TABRETRAITE<8,M>
                  W_RETRAITEGENE<9,-1> = W_TABRETRAITE<9,M>
                  W_RETRAITEGENE<10,-1> = W_TABRETRAITE<10,M>
                  W_RETRAITEGENE<11,-1> = -ENR_DETAILCALCUL<11,I>
                  W_RETRAITEGENE<12,-1> = ENR_DETAILCALCUL<14,I>
               END ELSE
                  R=1
                  LOOP
                  UNTIL W_RETRAITEGENE<1,R>=W_TABRETRAITE<1,M> OR W_RETRAITEGENE<1,R>="" DO
                     R=R+1
                  REPEAT
                  IF W_RETRAITEGENE<1,R>=W_TABRETRAITE<1,M> THEN
                     IF W_RETRAITEGENE<8,R>="C" THEN
                        IF ENR_DETAILCALCUL<9,I>="" THEN
                           W_RETRAITEGENE<3,R> = W_RETRAITEGENE<3,R> + ENR_DETAILCALCUL<12,I>
                        END ELSE	   
                           W_RETRAITEGENE<3,R> = W_RETRAITEGENE<3,R> + ENR_DETAILCALCUL<9,I>
                        END
                     END
                     W_RETRAITEGENE<11,R> = W_RETRAITEGENE<11,R> - ENR_DETAILCALCUL<11,I>
                     W_RETRAITEGENE<12,R> = W_RETRAITEGENE<12,R> + ENR_DETAILCALCUL<14,I>
                  END
               END
            END
            * TRANCHE B
            IF INDEX(W_TABRETRAITE<7,M>,ENR_DETAILCALCUL<8,I>,1) # 0 THEN 
               IF INDEX(W_RETRAITEGENE<1>,W_TABRETRAITE<1,M>,1) = 0 THEN 
                  W_RETRAITEGENE<1,-1> = W_TABRETRAITE<1,M>
                  W_RETRAITEGENE<2,-1> = 0
                  W_RETRAITEGENE<3,-1> = 0
                  W_RETRAITEGENE<4,-1> = W_TABRETRAITE<4,M>
                  IF ENR_CONTRAT<82,W_NUMAVENANT>#"" THEN
                     W_RETRAITEGENE<5,-1> = ENR_CONTRAT<82,W_NUMAVENANT>
                  END ELSE
                     W_RETRAITEGENE<5,-1> = W_TABRETRAITE<5,M>
                  END
                  W_RETRAITEGENE<6,-1> = W_TABRETRAITE<6,M>
                  IF ENR_DETAILCALCUL<9,I>="" THEN
                     W_RETRAITEGENE<7,-1> = ENR_DETAILCALCUL<12,I>
                  END ELSE	   
                     W_RETRAITEGENE<7,-1> = ENR_DETAILCALCUL<9,I>
                  END
                  W_RETRAITEGENE<8,-1> = W_TABRETRAITE<8,M>
                  W_RETRAITEGENE<9,-1> = W_TABRETRAITE<9,M>
                  W_RETRAITEGENE<10,-1> = W_TABRETRAITE<10,M>
                  W_RETRAITEGENE<11,-1> = -ENR_DETAILCALCUL<11,I>
                  W_RETRAITEGENE<12,-1> = ENR_DETAILCALCUL<14,I>
               END ELSE
                  R=1
                  LOOP
                  UNTIL W_RETRAITEGENE<1,R>=W_TABRETRAITE<1,M> OR W_RETRAITEGENE<1,R>="" DO
                     R=R+1
                  REPEAT
                  IF W_RETRAITEGENE<1,R>=W_TABRETRAITE<1,M> THEN
                     IF W_RETRAITEGENE<8,R>="C" THEN
                        IF ENR_DETAILCALCUL<9,I>="" THEN
                           W_RETRAITEGENE<7,R> = W_RETRAITEGENE<7,R> + ENR_DETAILCALCUL<12,I>
                        END ELSE	   
                           W_RETRAITEGENE<7,R> = W_RETRAITEGENE<7,R> + ENR_DETAILCALCUL<9,I>
                        END
                     END
                     W_RETRAITEGENE<11,R> = W_RETRAITEGENE<11,R> - ENR_DETAILCALCUL<11,I>
                     W_RETRAITEGENE<12,R> = W_RETRAITEGENE<12,R> + ENR_DETAILCALCUL<14,I>
                  END
               END 
            END
         END	
      NEXT M
   END
   I=I+1
REPEAT
W_MISENFORME=W_URSSAFTOT "R26"
ENR_DADSU<-1> = W_CHAINE:"029.001,'":W_MISENFORME:"'"
IF W_NaturebaseCotis = "Forfait" THEN
   ENR_DADSU<-1> = W_CHAINE:"029.003,'02'"
END ELSE
   ENR_DADSU<-1> = W_CHAINE:"029.003,'01'"
END
ENR_DADSU<-1> = W_CHAINE:"029.004,'0'"
W_MISENFORME=W_URSSAFPLAF "R26"
ENR_DADSU<-1> = W_CHAINE:"030.001,'":W_MISENFORME:"'"
* Didier 25/01/2012 : mis en commentaires car point fait au niveau de l'aidant et non par priode d'activit
*IF INT(((W_URSSAFTOT)/100)+1/2) < INT(((W_URSSAFPLAF)/100)+1/2) THEN
*   IF INT(((W_URSSAFPLAF)/100)+1/2) - INT(((W_URSSAFTOT)/100)+1/2) <= 1 THEN
*      W_URSSAFPLAF = W_URSSAFTOT
*   END
*END
RETURN


**********
* 402810 -> PRIMES VERSEES AUX SALARIES SOUS CONTRAT DE DROIT PRIVE (S40.G28.10)
**********
402810
W_CHAINE = "S40.G28.10."
I=1
LOOP
UNTIL ENR_DETAILCALCUL<2,I>="" DO
   IF INDEX(ENR_PARAMPOLEEMPLOI<3>,ENR_DETAILCALCUL<2,I>,1) # 0 THEN
* Didier 07/01/2013 : remplacer code 01 par 03
*      ENR_DADSU<-1> = W_CHAINE:"001,'01'"
      ENR_DADSU<-1> = W_CHAINE:"001,'03'"
      W_MONTANTPRIMES=W_MONTANTPRIMES+ENR_DETAILCALCUL<5,I>
      W_MISENFORME=ENR_DETAILCALCUL<5,I> "R26"
      ENR_DADSU<-1> = W_CHAINE:"002,'":W_MISENFORME:"'"
   END
   I=I+1
REPEAT
RETURN


**********
* 402815 -> INDEMNITES VERSEES EN FIN DE CONTRAT DE TRAVAIL (S40.G28.15)
**********
402815
W_CHAINE = "S40.G28.15."
IF W_TYPETRAIT="1" THEN
   IF W_MOTIFFINACTIVITE="136" THEN
      IF ENR_HISTORCUMULPERACT<29>#"" AND ENR_HISTORCUMULPERACT<29>#0 THEN
         ENR_DADSU<-1> = W_CHAINE:"001,'003'"
         W_MISENFORME=ENR_HISTORCUMULPERACT<29> "R26"
         ENR_DADSU<-1> = W_CHAINE:"002,'":W_MISENFORME:"'"
      END
   END
   IF W_MOTIFFINACTIVITE="138" THEN
      IF ENR_HISTORCUMULPERACT<30>#"" AND ENR_HISTORCUMULPERACT<30>#0 THEN
         ENR_DADSU<-1> = W_CHAINE:"001,'102'"
         W_MISENFORME=ENR_HISTORCUMULPERACT<30> "R26"
         ENR_DADSU<-1> = W_CHAINE:"002,'":W_MISENFORME:"'"
      END
   END
   IF W_MOTIFFINACTIVITE="134" THEN
      IF ENR_HISTORCUMULPERACT<29>#"" AND ENR_HISTORCUMULPERACT<29>#0 THEN
         ENR_DADSU<-1> = W_CHAINE:"001,'104'"
         W_MISENFORME=ENR_HISTORCUMULPERACT<29> "R26"
         ENR_DADSU<-1> = W_CHAINE:"002,'":W_MISENFORME:"'"
      END
   END
   IF W_MOTIFFINACTIVITE="012" THEN
      IF ENR_HISTORCUMULPERACT<28>#"" AND ENR_HISTORCUMULPERACT<28>#0 THEN
         ENR_DADSU<-1> = W_CHAINE:"001,'201'"
         W_MISENFORME=ENR_HISTORCUMULPERACT<28> "R26"
         ENR_DADSU<-1> = W_CHAINE:"002,'":W_MISENFORME:"'"
      END
   END
END ELSE
   W_NBJOURSCPRESTANT=0
   W_TAUXHORAIREAIDANT=0
   W_MONTANT201=0
   W_MONTANT003=0
   W_MONTANT102=0
   W_MONTANT104=0
   W_MONTANT205=0
   W_MONTANT215=0
   W_MONTANT218=0
   I=1
   LOOP
   *Modification 29/05/2012 suite appel angers assadom ticket 824
   *UNTIL ENR_DETAILCALCUL<17,I>="" OR ENR_DETAILCALCUL<17,I>=ENR_PARAMPOLEEMPLOI<4> DO
   UNTIL ENR_DETAILCALCUL<17,I>="" DO
   *Fin modification
      IF ENR_DETAILCALCUL<17,I>=ENR_PARAMPOLEEMPLOI<4> THEN W_MONTANT003=W_MONTANT003+ENR_DETAILCALCUL<20,I>
      IF ENR_DETAILCALCUL<17,I>="800" THEN W_MONTANT201=W_MONTANT201+ENR_DETAILCALCUL<20,I>
      I=I+1
   REPEAT
   IF W_MONTANT003#0 THEN
      ENR_DADSU<-1> = W_CHAINE:"001,'003'"
      W_MISENFORME=W_MONTANT003 "R26"
      ENR_DADSU<-1> = W_CHAINE:"002,'":W_MISENFORME:"'"
   END
   IF W_MONTANT201#0 THEN
      ENR_DADSU<-1> = W_CHAINE:"001,'201'"
      W_MISENFORME=W_MONTANT201 "R26"
      ENR_DADSU<-1> = W_CHAINE:"002,'":W_MISENFORME:"'"
   END
   I=1
   LOOP
   UNTIL ENR_DETAILCALCUL<2,I>="" DO
      IF ENR_DETAILCALCUL<2,I>="801" THEN
         IF W_MOTIFFINACTIVITE="138" THEN
            W_MONTANT102=W_MONTANT102+ENR_DETAILCALCUL<5,I>
         END ELSE
            W_MONTANT104=W_MONTANT104+ENR_DETAILCALCUL<5,I>
         END
         W_MONTANTPRIMES=W_MONTANTPRIMES+ENR_DETAILCALCUL<5,I>
      END
      IF ENR_DETAILCALCUL<2,I>="809" THEN
         W_MONTANT205=W_MONTANT205+ENR_DETAILCALCUL<5,I>
         W_MONTANTPRIMES=W_MONTANTPRIMES+ENR_DETAILCALCUL<5,I>
      END
      IF ENR_DETAILCALCUL<2,I>="804" THEN
         W_MONTANT215=W_MONTANT215+ENR_DETAILCALCUL<5,I>
         W_TAUXHORAIREAIDANT=ENR_DETAILCALCUL<4,I>/10
         W_MONTANTPRIMES=W_MONTANTPRIMES+ENR_DETAILCALCUL<5,I>
      END
* Didier 14/03/2013 - DA13010
*      IF ENR_DETAILCALCUL<2,I>="820" THEN
*         W_MONTANT218=W_MONTANT218+ENR_DETAILCALCUL<5,I>
*         W_MONTANTPRIMES=W_MONTANTPRIMES+ENR_DETAILCALCUL<5,I>
*      END ELSE
         IF INDEX(ENR_REGRUBSAISIE<1>,ENR_DETAILCALCUL<2,I>,1) # 0 THEN
            W_MONTANT218=W_MONTANT218+ENR_DETAILCALCUL<5,I>
            W_MONTANTPRIMES=W_MONTANTPRIMES+ENR_DETAILCALCUL<5,I>
         END
*      END
 * Didier 26/01/2012 : mis en commentaires
 *     IF ENR_CONTRAT<31>="1" AND ENR_DETAILCALCUL<2,I>="802" THEN
 *        W_MONTANTCPAUMOIS=W_MONTANTCPAUMOIS+ENR_DETAILCALCUL<5,I>
 *     END
      I=I+1
   REPEAT
   IF W_MONTANT102#0 THEN
      ENR_DADSU<-1> = W_CHAINE:"001,'102'"
      W_MISENFORME=W_MONTANT102 "R26"
      ENR_DADSU<-1> = W_CHAINE:"002,'":W_MISENFORME:"'"
   END
   IF W_MONTANT104#0 THEN
      ENR_DADSU<-1> = W_CHAINE:"001,'104'"
      W_MISENFORME=W_MONTANT104 "R26"
      ENR_DADSU<-1> = W_CHAINE:"002,'":W_MISENFORME:"'"
   END
   IF W_MONTANT205#0 THEN
      ENR_DADSU<-1> = W_CHAINE:"001,'205'"
      W_MISENFORME=W_MONTANT205 "R26"
      ENR_DADSU<-1> = W_CHAINE:"002,'":W_MISENFORME:"'"
   END
   IF W_MONTANT215#0 THEN
      ENR_DADSU<-1> = W_CHAINE:"001,'215'"
      W_MISENFORME=W_MONTANT215 "R26"
      ENR_DADSU<-1> = W_CHAINE:"002,'":W_MISENFORME:"'"
      IF ENR_CONTRAT<42> # 0 AND ENR_CONTRAT<42> # "" THEN
         W_NBJOURSCPRESTANT = INT(W_MONTANT215 * 100 / ENR_CONTRAT<43> + 1/2)
      END ELSE
* Didier 22/02/2012 : calcul  partir valeur d'une journe ouvrable du contrat
         I=DCOUNT(EXTRACT(ENR_CONTRAT,15),CHAR(253))
         TauxHorContrat=ENR_CONTRAT<23,I>
         IF W_TAUXHORAIREAIDANT=0 THEN W_TAUXHORAIREAIDANT=TauxHorContrat
         DureeWContrat=ENR_CONTRAT<24,I>
         FreqWContrat=ENR_CONTRAT<25,I>
         BEGIN CASE
            CASE FreqWContrat=1 ;* hebdomadaire
               W_HEURESMENS=INT(DureeWContrat*52/12+1/2)
            CASE FreqWContrat=2 ;* quatorzaine
               W_HEURESMENS=INT(DureeWContrat*26/12+1/2)
            CASE FreqWContrat=3 ;* mensuelle
               W_HEURESMENS=DureeWContrat
            CASE FreqWContrat=4 ;* annuelle
               W_HEURESMENS=INT(DureeWContrat/12+1/2)
         END CASE
         W_VALEURUNJOURCP = INT(W_HEURESMENS * 12 / 312 + 1/2)
         W_VALEURUNJOURCP = INT(W_VALEURUNJOURCP * W_TAUXHORAIREAIDANT/ 1000 + 1/2)
         IF W_VALEURUNJOURCP=0 THEN
            W_NBJOURSCPRESTANT="100"
         END ELSE
            W_NBJOURSCPRESTANT = INT(W_MONTANT215 * 100 / W_VALEURUNJOURCP + 1/2)
         END
*         IF ENR_CONTRAT<44> # "" AND INT(ENR_CONTRAT<44>) # 0 THEN
*            IF ENR_CONVENTIONCOL<2> = 2 THEN
*               W_NBJOURSCPRESTANT = ENR_CONTRAT<44>
*            END ELSE
*               W_NBJOURSCPRESTANT = INT((ENR_CONTRAT<44> * 5 / 6) + 1/2)
*            END
*         END ELSE
*            W_NBJOURSTRAVAIL = W_DATEFINACTIVITEINT - W_DATEDEBACTIVITEINT + 1
*            W_NBJOURSCPRESTANT = INT((W_NBJOURSTRAVAIL * 100 / 30) * 2.5  + 1/2)
*            IF W_NBJOURSCPRESTANT>250 THEN W_NBJOURSCPRESTANT=250
*         END
      END
      W_LONG=LEN(W_NBJOURSCPRESTANT)
      IF W_LONG<2 THEN
         W_NBJOURSCPRESTANT="50"
      END ELSE
         IF W_NBJOURSCPRESTANT[W_LONG-1,2]=0 THEN
            NULL
         END ELSE
            IF W_NBJOURSCPRESTANT[W_LONG-1,2]>50 THEN
               W_NBJOURSCPRESTANT = INT((W_NBJOURSCPRESTANT + 99) / 100) * 100
            END ELSE
               W_NBJOURSCPRESTANT = INT(W_NBJOURSCPRESTANT / 100) * 100
               W_NBJOURSCPRESTANT = W_NBJOURSCPRESTANT + 50
            END
         END
      END
   END
* Didier 14/03/2013 - DA13010
   IF ENR_CONTRAT<53>#"" THEN
      IF W_MONTANT218#0 THEN
         ENR_DADSU<-1> = W_CHAINE:"001,'218'"
         W_MISENFORME=W_MONTANT218 "R26"
         ENR_DADSU<-1> = W_CHAINE:"002,'":W_MISENFORME:"'"
      END
   END
END
RETURN


**********
* 402820 -> INDEMNITES ET PRIMES VERSEES AUX AGENTS SOUS STATUT PUBLIC (S40.G28.20)
**********
402820
W_CHAINE = "S40.G28.20."
I=1
LOOP
UNTIL ENR_DETAILCALCUL<2,I>="" DO
   IF INDEX(ENR_TDSPARAMCNRACL<1>,ENR_DETAILCALCUL<2,I>,1) # 0 THEN
      ENR_DADSU<-1> = W_CHAINE:"001,'102'"
      W_MISENFORME=ENR_DETAILCALCUL<5,I> "R26"
      ENR_DADSU<-1> = W_CHAINE:"002,'":W_MISENFORME:"'"
   END
   I=I+1
REPEAT

RETURN


**********
* 403004 -> CSG (S40.G30.04)
**********
403004
W_CHAINE = "S40.G30.04."
* Didier 15/11/2012 : gestion pargne salariale
W_MONTIMPOSEPARGNESAL=0
* Didier 12/11/2013 : gestion chques vacances
W_MONTCHQVACANCES=0
READ ENR_TDSEPARGNESAL FROM F.TDSEPARGNESAL,W_ANNEE:W_CODEENTITE:W_CODEAIDANT ELSE ENR_TDSEPARGNESAL=""
IF ENR_TDSEPARGNESAL<4>="1" THEN
   NULL
END ELSE
   IF ENR_TDSEPARGNESAL<2>#"" THEN W_CSG = W_CSG + ENR_TDSEPARGNESAL<2>
   IF ENR_TDSEPARGNESAL<3>#"" THEN W_MONTIMPOSEPARGNESAL=ENR_TDSEPARGNESAL<3>
* Didier 12/11/2013 : gestion chques vacances
   IF ENR_TDSEPARGNESAL<1>="99" THEN
      W_MONTCHQVACANCES=ENR_TDSEPARGNESAL<2>
      ENR_TDSEPARGNESAL<4>="1"
      WRITE ENR_TDSEPARGNESAL ON F.TDSEPARGNESAL,W_ANNEE:W_CODEENTITE:W_CODEAIDANT
   END
END
W_MISENFORME=W_CSG "R26"
ENR_DADSU<-1> = W_CHAINE:"001,'":W_MISENFORME:"'"
ENR_DADSU<-1> = W_CHAINE:"002,'0.00'"
W_TOTALGENECSG = W_TOTALGENECSG + W_CSG
RETURN


**********
* 403006 -> BASES SPECIFIQUES EXONERATIONS DE COTISATIONS URSSAF (S40.G30.06)
**********
403006
IF W_TYPEURSSAFMSA="M" THEN RETURN
W_CHAINE = "S40.G30.06."
W_TABCASPARTICULIERSBIS=W_TABCASPARTICULIERS
I=1
LOOP
UNTIL W_TABCASPARTICULIERSBIS<1,I>="" DO
   J=I+1
   LOOP
   UNTIL W_TABCASPARTICULIERSBIS<1,J>=W_TABCASPARTICULIERSBIS<1,I> OR W_TABCASPARTICULIERSBIS<1,J>="" DO
      J=J+1
   REPEAT
   IF W_TABCASPARTICULIERSBIS<1,J>=W_TABCASPARTICULIERSBIS<1,I> THEN
      W_TABCASPARTICULIERSBIS<5,I>=W_TABCASPARTICULIERSBIS<5,I>+W_TABCASPARTICULIERSBIS<5,J>
      W_TABCASPARTICULIERSBIS<6,I>=W_TABCASPARTICULIERSBIS<6,I>+W_TABCASPARTICULIERSBIS<6,J>
      W_TABCASPARTICULIERSBIS<7,I>=W_TABCASPARTICULIERSBIS<7,I>+W_TABCASPARTICULIERSBIS<7,J>
      FOR K=1 TO 7
         W_TABCASPARTICULIERSBIS=DELETE(W_TABCASPARTICULIERSBIS,K,J)
      NEXT K
      I=I-1
   END
   I=I+1
REPEAT
* Didier 15/11/2012 : ne pas gnrer structure pour fonctionnaire code population 40
IF W_CODEPOPULATION#"40" THEN
   I=1
   LOOP
   UNTIL W_TABCASPARTICULIERSBIS<1,I>="" DO
      IF W_TABCASPARTICULIERSBIS<5,I>#0 OR W_TABCASPARTICULIERSBIS<6,I>#0 THEN
         ENR_DADSU<-1> = W_CHAINE:"001,'":W_TABCASPARTICULIERSBIS<1,I>:"'"
         W_MISENFORME=W_TABCASPARTICULIERSBIS<5,I> "R26"
         ENR_DADSU<-1> = W_CHAINE:"002.001,'":W_MISENFORME:"'"
         W_MISENFORME=W_TABCASPARTICULIERSBIS<6,I> "R26"
         ENR_DADSU<-1> = W_CHAINE:"003.001,'":W_MISENFORME:"'"
         W_MISENFORME=W_TABCASPARTICULIERSBIS<7,I> "R26"
         ENR_DADSU<-1> = W_CHAINE:"004,'":W_MISENFORME:"'"
      END
      I=I+1
   REPEAT
END
RETURN


**********
* 403010 -> EPARGNE SALARIALE (S40.G30.10)
**********
403010
W_CHAINE = "S40.G30.10."
READ ENR_TDSEPARGNESAL FROM F.TDSEPARGNESAL,W_ANNEE:W_CODEENTITE:W_CODEAIDANT ELSE ENR_TDSEPARGNESAL=""
IF ENR_TDSEPARGNESAL="" THEN RETURN
IF ENR_TDSEPARGNESAL<4>="1" THEN RETURN
* Didier 12/11/2013 : gestion chques vacances
IF ENR_TDSEPARGNESAL<1>="99" THEN RETURN
ENR_DADSU<-1> = W_CHAINE:"001,'":ENR_TDSEPARGNESAL<1>:"'"
W_MISENFORME=ENR_TDSEPARGNESAL<2> "R26"
ENR_DADSU<-1> = W_CHAINE:"002.001,'":W_MISENFORME:"'"
ENR_TDSEPARGNESAL<4>="1"
WRITE ENR_TDSEPARGNESAL ON F.TDSEPARGNESAL,W_ANNEE:W_CODEENTITE:W_CODEAIDANT
RETURN


**********
* 403035 -> ALLEGEMENTS LOI DU 21 AOUT 2007 (S40.G30.35)
**********
403035
W_CHAINE = "S40.G30.35."
IF W_REDUCCOTISSAL908#0 OR W_DEDUCCOTISPAT909#0 THEN
   W_MISENFORME=W_REDUCCOTISSAL908 "R26"
   ENR_DADSU<-1> = W_CHAINE:"004.001,'":W_MISENFORME:"'"
   W_MISENFORME=W_DEDUCCOTISPAT909 "R26"
   ENR_DADSU<-1> = W_CHAINE:"005.001,'":W_MISENFORME:"'"
END
RETURN


**********
* 403036 -> ALLEGEMENTS LOI DU 21 AOUT 2007, REMUNERATIONS EXONEREES (S40.G30.36)
**********
403036
W_CHAINE = "S40.G30.36."
IF ENR_HISTORCUMULPERACT<26>#0 AND ENR_HISTORCUMULPERACT<26>#"" THEN
   W_MONTSUPPLCOMPL=W_MONTSUPPLCOMPL+ENR_HISTORCUMULPERACT<27>
   ENR_DADSU<-1> = W_CHAINE:"001,'02'"
   W_MISENFORME=ENR_HISTORCUMULPERACT<27> "R26"
   ENR_DADSU<-1> = W_CHAINE:"002.001,'":W_MISENFORME:"'"
   W_MISENFORME=ENR_HISTORCUMULPERACT<26> "R26"
   ENR_DADSU<-1> = W_CHAINE:"003,'":W_MISENFORME:"'"
END		
IF ENR_HISTORCUMULPERACT<24>#0 AND ENR_HISTORCUMULPERACT<24>#"" THEN
   W_MONTSUPPLCOMPL=W_MONTSUPPLCOMPL+ENR_HISTORCUMULPERACT<25>
   ENR_DADSU<-1> = W_CHAINE:"001,'01'"
   W_MISENFORME=ENR_HISTORCUMULPERACT<25> "R26"
   ENR_DADSU<-1> = W_CHAINE:"002.001,'":W_MISENFORME:"'"
   W_MISENFORME=ENR_HISTORCUMULPERACT<24> "R26"
   ENR_DADSU<-1> = W_CHAINE:"003,'":W_MISENFORME:"'"
END		
RETURN


**********
* 403040 -> ANNUALISATION DE LA REDUCTION FILLON (S40.G30.40)
* Didier 12/11/2013 : en remplacement de la structure S65.G30.40
**********
403040
IF W_TYPEURSSAFMSA="M" THEN RETURN
W_CHAINE = "S40.G30.40."
IF W_MONTREDUCFILLON#0 THEN
   W_MISENFORME=W_BASESMICREDUCFILLON "R26"
   ENR_DADSU<-1> = W_CHAINE:"001,'":W_MISENFORME:"'"
   W_MISENFORME=W_BASEREDUCFILLON "R26"
   ENR_DADSU<-1> = W_CHAINE:"002,'":W_MISENFORME:"'"
   W_MISENFORME=W_MONTREDUCFILLON "R26"
   ENR_DADSU<-1> = W_CHAINE:"003,'":W_MISENFORME:"'"
   W_TOTREDUCFILLON=W_TOTREDUCFILLON+W_MONTREDUCFILLON
   ENR_DADSU<-1> = W_CHAINE:"004,'0.00'"
END
RETURN


**********
* 404000 -> DONNES FISCALES (S40.G40.00)
**********
404000
W_CHAINE = "S40.G40.00."
W_MISENFORME=ENR_HISTORCUMULPERACT<5> "R26"
ENR_DADSU<-1> = W_CHAINE:"035.001,'":W_MISENFORME:"'"
* Didier 12/11/2013 : gestion chques vacances
IF W_MONTCHQVACANCES#0 THEN
   W_MISENFORME=W_MONTCHQVACANCES "R26"
   ENR_DADSU<-1> = W_CHAINE:"049.001,'":W_MISENFORME:"'"
END
W_TOTALGENEBRUTE = W_TOTALGENEBRUTE + ENR_HISTORCUMULPERACT<5>
W_TAXETR1=0
W_TAXETR2=0
IF W_TAXETOT # 0 THEN
   IF W_TAXETOT > W_PLAFONDTAXETR1 THEN
      W_TAXETR1 = W_PLAFONDTAXETR1 - W_PLANCHERTAXETR1
      W_TAXETR2 = W_TAXETOT - W_PLAFONDTAXETR1
   END ELSE
      IF W_TAXETOT > W_PLANCHERTAXETR1 THEN	
         W_TAXETR1 = W_TAXETOT - W_PLANCHERTAXETR1
         W_TAXETR2 = 0
      END
   END
   IF W_EMPLOISMULTIPLES="OUI" THEN	ENR_DADSU<-1> = W_CHAINE:"054,'A00000'"
   W_MISENFORME=W_TAXETOT "R26"
   ENR_DADSU<-1> = W_CHAINE:"055.001,'":W_MISENFORME:"'"
   W_MISENFORME=W_TAXETR1 "R26"
   IF W_TAXETR1 # 0 THEN ENR_DADSU<-1> = W_CHAINE:"056.001,'":W_MISENFORME:"'"
   W_MISENFORME=W_TAXETR2 "R26"
   IF W_TAXETR2 # 0 THEN ENR_DADSU<-1> = W_CHAINE:"057.001,'":W_MISENFORME:"'"
   W_MONTTAXESALTOT=INT((W_TAXETOT*W_TAUXTAXETOT/100000)+1/2)
   W_MONTTAXESALTR1=INT((W_TAXETR1*W_TAUXTAXETR1/100000)+1/2)
   W_MONTTAXESALTR2=INT((W_TAXETR2*W_TAUXTAXETR2/100000)+1/2)
   W_MONTANTTAXETOT=W_MONTANTTAXETOT+W_MONTTAXESALTOT
   W_MONTANTTAXETR1=W_MONTANTTAXETR1+W_MONTTAXESALTR1
   W_MONTANTTAXETR2=W_MONTANTTAXETR2+W_MONTTAXESALTR2
   W_MONTANTTAXESAL=W_MONTTAXESALTOT+W_MONTTAXESALTR1+W_MONTTAXESALTR2
   W_MISENFORME=W_MONTANTTAXESAL "R26"
   ENR_DADSU<-1> = W_CHAINE:"058.001,'":W_MISENFORME:"'"
   W_TOTALGENETAXE = W_TOTALGENETAXE + W_TAXETOT
   W_TOTALGENETAXE1 = W_TOTALGENETAXE1 + W_TAXETR1
   W_TOTALGENETAXE2 = W_TOTALGENETAXE2 + W_TAXETR2
END
* Didier 15/11/2012 : gestion pargne salariale
IF ENR_HISTORCUMULPERACT<6> - ENR_HISTORCUMULPERACT<20> + W_MONTIMPOSEPARGNESAL >= 0 THEN
   W_MISENFORME=(ENR_HISTORCUMULPERACT<6> - ENR_HISTORCUMULPERACT<20> + W_MONTIMPOSEPARGNESAL) "R26"
   ENR_DADSU<-1> = W_CHAINE:"063.001,'":W_MISENFORME:"'"
END ELSE
   ENR_DADSU<-1> = W_CHAINE:"063.001,'0.00'"
END
IF ENR_HISTORCUMULPERACT<24>+ENR_HISTORCUMULPERACT<26> # 0 THEN
   W_MISENFORME=(ENR_HISTORCUMULPERACT<25>+ENR_HISTORCUMULPERACT<27>) "R26"
   ENR_DADSU<-1> = W_CHAINE:"073.001,'":W_MISENFORME:"'"
END
W_TOTALGENENET = W_TOTALGENENET + ENR_HISTORCUMULPERACT<6> - ENR_HISTORCUMULPERACT<20> + W_MONTIMPOSEPARGNESAL
RETURN


**********
* 404005 -> AVANTAGE EN NATURE (S40.G40.05)
**********
404005
W_CHAINE = "S40.G40.05."
W_TABATT9 = ""
IF ENR_HISTORCUMULPERACT<8> # "" AND ENR_HISTORCUMULPERACT<8> # "0" THEN
   W_NBMVATT9 =  DCOUNT(ENR_HISTORCUMULPERACT<9>,CHAR(253))
   FOR I = 1 TO W_NBMVATT9			
      IF ENR_HISTORCUMULPERACT<9,I> = "N" THEN W_TABATT9<1> = "01"
      IF ENR_HISTORCUMULPERACT<9,I> = "L" THEN W_TABATT9<2> = "02"
      IF ENR_HISTORCUMULPERACT<9,I> = "V" THEN W_TABATT9<3> = "03"
      IF ENR_HISTORCUMULPERACT<9,I> = "A" THEN W_TABATT9<4> = "09"
   NEXT I
   IF W_TABATT9 # "" THEN
      IF W_TABATT9<1> # "" THEN ENR_DADSU<-1> = W_CHAINE:"036,'":W_TABATT9<1>:"'"
      IF W_TABATT9<2> # "" THEN ENR_DADSU<-1> = W_CHAINE:"036,'":W_TABATT9<2>:"'"
      IF W_TABATT9<3> # "" THEN ENR_DADSU<-1> = W_CHAINE:"036,'":W_TABATT9<3>:"'"
      IF W_TABATT9<4> # "" THEN ENR_DADSU<-1> = W_CHAINE:"036,'":W_TABATT9<4>:"'"
   END
   W_MISENFORME=ENR_HISTORCUMULPERACT<8> "R26"
   ENR_DADSU<-1> = W_CHAINE:"037.001,'":W_MISENFORME:"'"
END
RETURN


**********
* 404010 -> FRAIS PROFESSIONNELS (S40.G40.10)
**********
404010
W_CHAINE = "S40.G40.10."
READ ENR_TDSFRAISPROFESSIONNELS FROM F.TDSFRAISPROFESSIONNELS,W_ANNEE:W_CODEENTITE:W_CODEAIDANT ELSE ENR_TDSFRAISPROFESSIONNELS=""
W_TABATT22 = ""
W_MONTFRAISPROF=0
W_MONTFRAISPROF1=0
W_MONTFRAISPROF2=0
IF ENR_HISTORCUMULPERACT<10> # "" THEN
   W_MONTFRAISPROF1=ENR_HISTORCUMULPERACT<10>
   IF W_MONTFRAISPROF1#0 THEN
*      W_NBMVATT22 =  DCOUNT(ENR_HISTORCUMULPERACT<22>,CHAR(253))
*      IF W_NBMVATT22 = 0 THEN W_NBMVATT22 = 1
*      FOR I = 1 TO W_NBMVATT22			
*         IF ENR_HISTORCUMULPERACT<22,I> = "F" THEN W_TABATT22<1> = "01"
*         IF ENR_HISTORCUMULPERACT<22,I> = "R" THEN W_TABATT22<2> = "02"
*         IF ENR_HISTORCUMULPERACT<22,I> = "P" THEN W_TABATT22<3> = "03"
*         IF ENR_HISTORCUMULPERACT<22,I> = "D" THEN W_TABATT22<4> = "04"
*      NEXT I
      IF ENR_HISTORCUMULPERACT<22,1> = "F" THEN W_TABATT22<1> = "01"
      IF ENR_HISTORCUMULPERACT<22,1> = "R" THEN W_TABATT22<1> = "02"
      IF ENR_HISTORCUMULPERACT<22,1> = "P" THEN W_TABATT22<1> = "03"
      IF ENR_HISTORCUMULPERACT<22,1> = "D" THEN W_TABATT22<1> = "04"
   END
END
IF ENR_TDSFRAISPROFESSIONNELS<1> # "" AND ENR_TDSFRAISPROFESSIONNELS<3>#"1" THEN
   W_MONTFRAISPROF2=ENR_TDSFRAISPROFESSIONNELS<1>
   IF W_MONTFRAISPROF2#0 THEN
*      IF ENR_TDSFRAISPROFESSIONNELS<2> = "F" THEN W_TABATT22<1> = "01"
*      IF ENR_TDSFRAISPROFESSIONNELS<2> = "R" THEN W_TABATT22<2> = "02"
*      IF ENR_TDSFRAISPROFESSIONNELS<2> = "P" THEN W_TABATT22<3> = "03"
*      IF ENR_TDSFRAISPROFESSIONNELS<2> = "D" THEN W_TABATT22<4> = "04"
      IF ENR_TDSFRAISPROFESSIONNELS<2> = "F" THEN W_TABATT22<1> = "01"
      IF ENR_TDSFRAISPROFESSIONNELS<2> = "R" THEN W_TABATT22<1> = "02"
      IF ENR_TDSFRAISPROFESSIONNELS<2> = "P" THEN W_TABATT22<1> = "03"
      IF ENR_TDSFRAISPROFESSIONNELS<2> = "D" THEN W_TABATT22<1> = "04"
   END
END
W_MONTFRAISPROF=W_MONTFRAISPROF1+W_MONTFRAISPROF2
IF W_MONTFRAISPROF#0 THEN
   W_RenseigneType = 0
   IF W_TABATT22 # "" THEN
      IF W_TABATT22<1> # "" THEN
         ENR_DADSU<-1> = W_CHAINE:"043,'":W_TABATT22<1>:"'"
         W_RenseigneType = 1
      END ELSE
         IF W_TABATT22<2> # "" THEN
            ENR_DADSU<-1> = W_CHAINE:"043,'":W_TABATT22<2>:"'"
            W_RenseigneType = 1
         END ELSE
            IF W_TABATT22<3> # "" THEN
               ENR_DADSU<-1> = W_CHAINE:"043,'":W_TABATT22<3>:"'"
               W_RenseigneType = 1
            END ELSE
               IF W_TABATT22<4> # "" THEN
                  ENR_DADSU<-1> = W_CHAINE:"043,'":W_TABATT22<4>:"'"
                  W_RenseigneType = 1
               END
            END
         END
      END
   END
   IF W_RenseigneType = 0 THEN
      ENR_DADSU<-1> = W_CHAINE:"043,'02'"
   END
   W_MISENFORME=W_MONTFRAISPROF "R26"
   ENR_DADSU<-1> = W_CHAINE:"044.001,'":W_MISENFORME:"'"
   IF ENR_TDSFRAISPROFESSIONNELS<1>#"" AND ENR_TDSFRAISPROFESSIONNELS<3>="" THEN
      ENR_TDSFRAISPROFESSIONNELS<3>="1"
      WRITE ENR_TDSFRAISPROFESSIONNELS ON F.TDSFRAISPROFESSIONNELS,W_ANNEE:W_CODEENTITE:W_CODEAIDANT
   END
END
RETURN


**********
* 420505 -> RETRAITE COMPLEMENTAIRE IRCANTEC (S42.G05.05)
**********
420505
W_CHAINE = "S42.G05.05."
I=1
LOOP
UNTIL W_RETRAITEGENE<1,I>="" DO
   IF W_RETRAITEGENE<8,I>="I" THEN
      IF (W_RETRAITEGENE<2,I>#"" AND W_RETRAITEGENE<2,I>#0) OR (W_RETRAITEGENE<3,I>#"" AND W_RETRAITEGENE<3,I>#0) THEN   
         ENR_DADSU<-1> = W_CHAINE:"001.002,'":W_RETRAITEGENE<5,I>:"'"
         IF W_RETRAITEGENE<3,I>#"" AND W_RETRAITEGENE<3,I>#0 THEN
            W_MISENFORME=W_RETRAITEGENE<3,I> "R26"
            ENR_DADSU<-1> = W_CHAINE:"008.001,'":W_MISENFORME:"'"
            IF W_RETRAITEGENE<7,I>#"" AND W_RETRAITEGENE<7,I>#0 THEN
               W_MISENFORME=W_RETRAITEGENE<7,I> "R26"
               ENR_DADSU<-1> = W_CHAINE:"008.002,'":W_MISENFORME:"'"
            END ELSE
               ENR_DADSU<-1> = W_CHAINE:"008.002,'0.00'"
            END
         END ELSE
            IF W_RETRAITEGENE<2,I>#"" AND W_RETRAITEGENE<2,I>#0 THEN
               W_MISENFORME=W_RETRAITEGENE<2,I> "R26"
               ENR_DADSU<-1> = W_CHAINE:"008.001,'":W_MISENFORME:"'"
               ENR_DADSU<-1> = W_CHAINE:"008.002,'0.00'"
            END
         END
         ENR_DADSU<-1> = W_CHAINE:"009,'I0001'"
         W_CASIRCANTEC="OUI"
         W_DECLARIRCANTECCNRACL="OUI"
      END
   END
   I=I+1
REPEAT
RETURN


**********
* 430505 -> REGIMES CNRACL (S43.G05.05)
**********
430505
W_CHAINE = "S43.G05.05."
I=1
W_FINCNRACL="NON"
LOOP
UNTIL W_RETRAITEGENE<1,I>="" OR W_FINCNRACL="OUI" DO
   IF W_RETRAITEGENE<8,I>="C" THEN
      IF (W_RETRAITEGENE<2,I>#"" AND W_RETRAITEGENE<2,I>#0) OR (W_RETRAITEGENE<3,I>#"" AND W_RETRAITEGENE<3,I>#0) OR (W_RETRAITEGENE<7,I>#"" AND W_RETRAITEGENE<7,I>#0) THEN   
         ENR_DADSU<-1> = W_CHAINE:"001.001,'01'"
         ENR_DADSU<-1> = W_CHAINE:"001.002,'":W_RETRAITEGENE<5,I>:"'"
         READ ENR_TDSCNRACL FROM F.TDSCNRACL,W_CODEAIDANT:W_CODEENTITE:W_ANNEE ELSE ENR_TDSCNRACL=""
         IF ENR_TDSCNRACL<4>#"1" THEN
            IF ENR_TDSCNRACL<2>#"" AND ENR_TDSCNRACL<2>#0 THEN
               W_MONTSUPPLFAMILIAL=ENR_TDSCNRACL<1>
               W_MISENFORME=ENR_TDSCNRACL<2> "R26"
               ENR_DADSU<-1> = W_CHAINE:"017,'":W_MISENFORME:"'"
               ENR_TDSCNRACL<4>="1"
               WRITE ENR_TDSCNRACL ON F.TDSCNRACL,W_CODEAIDANT:W_CODEENTITE:W_ANNEE
            END
         END
         W_HEURESSUPPLCOMPL=ENR_HISTORCUMULPERACT<24>+ENR_HISTORCUMULPERACT<26>
         IF W_HEURESSUPPLCOMPL#"" AND W_HEURESSUPPLCOMPL#0 THEN
            W_MISENFORME=W_HEURESSUPPLCOMPL "R26"
            ENR_DADSU<-1> = W_CHAINE:"018,'":W_MISENFORME:"'"
         END
         ENR_DADSU<-1> = W_CHAINE:"019,'90'"
         W_FINCNRACL="OUI"
         W_CASCNRACL="OUI"
         W_DECLARIRCANTECCNRACL="OUI"
      END
   END
   I=I+1
REPEAT
RETURN


**********
* 440300 -> MODALITES DE COTISATION AGIRC / ARRCO (S44.G03.00)
**********
440300
IF W_TYPEURSSAFMSA="M" THEN RETURN
W_CHAINE = "S44.G03.00."
IF W_CODESTATUTCATCONV#"" THEN
   W_ADECLARER="NON"
   I=1
   LOOP
   UNTIL W_RETRAITEGENE<1,I>="" DO
      IF W_RETRAITEGENE<8,I>="A" THEN
         IF (W_RETRAITEGENE<2,I>#"" AND W_RETRAITEGENE<2,I>#0) OR (W_RETRAITEGENE<3,I>#"" AND W_RETRAITEGENE<3,I>#0) OR (W_RETRAITEGENE<7,I>#"" AND W_RETRAITEGENE<7,I>#0) THEN
            W_ADECLARER="OUI"
         END  
      END
      I=I+1
   REPEAT
   IF W_ADECLARER="OUI" THEN
      ENR_DADSU<-1> = W_CHAINE:"001,'90'"
   END ELSE
      ENR_DADSU<-1> = W_CHAINE:"001,'03'"
   END
END
RETURN


**********
* 440305 -> INSTITUTIONS DE RETRAITE COMPLEMENTAIRE AGIRC / ARRCO DESTINATAIRES (S44.G03.05)
**********
440305
IF W_TYPEURSSAFMSA="M" THEN RETURN
W_CHAINE = "S44.G03.05."
W_TABORGRETCOMPL=""
W_PASSAGE=0
I=1
LOOP
UNTIL W_RETRAITEGENE<1,I>="" DO
   IF W_RETRAITEGENE<8,I>="A" THEN
      IF (W_RETRAITEGENE<2,I>#"" AND W_RETRAITEGENE<2,I>#0) OR (W_RETRAITEGENE<3,I>#"" AND W_RETRAITEGENE<3,I>#0) OR (W_RETRAITEGENE<7,I>#"" AND W_RETRAITEGENE<7,I>#0) THEN   
         IF INDEX(W_TABORGRETCOMPL<1>,W_RETRAITEGENE<4,I>,1) = 0 AND INDEX(W_TABORGRETCOMPL<2>,W_RETRAITEGENE<5,I>,1) = 0 THEN
            W_TABORGRETCOMPL<1,-1>=W_RETRAITEGENE<4,I>
            W_TABORGRETCOMPL<2,-1>=W_RETRAITEGENE<5,I>
            ENR_DADSU<-1> = W_CHAINE:"001,'":W_RETRAITEGENE<4,I>:"'"
            ENR_DADSU<-1> = W_CHAINE:"002,'":W_RETRAITEGENE<5,I>:"'"
         END ELSE
            IF INDEX(W_TABORGRETCOMPL<1>,W_RETRAITEGENE<4,I>,1) # 0 AND INDEX(W_TABORGRETCOMPL<2>,W_RETRAITEGENE<5,I>,1) # 0 THEN
               NULL
            END ELSE
               W_TABORGRETCOMPL<1,-1>=W_RETRAITEGENE<4,I>
               W_TABORGRETCOMPL<2,-1>=W_RETRAITEGENE<5,I>
               ENR_DADSU<-1> = W_CHAINE:"001,'":W_RETRAITEGENE<4,I>:"'"
               ENR_DADSU<-1> = W_CHAINE:"002,'":W_RETRAITEGENE<5,I>:"'"
            END
         END
      END ELSE
         IF W_CODESTATUTCATCONV#"" THEN
            IF W_ADECLARER="NON" AND W_PASSAGE=0 THEN
               ENR_DADSU<-1> = W_CHAINE:"001,'":W_RETRAITEGENE<4,I>:"'"
               ENR_DADSU<-1> = W_CHAINE:"002,'":W_RETRAITEGENE<5,I>:"'"
               W_PASSAGE=1
            END
         END
      END 
   END
   I=I+1
REPEAT
IF W_CODESTATUTCATCONV#"" THEN
   IF W_ADECLARER="NON" AND W_PASSAGE=0 THEN
      I=1
      LOOP
      UNTIL W_TABRETRAITE<1,I>="" OR W_PASSAGE=1 DO
         IF W_TABRETRAITE<8,I>="A" AND W_TABRETRAITE<9,I>="03" THEN
            ENR_DADSU<-1> = W_CHAINE:"001,'":W_TABRETRAITE<4,I>:"'"
            ENR_DADSU<-1> = W_CHAINE:"002,'":W_TABRETRAITE<5,I>:"'"
            W_PASSAGE=1
         END
         I=I+1
      REPEAT
   END
END
RETURN


**********
* 450100 -> INFORMATIONS DU SALARIE DESTINES A UNE INSTITUTION PREVOYANCE (S45.G01.00)
**********
450100
W_TABORGPREV=""
IF W_TYPEURSSAFMSA="M" THEN RETURN
I=1
LOOP
UNTIL W_PREVOYANCE<1,I>="" DO
   IF (W_PREVOYANCE<2,I>#"" AND W_PREVOYANCE<2,I>#0) OR (W_PREVOYANCE<3,I>#"" AND W_PREVOYANCE<3,I>#0) OR (W_PREVOYANCE<7,I>#"" AND W_PREVOYANCE<7,I>#0) THEN   
      IF INDEX(W_TABORGPREV<1>,W_PREVOYANCE<4,I>,1) = 0 THEN
         W_TABORGPREV<1,-1>=W_PREVOYANCE<4,I>
         W_TABORGPREV<2,-1>=W_PREVOYANCE<5,I>
         W_TABORGPREV<3,-1>=W_PREVOYANCE<13,I>
* Didier 15/11/2012 : code population rattachement
         W_TABORGPREV<4,-1>=W_PREVOYANCE<14,I>
      END
   END
   I=I+1
REPEAT
IF W_TABORGPREV="" THEN RETURN
W_CHAINE = "S45.G01.00."
W_DATEDEBCONTRAT = OCONV(ENR_CONTRAT<7>,"D4/")
W_DATEDEBCONTRAT=CONVERT("/","",W_DATEDEBCONTRAT)
ENR_DADSU<-1> = W_CHAINE:"001.001,'":W_DATEDEBCONTRAT:"'"
ENR_DADSU<-1> = W_CHAINE:"001.002,'":W_DATEDEBCONTRAT:"'"
BEGIN CASE
   CASE ENR_CIVILAIDANT<21>="1"
      ENR_DADSU<-1> = W_CHAINE:"002,'02'"
   CASE ENR_CIVILAIDANT<21>="2"
      ENR_DADSU<-1> = W_CHAINE:"002,'01'"
   CASE ENR_CIVILAIDANT<21>="3"
      ENR_DADSU<-1> = W_CHAINE:"002,'05'"
   CASE ENR_CIVILAIDANT<21>="4"
      ENR_DADSU<-1> = W_CHAINE:"002,'03'"
   CASE ENR_CIVILAIDANT<21>="5"
      ENR_DADSU<-1> = W_CHAINE:"002,'06'"
   CASE ENR_CIVILAIDANT<21>="6"
      ENR_DADSU<-1> = W_CHAINE:"002,'04'"
   CASE ENR_CIVILAIDANT<21>="7"
      ENR_DADSU<-1> = W_CHAINE:"002,'07'"
   CASE 1
      ENR_DADSU<-1> = W_CHAINE:"002,'90'"
END CASE
ENR_DADSU<-1> = W_CHAINE:"006,'99'"
RETURN


**********
* 450105 -> ANCIENNETES DU SALARIE (S45.G01.05)
**********
450105
W_CHAINE = "S45.G01.05."
ENR_DADSU<-1> = W_CHAINE:"001.001,'01'"
ENR_DADSU<-1> = W_CHAINE:"001.002,'01'"
IF ENR_CONTRAT<97>#"" THEN
   IF ENR_CONTRAT<97><ENR_CONTRAT<7> THEN
      W_NBJOURSANC=ENR_HISTORCUMULPERACT<35>-ENR_CONTRAT<97>+1
   END ELSE
      W_NBJOURSANC=ENR_HISTORCUMULPERACT<35>-ENR_CONTRAT<7>+1
   END
END ELSE
   W_NBJOURSANC=ENR_HISTORCUMULPERACT<35>-ENR_CONTRAT<7>+1
END
ENR_DADSU<-1> = W_CHAINE:"002,'":W_NBJOURSANC:"'"
RETURN


**********
* 450500 -> CONTRAT SOUSCRIT AUPRES D'UNE INSTITUTION DE PREVOYANCE (S45.G05.00)
**********
450500
W_CHAINE = "S45.G05.00."
I=1
LOOP
UNTIL W_TABORGPREV<1,I>="" DO
   ENR_DADSU<-1> = W_CHAINE:"001,'":W_TABORGPREV<2,I>:"'"
* Didier 15/11/2012 : code population de rattachement
   IF W_TABORGPREV<4,I>#"" THEN ENR_DADSU<-1> = W_CHAINE:"003,'":W_TABORGPREV<4,I>:"'"
   ENR_DADSU<-1> = W_CHAINE:"005,'":W_TABORGPREV<1,I>:"'"
   IF W_TABORGPREV<3,I>#"" THEN ENR_DADSU<-1> = W_CHAINE:"006,'":W_TABORGPREV<3,I>:"'"
   I=I+1
REPEAT
RETURN


**********
* 450510 -> PERIODE DE COTISATION (S45.G05.10)
**********
450510
W_CHAINE = "S45.G05.10."
ENR_DADSU<-1> = W_CHAINE:"001,'":W_DATEDEBACTIVITE:"'"
ENR_DADSU<-1> = W_CHAINE:"002,'":W_DATEFINACTIVITE:"'"
RETURN


**********
* 450515 -> ELEMENTS DE REMUNERATION (S45.G05.15)
**********
450515
W_CHAINE = "S45.G05.15."
W_TOTPREVAIDANT=0
W_TOTPREVAIDANTTRA=0
W_TOTPREVAIDANTTRB=0
W_TOTPREVAIDANTCOTIS=0
I=1
LOOP
UNTIL W_PREVOYANCE<1,I>="" DO
   IF W_PREVOYANCE<2,I>#"" AND W_PREVOYANCE<2,I>#0 THEN
      W_TOTPREVAIDANT=W_TOTPREVAIDANT+W_PREVOYANCE<2,I>
   END ELSE
      W_TOTPREVAIDANT=W_TOTPREVAIDANT+W_PREVOYANCE<3,I>+W_PREVOYANCE<7,I>
   END
   IF W_PREVOYANCE<3,I>#"" AND W_PREVOYANCE<3,I>#0 THEN W_TOTPREVAIDANTTRA=W_TOTPREVAIDANTTRA+W_PREVOYANCE<3,I>
   IF W_PREVOYANCE<7,I>#"" AND W_PREVOYANCE<7,I>#0 THEN W_TOTPREVAIDANTTRB=W_TOTPREVAIDANTTRB+W_PREVOYANCE<7,I>
   IF W_PREVOYANCE<11,I>#"" AND W_PREVOYANCE<11,I>#0 THEN W_TOTPREVAIDANTCOTIS=W_TOTPREVAIDANTCOTIS+W_PREVOYANCE<11,I>
   I=I+1
REPEAT
W_MISENFORME=ENR_HISTORCUMULPERACT<5> "R26"
ENR_DADSU<-1> = W_CHAINE:"001.001,'":W_MISENFORME:"'"
W_MISENFORME=W_TOTPREVAIDANT "R26"
ENR_DADSU<-1> = W_CHAINE:"002.001,'":W_MISENFORME:"'"
IF W_TOTPREVAIDANTTRA#0 THEN
   W_MISENFORME=W_TOTPREVAIDANTTRA "R26"
   ENR_DADSU<-1> = W_CHAINE:"003.001,'":W_MISENFORME:"'"
END ELSE
   ENR_DADSU<-1> = W_CHAINE:"003.001,'0.00'"
END
ENR_DADSU<-1> = W_CHAINE:"004.001,'0.00'"
IF W_TOTPREVAIDANTTRB#0 THEN
   W_MISENFORME=W_TOTPREVAIDANTTRB "R26"
   ENR_DADSU<-1> = W_CHAINE:"005.001,'":W_MISENFORME:"'"
END ELSE
   ENR_DADSU<-1> = W_CHAINE:"005.001,'0.00'"
END
ENR_DADSU<-1> = W_CHAINE:"006.001,'0.00'"
ENR_DADSU<-1> = W_CHAINE:"007.001,'0.00'"
ENR_DADSU<-1> = W_CHAINE:"008.001,'0.00'"
IF W_TOTPREVAIDANTCOTIS#0 THEN
   W_MISENFORME=W_TOTPREVAIDANTCOTIS "R26"
   ENR_DADSU<-1> = W_CHAINE:"009.001,'":W_MISENFORME:"'"
END ELSE
   ENR_DADSU<-1> = W_CHAINE:"009.001,'0.00'"
END
RETURN


**********
* 481000 -> ASSURANCE CHOMAGE (S48.G10.00)
**********
481000
W_CHAINE = "S48.G10.00."
IF W_CODEPOPULATION="10" THEN ENR_DADSU<-1> = W_CHAINE:"015,'01'"
IF W_CODEPOPULATION="43" THEN ENR_DADSU<-1> = W_CHAINE:"015,'02'"
IF W_CODEPOPULATION="40" THEN ENR_DADSU<-1> = W_CHAINE:"015,'03'"
IF W_CODEPOPULATION="40" THEN 
   ENR_DADSU<-1> = W_CHAINE:"016,'90'"
END ELSE
   IF W_BASEASSEDIC=0 THEN 
      ENR_DADSU<-1> = W_CHAINE:"016,'03'"
   END ELSE
      IF W_COTISAIDANTASSEDIC=0 THEN
         IF W_COTISPATROASSEDIC=0 THEN
            ENR_DADSU<-1> = W_CHAINE:"016,'03'"
         END ELSE
            ENR_DADSU<-1> = W_CHAINE:"016,'01'"
         END
      END ELSE
         IF W_COTISPATROASSEDIC=0 THEN
            ENR_DADSU<-1> = W_CHAINE:"016,'02'"
         END ELSE
            ENR_DADSU<-1> = W_CHAINE:"016,'90'"
         END
      END
   END
END
IF W_CODEPOPULATION="40" THEN 
   ENR_DADSU<-1> = W_CHAINE:"017,'02'"
END ELSE
   IF W_CODEPOPULATION="43" THEN 
      ENR_DADSU<-1> = W_CHAINE:"017,'02'"
   END ELSE
      IF W_BASEAGS=0 THEN
         ENR_DADSU<-1> = W_CHAINE:"017,'02'"
      END ELSE
         ENR_DADSU<-1> = W_CHAINE:"017,'01'"
      END
   END
END
IF W_BASEASSEDIC=0 THEN 
   ENR_DADSU<-1> = W_CHAINE:"018,'0.00'"
   IF W_TYPETRAIT="2" THEN ENR_DADSU<-1> = W_CHAINE:"019,'0.00'"
END ELSE
   W_MISENFORME=W_BASEASSEDIC "R26"
   ENR_DADSU<-1> = W_CHAINE:"018,'":W_MISENFORME:"'"
   IF W_TYPETRAIT="2" THEN
      W_BASEASSEDIC=W_BASEASSEDIC-W_MONTANTPRIMES-W_MONTANTCPAUMOIS
* Didier 08/03/2013 - ticket 3002 : si ngatif alors 0
      IF W_BASEASSEDIC<0 THEN W_BASEASSEDIC=0
      W_MISENFORME=W_BASEASSEDIC "R26"
   END
   IF W_TYPETRAIT="2" THEN ENR_DADSU<-1> = W_CHAINE:"019,'":W_MISENFORME:"'"
END
* Didier 26/12/2012 + 22/01/2013
IF W_TYPETRAIT="2" THEN
   IF W_CODEPOPULATION="40" OR W_CODEPOPULATION="43" THEN
      W_CHAINE = "S48.G10.02."
      ENR_DADSU<-1> = W_CHAINE:"001,'03'"
   END
END
RETURN


**********
* 481005 -> EMPLOIS AIDES (S48.G10.05)
**********
481005
W_CHAINE = "S48.G10.05."
IF ENR_CONTRAT<118>#"" THEN
   W_DATESIGNEMPLOIAIDE=OCONV(ENR_CONTRAT<118>,"D4/")
   W_DATESIGNEMPLOIAIDE=CONVERT("/","",W_DATESIGNEMPLOIAIDE)
   ENR_DADSU<-1> = W_CHAINE:"012.006,'":W_DATESIGNEMPLOIAIDE:"'"  
   ENR_DADSU<-1> = W_CHAINE:"012.007,'":ENR_CONTRAT<119>:"'"
END
RETURN


**********
* 481605 -> DUREE D'ABSENCE NON REMUNEREE (S48.G16.05)
**********
481605
W_CHAINE = "S48.G16.05."
W_DUREEABSAIDANT=0
LISTABSAIDANT2=""
EXECUTE 'SSELECT ABSENCESAIDANT AVEC CodAbsAidant = "':W_CODEAIDANT:']" AND AVEC DebAbsAidant <= "':W_DATEFINACTIVITEINT:'" AND AVEC 2 >= "':W_DATEDEBACTIVITEINT:'"AND AVEC NumMotifAidant > "0" AND  < "7" OR = "13" OR = "12" OR = "22" OR = "23" PAR DebAbsAidant'
EXECUTE 'SAUVE-LISTE LISTABSAIDANT2'
EXECUTE "LISTE LISTABSAIDANT2" RETURNING W_MSG
SELECT F.ABSENCESAIDANT TO LISTABSAIDANT2
IF W_MSG<1>=209 THEN RETURN
W_FINABSAIDANT="NON"
LOOP
   READNEXT CLEABSAIDANT FROM LISTABSAIDANT2 ELSE W_FINABSAIDANT="OUI"
UNTIL W_FINABSAIDANT = "OUI" DO
   READ ENR_ABSENCESAIDANT FROM F.ABSENCESAIDANT,CLEABSAIDANT ELSE ENR_ABSENCESAIDANT = ""
   IF ENR_ABSENCESAIDANT # "" THEN
      IF ENR_ABSENCESAIDANT<2> <= W_DATEFINACTIVITEINT THEN
         W_FinAbs = ENR_ABSENCESAIDANT<2>
      END ELSE
         W_FinAbs = W_DATEFINACTIVITEINT
      END
      IF CLEABSAIDANT[8,5] <= W_DATEDEBACTIVITEINT THEN
         W_DebutAbs = W_DATEDEBACTIVITEINT
      END ELSE
         W_DebutAbs = CLEABSAIDANT[8,5]
      END
      W_JourAbs = W_FinAbs - W_DebutAbs + 1
      IF CLEABSAIDANT[6,2]="03" THEN W_JourAbs = W_JourAbs / 2
      W_DUREEABSAIDANT=W_DUREEABSAIDANT + W_JourAbs
   END
REPEAT
IF W_DUREEABSAIDANT#0 THEN
   ENR_DADSU<-1> = W_CHAINE:"001,'40'"
   W_DUREEABSAIDANT=INT(W_DUREEABSAIDANT*100)
   W_MISENFORME=W_DUREEABSAIDANT "R26"
   ENR_DADSU<-1> = W_CHAINE:"002,'":W_MISENFORME:"'"
END
EXECUTE 'EFFACER-LISTE LISTABSAIDANT2'
RETURN


**********
* 484715 -> INDEMNITES VERSEES MENSUELLEMENT (S48.G47.15)
**********
484715
W_CHAINE = "S48.G47.15."
IF W_MONTANTCPAUMOIS#0 THEN
   ENR_DADSU<-1> = W_CHAINE:"001,'215'"
   W_MISENFORME=W_MONTANTCPAUMOIS "R26"
   ENR_DADSU<-1> = W_CHAINE:"002.001,'":W_MISENFORME:"'"
END
RETURN


**********
* 485500 -> FIN DU CONTRAT DE TRAVAIL (S48.G55.00)
**********
485500
W_CHAINE = "S48.G55.00."
* Didier 20/02/2012 : ajout motif fin activit 090 (CER)
IF W_MOTIFFINACTIVITE="008" OR W_MOTIFFINACTIVITE="010" OR W_MOTIFFINACTIVITE="012" OR W_MOTIFFINACTIVITE="014" OR W_MOTIFFINACTIVITE="134" OR W_MOTIFFINACTIVITE="136" OR W_MOTIFFINACTIVITE="138" OR W_MOTIFFINACTIVITE="090" THEN
   ENR_DADSU<-1> = W_CHAINE:"001,'":ENR_CONTRAT<49>:"'"
END
ENR_DADSU<-1> = W_CHAINE:"002.001,'":W_DATEDEBCONTRAT:"'"
ENR_DADSU<-1> = W_CHAINE:"002.002,'":W_DATEFINCONTRATREEL:"'"
W_DATENOTIF=ENR_CONTRAT<50>
IF W_DATENOTIF="" THEN
   W_DATENOTIF=W_DATEFINCONTRATREEL
END ELSE
   W_DATENOTIF=OCONV(W_DATENOTIF,"D4/")
   W_DATENOTIF=CONVERT("/","",W_DATENOTIF)
END
ENR_DADSU<-1> = W_CHAINE:"003,'":W_DATENOTIF:"'"  
ENR_DADSU<-1> = W_CHAINE:"004,'":W_DATENOTIF:"'"
W_DATEDERNJOURTRAV=OCONV(ENR_CONTRAT<51>,"D4/")
W_DATEDERNJOURTRAV=CONVERT("/","",W_DATEDERNJOURTRAV)
ENR_DADSU<-1> = W_CHAINE:"005,'":W_DATEDERNJOURTRAV:"'"
IF W_NBJOURSCPRESTANT>0 THEN
   W_MISENFORME=W_NBJOURSCPRESTANT "R26"
   ENR_DADSU<-1> = W_CHAINE:"007,'":W_MISENFORME:"'"
END
ENR_DADSU<-1> = W_CHAINE:"010,'02'"
IF ENR_CONTRAT<49>="43" THEN
   W_DATESIGNRUPTCONV=OCONV(ENR_CONTRAT<129>,"D4/")
   W_DATESIGNRUPTCONV=CONVERT("/","",W_DATESIGNRUPTCONV)
   ENR_DADSU<-1> = W_CHAINE:"015,'":W_DATESIGNRUPTCONV:"'" 
END
RETURN


**********
* 485505 -> REALISATION DU PREAVIS (S48.G55.05)
**********
485505
W_CHAINE = "S48.G55.05."
W_DATEPREAVIS=ENR_CONTRAT<55>
IF W_DATEPREAVIS#"" THEN
   ENR_DADSU<-1> = W_CHAINE:"001,'01'"
   W_DATEPREAVIS=OCONV(W_DATEPREAVIS,"D4/")
   W_DATEPREAVIS=CONVERT("/","",W_DATEPREAVIS)
   ENR_DADSU<-1> = W_CHAINE:"002.001,'":W_DATEPREAVIS:"'"
   W_DATEPREAVIS=ENR_CONTRAT<56>
   W_DATEPREAVIS=OCONV(W_DATEPREAVIS,"D4/")
   W_DATEPREAVIS=CONVERT("/","",W_DATEPREAVIS)
   ENR_DADSU<-1> = W_CHAINE:"002.002,'":W_DATEPREAVIS:"'"
END
W_DATEPREAVIS=ENR_CONTRAT<53>
IF W_DATEPREAVIS#"" THEN
   ENR_DADSU<-1> = W_CHAINE:"001,'02'"
   W_DATEPREAVIS=OCONV(W_DATEPREAVIS,"D4/")
   W_DATEPREAVIS=CONVERT("/","",W_DATEPREAVIS)
   ENR_DADSU<-1> = W_CHAINE:"002.001,'":W_DATEPREAVIS:"'"
   W_DATEPREAVIS=ENR_CONTRAT<54>
   W_DATEPREAVIS=OCONV(W_DATEPREAVIS,"D4/")
   W_DATEPREAVIS=CONVERT("/","",W_DATEPREAVIS)
   ENR_DADSU<-1> = W_CHAINE:"002.002,'":W_DATEPREAVIS:"'"
END
W_DATEPREAVIS=ENR_CONTRAT<130>
IF W_DATEPREAVIS#"" THEN
   ENR_DADSU<-1> = W_CHAINE:"001,'03'"
   W_DATEPREAVIS=OCONV(W_DATEPREAVIS,"D4/")
   W_DATEPREAVIS=CONVERT("/","",W_DATEPREAVIS)
   ENR_DADSU<-1> = W_CHAINE:"002.001,'":W_DATEPREAVIS:"'"
   W_DATEPREAVIS=ENR_CONTRAT<131>
   W_DATEPREAVIS=OCONV(W_DATEPREAVIS,"D4/")
   W_DATEPREAVIS=CONVERT("/","",W_DATEPREAVIS)
   ENR_DADSU<-1> = W_CHAINE:"002.002,'":W_DATEPREAVIS:"'"
END
IF ENR_CONTRAT<53>="" AND ENR_CONTRAT<55>="" AND ENR_CONTRAT<130>="" THEN
   ENR_DADSU<-1> = W_CHAINE:"001,'90'"
END
RETURN


**********
* 485515 -> CODE INSTITUTION DE RETRAITE COMPLEMENTAIRE (S48.G55.15)
**********
485515
W_CHAINE = "S48.G55.15."
W_TABORGRETCOMPL=""
W_CASCNRACL="NON"
W_CASIRCANTEC="NON"
I=1
LOOP
UNTIL W_RETRAITEGENE<1,I>="" DO
   IF (W_RETRAITEGENE<2,I>#"" AND W_RETRAITEGENE<2,I>#0) OR (W_RETRAITEGENE<3,I>#"" AND W_RETRAITEGENE<3,I>#0) OR (W_RETRAITEGENE<7,I>#"" AND W_RETRAITEGENE<7,I>#0) THEN   
      IF INDEX(W_TABORGRETCOMPL<1>,W_RETRAITEGENE<4,I>,1) = 0 THEN
         IF W_RETRAITEGENE<8,I>="C" THEN W_CASCNRACL="OUI"
         IF W_RETRAITEGENE<8,I>="I" THEN W_CASIRCANTEC="OUI"
         IF W_RETRAITEGENE<8,I>#"C" THEN
            W_TABORGRETCOMPL<1,-1>=W_RETRAITEGENE<4,I>
            ENR_DADSU<-1> = W_CHAINE:"001,'":W_RETRAITEGENE<4,I>:"'"
         END
      END
   END
   I=I+1
REPEAT
IF W_TABORGRETCOMPL="" THEN
* Didier 13/02/2012 : indication caisse IRCEM en mandataire
   IF W_TYPEACT="M" THEN
      ENR_DADSU<-1> = W_CHAINE:"001,'A155'"
   END ELSE
* Didier 28/08/2013 : prendre code organisme de l'organisme de retraite indiqu en fin de contrat de travail
      IF ENR_CONTRAT<84>#"" THEN
         READ ENR_ORGANISMESOCIAL FROM F.ORGANISMESOCIAL,ENR_CONTRAT<84> THEN
            IF ENR_ORGANISMESOCIAL<17>#"" THEN
               ENR_DADSU<-1> = W_CHAINE:"001,'":ENR_ORGANISMESOCIAL<17>:"'"
            END ELSE
               ENR_DADSU<-1> = W_CHAINE:"001,'90000'"
            END
         END ELSE
            ENR_DADSU<-1> = W_CHAINE:"001,'90000'"       
         END
      END ELSE
         ENR_DADSU<-1> = W_CHAINE:"001,'90000'"
      END
   END
END
RETURN


**********
* 485520 -> PRE-REMPLISSAGE CADRE 9 SIGNATAIRE DE LA DECLARATION (S48.G55.20)
**********
485520
W_CHAINE = "S48.G55.20."
* Didier 08/01/2013 : gestion mise en forme avec W_TXTACONVERTIR et GOSUB 9999991
IF W_TYPEACT="M" THEN
   W_TXTACONVERTIR = ENR_CIVILAIDE<2>
   GOSUB 9999991
   ENR_DADSU<-1> = W_CHAINE:"001,'":ENR_CIVILAIDE<1>:" ":W_TXTACONVERTIR:"'"
   W_TXTACONVERTIR = ENR_CIVILAIDE<3>
   GOSUB 9999991
   ENR_DADSU<-1> = W_CHAINE:"002,'":W_TXTACONVERTIR:"'"
   ENR_DADSU<-1> = W_CHAINE:"003,'08'"
END ELSE
   W_TXTACONVERTIR = ENR_ASSOCIATION<30>
   GOSUB 9999991
   ENR_DADSU<-1> = W_CHAINE:"001,'":W_TXTACONVERTIR:"'"
* Didier 30/08/2013 - DA13020 : qualit responsable de paie identifi dans ASSOCIATION
   IF ENR_ASSOCIATION<24>#"" THEN
      ENR_DADSU<-1> = W_CHAINE:"003,'":ENR_ASSOCIATION<24>:"'"
   END ELSE
      ENR_DADSU<-1> = W_CHAINE:"003,'06'"
   END
END
W_TXTACONVERTIR=ENR_ASSOCIATION<9>
GOSUB 9999991
ENR_DADSU<-1> = W_CHAINE:"004,'":W_TXTACONVERTIR:"'"
ENR_DADSU<-1> = W_CHAINE:"005,'":W_DATESYST:"'"
RETURN


**********
* 530100 -> RETRAITE ADDITIONNELLE DE LA FONCTION PUBLIQUE - R.A.F.P. (S53.G01.00)
**********
530100
W_CHAINE = "S53.G01.00."
I=1
W_FINRAFP="NON"
LOOP
UNTIL W_RETRAITEGENE<1,I>="" OR W_FINRAFP="OUI" DO
   IF W_RETRAITEGENE<8,I>="C" AND W_RETRAITEGENE<4,I>[1,1]="R" THEN
	W_TXTACONVERTIR=ENR_ETABLISSEMENT<2>
	GOSUB 9999991
      ENR_DADSU<-1> = W_CHAINE:"006,'":W_TXTACONVERTIR:"'"
      ENR_DADSU<-1> = W_CHAINE:"007.001,'":W_SIREN:"'"
      ENR_DADSU<-1> = W_CHAINE:"007.002,'":W_SIRETETABL:"'"
      ENR_DADSU<-1> = W_CHAINE:"012,'":W_RETRAITEGENE<5,I>:"'"
      ENR_DADSU<-1> = W_CHAINE:"020,'400'"
      W_FINRAFP="OUI"
      W_CASRAFP="OUI"
   END
   I=I+1
REPEAT
RETURN


**********
* 600500 -> PERIODES D'INACTIVITE OU SITUATIONS PARTICULIERES (S60.G05.00)
**********
600500
IF W_TYPEURSSAFMSA="M" THEN RETURN
W_CHAINE = "S60.G05.00."
I=1
LOOP
UNTIL W_TABPERIODEACTIVITE<1,I>="" DO
   LISTEABSAIDANT=""
   W_DATEDEBACTIVITEBIS=W_TABPERIODEACTIVITE<1,I>
   W_DATEFINACTIVITEBIS=W_TABPERIODEACTIVITE<2,I>
   W_REQUETEABS='SELECT ABSENCESAIDANT AVEC CodeAidant = "':W_CODEAIDANT:'" AND AVEC NumMotifAidant >= "01" AND <= "06" AND AVEC FinAbsAidant >= "':W_DATEDEBACTIVITEBIS:'" AND AVEC DebAbsAidant <= "':W_DATEFINACTIVITEBIS:'"'
   W_REQUETEABS=W_REQUETEABS:' OR AVEC CodeAidant = "':W_CODEAIDANT:'" AND AVEC NumMotifAidant = "12" OR = "13" OR = "24" AND AVEC FinAbsAidant >= "':W_DATEDEBACTIVITEBIS:'" AND AVEC DebAbsAidant <= "':W_DATEFINACTIVITEBIS:'" PAR DebAbsAidant'
   EXECUTE W_REQUETEABS
   EXECUTE 'SAUVE-LISTE LISTEABSAIDANT'
   EXECUTE "LISTE LISTEABSAIDANT" RETURNING W_MSG
   IF W_MSG<1> # 209 THEN
      SELECT F.ABSENCESAIDANT TO LISTEABSAIDANT
      W_FINABS = "NON" 
      LOOP
         READNEXT CLEABS FROM LISTEABSAIDANT ELSE W_FINABS = "OUI"
      UNTIL W_FINABS = "OUI" DO
         READ ENR_ABSENCESAIDANT FROM F.ABSENCESAIDANT,CLEABS ELSE ENR_ABSENCESAIDANT = ""
         IF INT(CLEABS[8,5]) <= INT(W_DATEFINACTIVITEBIS) AND INT(ENR_ABSENCESAIDANT<2>) >= INT(W_DATEDEBACTIVITEBIS) THEN
            W_MOTIFABS=""
            BEGIN CASE
               CASE CLEABS[6,2]="01"
                  W_MOTIFABS="100"
               CASE CLEABS[6,2]="02"
                  IF W_CASCNRACL="NON" THEN
                     IF W_CASIRCANTEC="OUI" THEN
                        W_MOTIFABS="200"
                     END ELSE
                        IF ENR_CIVILAIDANT<16>="M" THEN
                           W_MOTIFABS="203"
                        END ELSE
                           W_MOTIFABS="200"
                        END
                     END
                  END ELSE
                     IF ENR_CIVILAIDANT<16>="M" THEN
                        W_MOTIFABS="203"
                     END ELSE
                        W_MOTIFABS="202"
                     END
                  END
               CASE CLEABS[6,2]="04" OR CLEABS[6,2]="05"
                  IF W_CASCNRACL="NON" THEN W_MOTIFABS="110"
               CASE CLEABS[6,2]="06"
                  IF W_CASCNRACL="NON" THEN
                     W_MOTIFABS="108"
                  END ELSE
                     W_MOTIFABS="107"
                  END
               CASE CLEABS[6,2]="12"
                  IF W_CASCNRACL="NON" AND W_CASIRCANTEC="NON" THEN W_MOTIFABS="501"
               CASE CLEABS[6,2]="13"
                  IF W_CASCNRACL="OUI" THEN W_MOTIFABS="205"
               CASE CLEABS[6,2]="24"
                  IF W_CASIRCANTEC="NON" THEN W_MOTIFABS="301"
               CASE 1
                  NULL
            END CASE
            IF W_MOTIFABS#"" THEN
               ENR_DADSU<-1> = W_CHAINE:"001,'":W_MOTIFABS:"'"
               IF INT(CLEABS[8,5]) < INT(W_DATEDEBACTIVITEBIS) THEN
                  W_DEBUTABS = W_DATEDEBACTIVITEBIS
               END ELSE
                  W_DEBUTABS = CLEABS[8,5]
               END
               IF INT(ENR_ABSENCESAIDANT<2>) > INT(W_DATEFINACTIVITEBIS) THEN
                  W_FINABS = W_DATEFINACTIVITEBIS
               END ELSE
                  W_FINABS = ENR_ABSENCESAIDANT<2>
               END
               ENR_DADSU<-1> = W_CHAINE:"002,'":CONVERT("/","",OCONV(W_DEBUTABS,"D4/")):"'"
               ENR_DADSU<-1> = W_CHAINE:"003,'":CONVERT("/","",OCONV(W_FINABS,"D4/")):"'"
               IF W_TYPETRAIT="1" THEN
                  IF W_CASCNRACL="NON" AND W_CASIRCANTEC="NON" THEN GOSUB 600515
*                  IF W_CASIRCANTEC="OUI" AND W_FINABS-W_DEBUTABS+1>=30 THEN GOSUB 600542
                  IF W_CASIRCANTEC="OUI" THEN GOSUB 600542
                  IF W_CASCNRACL="OUI" THEN GOSUB 600543
               END
            END
         END
      REPEAT
   END
   EXECUTE 'EFFACER-LISTE LISTEABSAIDANT'
   I=I+1
REPEAT
RETURN


**********
* 600515 -> MONTANTS SITUATIONS PARTICULIERES AGIRC / ARCCO / PREVOYANCE (S60.G05.15)
**********
600515
IF W_TYPEURSSAFMSA="M" THEN RETURN
W_CHAINE1 = "S60.G05.15."
ENR_DADSU<-1> = W_CHAINE1:"001.001,'03'"
ENR_DADSU<-1> = W_CHAINE1:"001.002,'01'"
W_TEMPSABS=W_FINABS-W_DEBUTABS+1
W_TEMPSABS=W_TEMPSABS*100
W_MISENFORME=W_TEMPSABS "R26"
ENR_DADSU<-1> = W_CHAINE1:"001.003,'":W_MISENFORME:"'"
RETURN


**********
* 600542 -> MONTANTS SITUATIONS PARTICULIERES IRCANTEC (S60.G05.42)
**********
600542
W_CHAINE2 = "S60.G05.42."
ENR_DADSU<-1> = W_CHAINE2:"002.001,'0.00'"
RETURN


**********
* 600543 -> SITUATIONS PARTICULIERES CNRACL (S60.G05.43)
**********
600543
W_CHAINE3 = "S60.G05.43."
ENR_DADSU<-1> = W_CHAINE3:"003.001,'0.00'"
RETURN


**********
* 653040 -> ANNUALISATION DE LA REDUCTION FILLON (S65.G30.40)
**********
653040
W_CHAINE = "S65.G30.40."
IF W_MONTREDUCFILLON#0 AND W_BASEREDUCFILLON#0 THEN
   W_MISENFORME=W_BASESMICREDUCFILLON "R26"
   ENR_DADSU<-1> = W_CHAINE:"001,'":W_MISENFORME:"'"
   W_MISENFORME=W_BASEREDUCFILLON "R26"
   ENR_DADSU<-1> = W_CHAINE:"002,'":W_MISENFORME:"'"
   W_MISENFORME=W_MONTREDUCFILLON "R26"
   ENR_DADSU<-1> = W_CHAINE:"003,'":W_MISENFORME:"'"
   W_TOTREDUCFILLON=W_TOTREDUCFILLON+W_MONTREDUCFILLON
END
RETURN


**********
* 654005 -> ELECTIONS PRUD'HOMALES (S65.G40.05)
**********
654005
IF W_TYPEURSSAFMSA="M" THEN RETURN
W_CHAINE = "S65.G40.05."
IF ENR_HISTORCUMULPERACT<37>="1" THEN
   READ ENR_PRUDCASPARTICLIERS FROM F.PRUDCASPARTICULIERS,W_CODEAIDANT ELSE ENR_PRUDCASPARTICLIERS=""
   IF ENR_PRUDCASPARTICULIERS<1> # "" THEN
      ENR_DADSU<-1> = W_CHAINE:"009,'0":ENR_PRUDCASPARTICULIERS<1>:"'"
   END ELSE
      ENR_DADSU<-1> = W_CHAINE:"009,'01'"
   END
   IF ENR_PRUDCASPARTICULIERS<2> # "" THEN
      ENR_DADSU<-1> = W_CHAINE:"010,'0":ENR_PRUDCASPARTICULIERS<2>:"'"
   END ELSE
      ENR_DADSU<-1> = W_CHAINE:"010,'04'"
   END		
END
RETURN


**********
* 654006 -> FONDS NATIONAUX DE COMPENSATION F.N.C. (S65.G40.06)
**********
654006
W_CHAINE = "S65.G40.06."
IF W_MONTSUPPLFAMILIAL#"" AND W_MONTSUPPLFAMILIAL>0 THEN
   IF W_CASCNRACL="OUI" THEN
      I=1
      W_FINFNC="NON"
      LOOP
      UNTIL W_RETRAITEGENE<1,I>="" OR W_FINFNC="OUI" DO
         IF W_RETRAITEGENE<8,I>="C" AND W_RETRAITEGENE<10,I>#"" THEN
            ENR_DADSU<-1> = W_CHAINE:"001,'":W_RETRAITEGENE<10,I>:"'"
            W_MISENFORME=W_MONTSUPPLFAMILIAL "R26"
            ENR_DADSU<-1> = W_CHAINE:"002.001,'":W_MISENFORME:"'"
            W_FINFNC="OUI"
         END
         I=I+1
      REPEAT
   END
END
RETURN


**********
* 654010 -> OUVERTURE DES DROITS A L'ASSURANCE MALADIE (S65.G40.10)
**********
654010
IF W_TYPEURSSAFMSA="M" THEN RETURN
W_CHAINE = "S65.G40.10."
* Recherche dernier mois du 1er trimestre civil ou de date  date de + de 120 heures ou de + de 120 SMIC
* Recherche dernier mois du dernier trimestre civil ou de date  date de + de 120 heures ou de + de 120 SMIC
* Recherche 1er mois de + de 60 heures ou de + de 60 SMIC
W_Trim1 = 0
W_Trim2 = 0
W_Trim3 = 0
W_Trim4 = 0
W_PREMIERMOIS60SMICHH = 0
I=1
LOOP
UNTIL W_TABCONTRATAIDANT<I>="" DO
 READ ENR_CONTRATAIDANT FROM F.CONTRAT,W_TABCONTRATAIDANT<I> ELSE ENR_CONTRATAIDANT=""
* Partie suivi de contrat prcdent
 FOR W_Inc = 1 TO DCOUNT(ENR_CONTRATAIDANT<71>, CHAR(253))
   IF ENR_CONTRATAIDANT<71,W_Inc> >= W_ANNEEMOISDEB AND ENR_CONTRATAIDANT<71,W_Inc> <= W_ANNEEMOISFIN THEN
      IF W_PREMIERMOIS60SMICHH=0 THEN
         IF ENR_CONTRATAIDANT<74,W_Inc> >= 6000 THEN W_PREMIERMOIS60SMICHH=ENR_CONTRATAIDANT<71,W_Inc>[5,2]
      END
      IF W_CODEDECALAGEPAIE="01" THEN 
         IF ENR_CONTRATAIDANT<71,W_Inc>[5,2] = "01" OR ENR_CONTRATAIDANT<71,W_Inc>[5,2] = "02" OR ENR_CONTRATAIDANT<71,W_Inc>[5,2] = "03" THEN
            W_Trim1 = W_Trim1 + ENR_CONTRATAIDANT<74,W_Inc>
         END ELSE
            IF ENR_CONTRATAIDANT<71,W_Inc>[5,2] = "04" OR ENR_CONTRATAIDANT<71,W_Inc>[5,2] = "05" OR ENR_CONTRATAIDANT<71,W_Inc>[5,2] = "06" THEN
               W_Trim2 = W_Trim2 + ENR_CONTRATAIDANT<74,W_Inc>
            END ELSE
               IF ENR_CONTRATAIDANT<71,W_Inc>[5,2] = "07" OR ENR_CONTRATAIDANT<71,W_Inc>[5,2] = "08" OR ENR_CONTRATAIDANT<71,W_Inc>[5,2] = "09" THEN
                  W_Trim3 = W_Trim3 + ENR_CONTRATAIDANT<74,W_Inc>
               END ELSE
                  IF ENR_CONTRATAIDANT<71,W_Inc>[5,2] = "10" OR ENR_CONTRATAIDANT<71,W_Inc>[5,2] = "11" OR ENR_CONTRATAIDANT<71,W_Inc>[5,2] = "12" THEN
                     W_Trim4 = W_Trim4 + ENR_CONTRATAIDANT<74,W_Inc>
                  END
               END
            END
         END 
      END ELSE
         IF ENR_CONTRATAIDANT<71,W_Inc>[5,2] = "12" OR ENR_CONTRATAIDANT<71,W_Inc>[5,2] = "01" OR ENR_CONTRATAIDANT<71,W_Inc>[5,2] = "02" THEN
            W_Trim1 = W_Trim1 + ENR_CONTRATAIDANT<74,W_Inc>
         END ELSE
            IF ENR_CONTRATAIDANT<71,W_Inc>[5,2] = "03" OR ENR_CONTRATAIDANT<71,W_Inc>[5,2] = "04" OR ENR_CONTRATAIDANT<71,W_Inc>[5,2] = "05" THEN
               W_Trim2 = W_Trim2 + ENR_CONTRATAIDANT<74,W_Inc>
            END ELSE
               IF ENR_CONTRATAIDANT<71,W_Inc>[5,2] = "06" OR ENR_CONTRATAIDANT<71,W_Inc>[5,2] = "07" OR ENR_CONTRATAIDANT<71,W_Inc>[5,2] = "08" THEN
                  W_Trim3 = W_Trim3 + ENR_CONTRATAIDANT<74,W_Inc>
               END ELSE
                  IF ENR_CONTRATAIDANT<71,W_Inc>[5,2] = "09" OR ENR_CONTRATAIDANT<71,W_Inc>[5,2] = "10" OR ENR_CONTRATAIDANT<71,W_Inc>[5,2] = "11" THEN
                     W_Trim4 = W_Trim4 + ENR_CONTRATAIDANT<74,W_Inc>
                  END
               END
            END
         END 
      END
   END
 NEXT W_Inc
* Partie suivi de contrat en cours
 FOR W_Inc = 1 TO DCOUNT(ENR_CONTRATAIDANT<76>, CHAR(253))
   IF ENR_CONTRATAIDANT<76,W_Inc> >= W_ANNEEMOISDEB AND ENR_CONTRATAIDANT<76,W_Inc> <= W_ANNEEMOISFIN THEN
      IF W_PREMIERMOIS60SMICHH=0 THEN
         IF ENR_CONTRATAIDANT<79,W_Inc> >= 6000 THEN W_PREMIERMOIS60SMICHH=ENR_CONTRATAIDANT<76,W_Inc>[5,2]
      END
      IF W_CODEDECALAGEPAIE="01" THEN 
         IF ENR_CONTRATAIDANT<76,W_Inc>[5,2] = "01" OR ENR_CONTRATAIDANT<76,W_Inc>[5,2] = "02" OR ENR_CONTRATAIDANT<76,W_Inc>[5,2] = "03" THEN
            W_Trim1 = W_Trim1 + ENR_CONTRATAIDANT<79,W_Inc>
         END ELSE
            IF ENR_CONTRATAIDANT<76,W_Inc>[5,2] = "04" OR ENR_CONTRATAIDANT<76,W_Inc>[5,2] = "05" OR ENR_CONTRATAIDANT<76,W_Inc>[5,2] = "06" THEN
               W_Trim2 = W_Trim2 + ENR_CONTRATAIDANT<79,W_Inc>
            END ELSE
               IF ENR_CONTRATAIDANT<76,W_Inc>[5,2] = "07" OR ENR_CONTRATAIDANT<76,W_Inc>[5,2] = "08" OR ENR_CONTRATAIDANT<76,W_Inc>[5,2] = "09" THEN
                  W_Trim3 = W_Trim3 + ENR_CONTRATAIDANT<79,W_Inc>
               END ELSE
                  IF ENR_CONTRATAIDANT<76,W_Inc>[5,2] = "10" OR ENR_CONTRATAIDANT<76,W_Inc>[5,2] = "11" OR ENR_CONTRATAIDANT<76,W_Inc>[5,2] = "12" THEN
                     W_Trim4 = W_Trim4 + ENR_CONTRATAIDANT<79,W_Inc>
                  END
               END
            END
         END 
      END ELSE
         IF ENR_CONTRATAIDANT<76,W_Inc>[5,2] = "12" OR ENR_CONTRATAIDANT<76,W_Inc>[5,2] = "01" OR ENR_CONTRATAIDANT<76,W_Inc>[5,2] = "02" THEN
            W_Trim1 = W_Trim1 + ENR_CONTRATAIDANT<79,W_Inc>
         END ELSE
            IF ENR_CONTRATAIDANT<76,W_Inc>[5,2] = "03" OR ENR_CONTRATAIDANT<76,W_Inc>[5,2] = "04" OR ENR_CONTRATAIDANT<76,W_Inc>[5,2] = "05" THEN
               W_Trim2 = W_Trim2 + ENR_CONTRATAIDANT<79,W_Inc>
            END ELSE
               IF ENR_CONTRATAIDANT<76,W_Inc>[5,2] = "06" OR ENR_CONTRATAIDANT<76,W_Inc>[5,2] = "07" OR ENR_CONTRATAIDANT<76,W_Inc>[5,2] = "08" THEN
                  W_Trim3 = W_Trim3 + ENR_CONTRATAIDANT<79,W_Inc>
               END ELSE
                  IF ENR_CONTRATAIDANT<76,W_Inc>[5,2] = "09" OR ENR_CONTRATAIDANT<76,W_Inc>[5,2] = "10" OR ENR_CONTRATAIDANT<76,W_Inc>[5,2] = "11" THEN
                     W_Trim4 = W_Trim4 + ENR_CONTRATAIDANT<79,W_Inc>
                  END
               END
            END
         END 
      END
   END
 NEXT W_Inc
 I=I+1
REPEAT
W_PREMIERMOIS120SMICHH = 0
W_DERNIERMOIS120SMICHH = 0
IF W_Trim1 / 100 > 120 THEN
   IF W_CODEDECALAGEPAIE="01" THEN 
      W_PREMIERMOIS120SMICHH = "03"
      W_DERNIERMOIS120SMICHH = "03"
   END ELSE
      W_PREMIERMOIS120SMICHH = "02"
      W_DERNIERMOIS120SMICHH = "02"
   END
END
IF W_Trim2 / 100 > 120 THEN
   IF W_CODEDECALAGEPAIE="01" THEN 
      IF W_PREMIERMOIS120SMICHH = 0 THEN W_PREMIERMOIS120SMICHH = "06"
      W_DERNIERMOIS120SMICHH = "06"
   END ELSE
      IF W_PREMIERMOIS120SMICHH = 0 THEN W_PREMIERMOIS120SMICHH = "05"
      W_DERNIERMOIS120SMICHH = "05"
   END
END
IF W_Trim3 / 100 > 120 THEN
   IF W_CODEDECALAGEPAIE="01" THEN 
      IF W_PREMIERMOIS120SMICHH = 0 THEN W_PREMIERMOIS120SMICHH = "09"
      W_DERNIERMOIS120SMICHH = "09"
   END ELSE
      IF W_PREMIERMOIS120SMICHH = 0 THEN W_PREMIERMOIS120SMICHH = "08"
      W_DERNIERMOIS120SMICHH = "08"
   END
END
IF W_Trim4 / 100 > 120 THEN
   IF W_CODEDECALAGEPAIE="01" THEN 
      IF W_PREMIERMOIS120SMICHH = 0 THEN W_PREMIERMOIS120SMICHH = "12"
      W_DERNIERMOIS120SMICHH = "12"
   END ELSE
      IF W_PREMIERMOIS120SMICHH = 0 THEN W_PREMIERMOIS120SMICHH = "11"
      W_DERNIERMOIS120SMICHH = "11"
   END
END
IF W_PREMIERMOIS60SMICHH=0 THEN W_PREMIERMOIS60SMICHH=W_DERNIERMOIS60SMICHH
W_023_001=""
W_023_002=""
W_023_003=""
IF W_CUMULHEURESPAYEES <= 0 THEN
   ENR_DADSU<-1> = W_CHAINE:"023.001,'99'"
   W_023_001="99"
   ENR_DADSU<-1> = W_CHAINE:"023.002,'99'"
   W_023_002="99"
   ENR_DADSU<-1> = W_CHAINE:"023.003,'99'"
   W_023_003="99"
   ENR_DADSU<-1> = W_CHAINE:"023.004,'99'"
   ENR_DADSU<-1> = W_CHAINE:"023.005,'99'"
END ELSE
   IF (W_CUMULHEURESPAYEES > 120000) OR (INT(W_CUMULBRUT / W_SMICENVIGUEUR) > 2030) THEN
      ENR_DADSU<-1> = W_CHAINE:"023.001,'01'"
      ENR_DADSU<-1> = W_CHAINE:"023.002,'98'"
      ENR_DADSU<-1> = W_CHAINE:"023.003,'98'"
      IF W_PREMIERMOIS120SMICHH = 0 THEN
         ENR_DADSU<-1> = W_CHAINE:"023.004,'99'"
         IF W_DERNIERMOIS120SMICHH = 0 THEN
            ENR_DADSU<-1> = W_CHAINE:"023.005,'99'"
         END ELSE
            IF W_PREMIERMOIS60SMICHH MATCH "1N" THEN W_PREMIERMOIS60SMICHH="0":W_PREMIERMOIS60SMICHH
            ENR_DADSU<-1> = W_CHAINE:"023.005,'":W_PREMIERMOIS60SMICHH:"'"
         END
      END ELSE
          IF W_PREMIERMOIS120SMICHH MATCH "1N" THEN W_PREMIERMOIS120SMICHH="0":W_PREMIERMOIS120SMICHH
          ENR_DADSU<-1> = W_CHAINE:"023.004,'":W_PREMIERMOIS120SMICHH:"'"
          ENR_DADSU<-1> = W_CHAINE:"023.005,'98'"
      END
   END ELSE
      ENR_DADSU<-1> = W_CHAINE : "023.001,'99'"
      W_023_001="99"
      IF W_DERNIERMOIS120SMICHH = 0 THEN
         ENR_DADSU<-1> = W_CHAINE:"023.002,'99'"
         W_023_002="99"
         IF W_DERNIERMOIS60SMICHH = 0 THEN
            ENR_DADSU<-1> = W_CHAINE:"023.003,'99'"
            W_023_003="99"
         END ELSE
            IF W_DERNIERMOIS60SMICHH MATCH "1N" THEN W_DERNIERMOIS60SMICHH="0":W_DERNIERMOIS60SMICHH
            ENR_DADSU<-1> = W_CHAINE:"023.003,'":W_DERNIERMOIS60SMICHH:"'"
         END
      END ELSE
         IF W_DERNIERMOIS120SMICHH MATCH "1N" THEN W_DERNIERMOIS120SMICHH="0":W_DERNIERMOIS120SMICHH
         ENR_DADSU<-1> = W_CHAINE:"023.002,'":W_DERNIERMOIS120SMICHH:"'"
         ENR_DADSU<-1> = W_CHAINE:"023.003,'98'"
      END
      IF W_PREMIERMOIS120SMICHH = 0 THEN
         ENR_DADSU<-1> = W_CHAINE:"023.004,'99'"
         IF W_PREMIERMOIS60SMICHH = 0 THEN
            ENR_DADSU<-1> = W_CHAINE:"023.005,'99'"
         END ELSE
            IF W_PREMIERMOIS60SMICHH MATCH "1N" THEN W_PREMIERMOIS60SMICHH="0":W_PREMIERMOIS60SMICHH
            IF W_023_001="99" AND W_023_002="99" AND W_023_003="99" THEN
               ENR_DADSU<-1> = W_CHAINE:"023.005,'99'"
            END ELSE
               ENR_DADSU<-1> = W_CHAINE:"023.005,'":W_PREMIERMOIS60SMICHH:"'"
            END
         END
      END ELSE
         IF W_PREMIERMOIS120SMICHH MATCH "1N" THEN W_PREMIERMOIS120SMICHH="0":W_PREMIERMOIS120SMICHH
         ENR_DADSU<-1> = W_CHAINE:"023.004,'":W_PREMIERMOIS120SMICHH:"'"
         ENR_DADSU<-1> = W_CHAINE:"023.005,'98'"
      END
   END
END
RETURN


**********
* 654305 -> COTISATIONS NORMALES CNRACL (S65.G43.05)
**********
654305
W_CHAINE = "S65.G43.05."
W_COTISNONEXOCNRACL=0
IF W_CASCNRACL="OUI" THEN
   W_MISENFORME=(W_COTISSALCNRACLEXOSANSNBI+W_COTISSALCNRACLNONEXOSANSNBI) "R26"
   ENR_DADSU<-1> = W_CHAINE:"002.001,'":W_MISENFORME:"'"
   W_MISENFORME=(W_BASECNRACLEXOSANSNBI+W_BASECNRACLNONEXOSANSNBI) "R26"
   ENR_DADSU<-1> = W_CHAINE:"002.002,'":W_MISENFORME:"'"
   IF ENR_TDSPARAMCNRACL<7>#"" AND ENR_TDSPARAMCNRACL<7>#"0" THEN 
      W_COTISNONEXOCNRACL=INT((W_BASECNRACLEXOSANSNBI * ENR_TDSPARAMCNRACL<7>) / 100000 + 1/2)
   END ELSE
      W_COTISNONEXOCNRACL=0
   END
   W_MISENFORME=(W_COTISNONEXOCNRACL+W_COTISPATROCNRACLEXOSANSNBI+W_COTISPATROCNRACLNONEXOSANSNBI) "R26"
   ENR_DADSU<-1> = W_CHAINE:"003.001,'":W_MISENFORME:"'"
   W_MISENFORME=(W_BASECNRACLEXOSANSNBI+W_BASECNRACLNONEXOSANSNBI) "R26"
   ENR_DADSU<-1> = W_CHAINE:"003.002,'":W_MISENFORME:"'"
END
RETURN


**********
* 654307 -> EXONERATION OU DEDUCTION DE COTISATIONS CNRACL (EXO AAD et HEURES SUPPLEMENTAIRES) (S65.G43.07)
**********
654307
W_CHAINE = "S65.G43.07."
IF W_CASCNRACL="OUI" THEN
   IF W_COTISNONEXOCNRACL#0 THEN
      ENR_DADSU<-1> = W_CHAINE:"001,'01'"
      W_MISENFORME=W_COTISNONEXOCNRACL "R26"
      ENR_DADSU<-1> = W_CHAINE:"002,'":W_MISENFORME:"'"
      W_MISENFORME=W_BASECNRACLEXOSANSNBI "R26"
      ENR_DADSU<-1> = W_CHAINE:"003,'":W_MISENFORME:"'"
   END
   IF W_MONTSUPPLCOMPL#0 THEN
      ENR_DADSU<-1> = W_CHAINE:"001,'02'"
      W_MISENFORME=W_REDUCCOTISSAL908 "R26"
      ENR_DADSU<-1> = W_CHAINE:"002,'":W_MISENFORME:"'"
      W_MISENFORME=W_MONTSUPPLCOMPL "R26"
      ENR_DADSU<-1> = W_CHAINE:"003,'":W_MISENFORME:"'"
   END
END
RETURN


**********
* 654310 -> AUTRES COTISATIONS CNRACL (N.B.I.) (S65.G43.10)
**********
654310
W_CHAINE = "S65.G43.10."
IF W_CASNBI="OUI" THEN
   ENR_DADSU<-1> = W_CHAINE:"001,'20'"
   W_MISENFORME=W_COTISSALNBI "R26"
   ENR_DADSU<-1> = W_CHAINE:"002.001,'":W_MISENFORME:"'"
   W_MISENFORME=W_BASENBI "R26"
   ENR_DADSU<-1> = W_CHAINE:"002.002,'":W_MISENFORME:"'"
   W_MISENFORME=W_COTISPATRONBI "R26"
   ENR_DADSU<-1> = W_CHAINE:"003.001,'":W_MISENFORME:"'"
   W_MISENFORME=W_BASENBI "R26"
   ENR_DADSU<-1> = W_CHAINE:"003.002,'":W_MISENFORME:"'"
END
RETURN


**********
* 655305 -> COTISATIONS R.A.F.P. (S65.G53.05)
**********
655305
W_CHAINE = "S65.G53.05."
IF W_CASRAFP="OUI" THEN
   W_MISENFORME=W_BASERAFP "R26"
   ENR_DADSU<-1> = W_CHAINE:"008.001,'":W_MISENFORME:"'"
   W_MISENFORME=W_COTISSALRAFP "R26"
   ENR_DADSU<-1> = W_CHAINE:"009.001,'":W_MISENFORME:"'"
   W_MISENFORME=W_COTISPATRORAFP "R26"
   ENR_DADSU<-1> = W_CHAINE:"010.001,'":W_MISENFORME:"'"
END
RETURN


**********
* 700500 -> ETABLISSEMENT VERSANT LES HONORAIRES (S70.G05.00)
**********
700500
W_CHAINE = "S70.G05.00."
EXECUTE 'SELECT TDSHONORAIRES AVEC @ID = "':W_ANNEE:W_CODEENTITE:']" AND AVEC 32 = "':W_CODEENTITE:W_CODEETABL:'"'
EXECUTE 'SAUVE-LISTE LISTETDSHONO'
EXECUTE "LISTE LISTETDSHONO" RETURNING W_MSGHONO
IF W_MSGHONO<1> = 209 THEN
   EXECUTE 'EFFACER-LISTE LISTETDSHONO'
   RETURN
END
SELECT F.TDSHONORAIRES TO LISTETDSHONO
W_PASSAGEHONO=0
W_FINHONO = "NON"
LOOP
   READNEXT CLEHONO FROM LISTETDSHONO ELSE W_FINHONO = "OUI"
UNTIL W_FINHONO = "OUI" DO
   READ ENR_TDSHONORAIRES FROM F.TDSHONORAIRES,CLEHONO ELSE ENR_TDSHONORAIRES = ""
* Didier 12/11/2013 : non prise en compte honoraires sans lments de dclaration
   IF ENR_TDSHONORAIRES<16>#0 OR ENR_TDSHONORAIRES<17>#0 OR ENR_TDSHONORAIRES<18>#0 OR ENR_TDSHONORAIRES<19>#0 OR ENR_TDSHONORAIRES<20>#0 OR ENR_TDSHONORAIRES<21>#0 OR ENR_TDSHONORAIRES<22>#0 OR ENR_TDSHONORAIRES<23>#0 OR ENR_TDSHONORAIRES<24>#0 OR ENR_TDSHONORAIRES<25>#0 OR ENR_TDSHONORAIRES<27>#0 OR ENR_TDSHONORAIRES<29>#0 THEN
      IF W_PASSAGEHONO=0 THEN
         W_PASSAGEHONO=1
         ENR_DADSU<-1> = W_CHAINE:"001,'":W_SIRETETABL:"'"
         ENR_DADSU<-1> = W_CHAINE:"002,'3112":W_ANNEE:"'"
      END
      GOSUB 701000
   END
REPEAT
EXECUTE 'EFFACER-LISTE LISTETDSHONO'
RETURN


**********
* 701000 -> BENEFICIAIRE DES HONORAIRES (S70.G10.00)
**********
701000
W_CHAINE = "S70.G10.00."
W_TXTACONVERTIR=ENR_TDSHONORAIRES<33>
GOSUB 9999991
IF W_TXTACONVERTIR#"" THEN
   ENR_DADSU<-1> = W_CHAINE:"001,'":W_TXTACONVERTIR:"'"
END ELSE
   W_TXTACONVERTIR=ENR_TDSHONORAIRES<1>
   GOSUB 9999991
   ENR_DADSU<-1> = W_CHAINE:"001,'":W_TXTACONVERTIR:"'"
END
W_TXTACONVERTIR=ENR_TDSHONORAIRES<1>
GOSUB 9999991
IF ENR_TDSHONORAIRES<2> = "O" THEN 
   ENR_DADSU<-1> = W_CHAINE:"003.001,'":ENR_TDSHONORAIRES<3>[1,9]:"'"
   ENR_DADSU<-1> = W_CHAINE:"003.002,'":ENR_TDSHONORAIRES<3>[10,5]:"'"
   ENR_DADSU<-1> = W_CHAINE:"003.003,'":W_TXTACONVERTIR:"'"
END ELSE 
   ENR_DADSU<-1> = W_CHAINE:"002.001,'":W_TXTACONVERTIR:"'"
   W_TXTACONVERTIR=ENR_TDSHONORAIRES<31>
   GOSUB 9999991
   IF W_TXTACONVERTIR # "" THEN 
      ENR_DADSU<-1> = W_CHAINE:"002.002,'":W_TXTACONVERTIR:"'"
   END ELSE 
      ENR_DADSU<-1> = W_CHAINE:"002.002,'x'"
   END		
END
W_TXTACONVERTIR=ENR_TDSHONORAIRES<8>
GOSUB 9999991
IF W_TXTACONVERTIR # "" THEN ENR_DADSU<-1> = W_CHAINE:"004.001,'":W_TXTACONVERTIR:"'"
W_TXTACONVERTIR=ENR_TDSHONORAIRES<4>
IF ENR_TDSHONORAIRES<5>[1,1] = "B" OR ENR_TDSHONORAIRES<5>[1,1] = "T" OR ENR_TDSHONORAIRES<5>[1,1] = "Q" THEN W_TXTACONVERTIR = W_TXTACONVERTIR:" ":ENR_TDSHONORAIRES<5>[1,1]
IF ENR_TDSHONORAIRES<6> # "" THEN W_TXTACONVERTIR = W_TXTACONVERTIR:" ":ENR_TDSHONORAIRES<6>
IF ENR_TDSHONORAIRES<7> # "" THEN W_TXTACONVERTIR = W_TXTACONVERTIR:" ":ENR_TDSHONORAIRES<7>
GOSUB 9999991
IF W_TXTACONVERTIR # "" THEN ENR_DADSU<-1> = W_CHAINE:"004.006,'":W_TXTACONVERTIR:"'"
W_TXTACONVERTIR=ENR_TDSHONORAIRES<9>
GOSUB 9999991
* Didier 15/11/2012 : gestion code postal avec cedex
IF ENR_TDSHONORAIRES<11>="1" AND LEN(W_TXTACONVERTIR)=5 THEN
   IF W_TXTACONVERTIR[3,1]="0" THEN
      W_TXTACONVERTIR=W_TXTACONVERTIR[1,3]:"00"
   END ELSE
      W_TXTACONVERTIR=W_TXTACONVERTIR[1,4]:"0"
   END
END
ENR_DADSU<-1> = W_CHAINE:"004.010,'":W_TXTACONVERTIR:"'"
W_TXTACONVERTIR=ENR_TDSHONORAIRES<10>
GOSUB 9999991
ENR_DADSU<-1> = W_CHAINE:"004.012,'":W_TXTACONVERTIR:"'"
IF ENR_TDSHONORAIRES<30> # "" AND ENR_TDSHONORAIRES<30> # 0 THEN ENR_DADSU<-1> = W_CHAINE:"011,'":ENR_TDSHONORAIRES<30>:"'"
IF ENR_TDSHONORAIRES<29> # "" AND ENR_TDSHONORAIRES<29> # 0 THEN ENR_DADSU<-1> = W_CHAINE:"013,'":ENR_TDSHONORAIRES<29>:"'"
IF ENR_TDSHONORAIRES<25> # "" AND ENR_TDSHONORAIRES<25> # "0" THEN
   W_CHAINE1 = "S70.G10.05."
   IF ENR_TDSHONORAIRES<26> = "N" THEN ENR_DADSU<-1> = W_CHAINE1:"001,'01'"
   IF ENR_TDSHONORAIRES<26> = "L" THEN ENR_DADSU<-1> = W_CHAINE1:"001,'02'"
   IF ENR_TDSHONORAIRES<26> = "V" THEN ENR_DADSU<-1> = W_CHAINE1:"001,'03'"
   IF ENR_TDSHONORAIRES<26> = "A" THEN ENR_DADSU<-1> = W_CHAINE1:"001,'09'"
   W_TOTALHONORAIRES = W_TOTALHONORAIRES + ENR_TDSHONORAIRES<25>*100
   W_MISENFORME=ENR_TDSHONORAIRES<25>*100 "R26"
   ENR_DADSU<-1> = W_CHAINE1:"002,'":W_MISENFORME:"'"
END
IF ENR_TDSHONORAIRES<27> # "" AND ENR_TDSHONORAIRES<27> # "0" THEN
   W_CHAINE1 = "S70.G10.10."
   IF ENR_TDSHONORAIRES<28> = "F" THEN ENR_DADSU<-1> = W_CHAINE1:"001,'01'"
   IF ENR_TDSHONORAIRES<28> = "R" THEN ENR_DADSU<-1> = W_CHAINE1:"001,'02'"
   IF ENR_TDSHONORAIRES<28> = "P" THEN ENR_DADSU<-1> = W_CHAINE1:"001,'03'"
   W_TOTALHONORAIRES = W_TOTALHONORAIRES + ENR_TDSHONORAIRES<27>*100
   W_MISENFORME=ENR_TDSHONORAIRES<27>*100 "R26"
   ENR_DADSU<-1> = W_CHAINE1:"002,'":W_MISENFORME:"'"
END
W_CHAINE1 = "S70.G10.15."
FOR P = 16 TO 24
   IF P = 16 THEN W_CODETDSHONORAIRES = "01"
   IF P = 17 THEN W_CODETDSHONORAIRES = "02"
   IF P = 18 THEN W_CODETDSHONORAIRES = "03"
   IF P = 19 THEN W_CODETDSHONORAIRES = "04"
   IF P = 20 THEN W_CODETDSHONORAIRES = "05"
   IF P = 21 THEN W_CODETDSHONORAIRES = "06"
   IF P = 22 THEN W_CODETDSHONORAIRES = "07"
   IF P = 23 THEN W_CODETDSHONORAIRES = "08"
   IF P = 24 THEN W_CODETDSHONORAIRES = "11"
   IF ENR_TDSHONORAIRES<P> # "" AND ENR_TDSHONORAIRES<P> # "0" THEN
      ENR_DADSU<-1> = W_CHAINE1:"001,'":W_CODETDSHONORAIRES:"'"
      W_MISENFORME=ENR_TDSHONORAIRES<P>*100 "R26"
      ENR_DADSU<-1> = W_CHAINE1:"002,'":W_MISENFORME:"'"
      W_TOTALHONORAIRES = W_TOTALHONORAIRES + ENR_TDSHONORAIRES<P>*100
   END
NEXT P 
RETURN


**********
* 800100 -> IDENTIFICATION INSEE DES ETABLISSEMENTS (S80.G01.00)
**********
800100
W_CHAINE = "S80.G01.00."
ENR_DADSU<-1> = W_CHAINE:"001.002,'":W_SIRETETABL:"'"
IF W_TYPETRAIT="2" AND W_TYPEACT="M" THEN
   ENR_DADSU<-1> = W_CHAINE:"002,'":W_NOMPARTEMPL:"'"
   W_TXTACONVERTIR=ENR_CIVILAIDE<9>
   GOSUB 9999991
   IF W_TXTACONVERTIR # "" THEN ENR_DADSU<-1> = W_CHAINE:"003.001,'":W_TXTACONVERTIR:"'"
   W_TXTACONVERTIR=ENR_CIVILAIDE<5>
   IF ENR_CIVILAIDE<6>[1,1] = "B" OR ENR_CIVILAIDE<6>[1,1] = "T" OR ENR_CIVILAIDE<6>[1,1] = "Q" THEN W_TXTACONVERTIR = W_TXTACONVERTIR:" ":ENR_CIVILAIDE<6>[1,1]
   IF ENR_CIVILAIDE<7> # "" THEN W_TXTACONVERTIR = W_TXTACONVERTIR:" ":ENR_CIVILAIDE<7>
   IF ENR_CIVILAIDE<8> # "" THEN W_TXTACONVERTIR = W_TXTACONVERTIR:" ":ENR_CIVILAIDE<8>
   GOSUB 9999991
   IF W_TXTACONVERTIR # "" THEN ENR_DADSU<-1> = W_CHAINE:"003.006,'":W_TXTACONVERTIR:"'"
   W_TXTACONVERTIR=ENR_CIVILAIDE<10>
   GOSUB 9999991
   ENR_DADSU<-1> = W_CHAINE:"003.010,'":W_TXTACONVERTIR:"'"
   W_TXTACONVERTIR=ENR_CIVILAIDE<11>
   GOSUB 9999991
* Didier 15/02/2012 : remplacement tiret par espace
   FOR Z = 1 TO LEN(W_TXTACONVERTIR)
      IF SEQ(W_TXTACONVERTIR[Z,1]) = 45 THEN W_TXTACONVERTIR = W_TXTACONVERTIR[1,Z-1]:" ":W_TXTACONVERTIR[Z+1,999]
   NEXT Z
   ENR_DADSU<-1> = W_CHAINE:"003.012,'":W_TXTACONVERTIR:"'"
END ELSE 
   ENR_DADSU<-1> = W_CHAINE:"002,'":ENR_ETABLISSEMENT<2>:"'"
   W_TXTACONVERTIR=ENR_ETABLISSEMENT<7>
   GOSUB 9999991
   IF W_TXTACONVERTIR # "" THEN 
      ENR_DADSU<-1> = W_CHAINE:"003.001,'":W_TXTACONVERTIR:"'"
   END ELSE
      IF W_COMPLASSO # "" THEN ENR_DADSU<-1> = W_CHAINE:"003.001,'":W_COMPLASSO:"'"
   END
   W_TXTACONVERTIR=ENR_ETABLISSEMENT<3>
   IF ENR_ETABLISSEMENT<4>[1,1] = "B" OR ENR_ETABLISSEMENT<4>[1,1] = "T" OR ENR_ETABLISSEMENT<4>[1,1] = "Q" THEN W_TXTACONVERTIR = W_TXTACONVERTIR:" ":ENR_ETABLISSEMENT<4>[1,1]
   IF ENR_ETABLISSEMENT<5> # "" THEN W_TXTACONVERTIR = W_TXTACONVERTIR:" ":ENR_ETABLISSEMENT<5>
   IF ENR_ETABLISSEMENT<6> # "" THEN W_TXTACONVERTIR = W_TXTACONVERTIR:" ":ENR_ETABLISSEMENT<6>
   GOSUB 9999991
   IF W_TXTACONVERTIR # "" THEN ENR_DADSU<-1> = W_CHAINE:"003.006,'":W_TXTACONVERTIR:"'"
   W_TXTACONVERTIR=ENR_ETABLISSEMENT<8>
   GOSUB 9999991
   IF W_TXTACONVERTIR # "" THEN
* Didier 15/11/2012 : gestion code postal avec cedex
      IF ENR_ETABLISSEMENT<10>="1" AND LEN(W_TXTACONVERTIR)=5 THEN
         IF W_TXTACONVERTIR[3,1]="0" THEN
            W_TXTACONVERTIR=W_TXTACONVERTIR[1,3]:"00"
         END ELSE
            W_TXTACONVERTIR=W_TXTACONVERTIR[1,4]:"0"
         END
      END
      ENR_DADSU<-1> = W_CHAINE:"003.010,'":W_TXTACONVERTIR:"'"
   END ELSE
      ENR_DADSU<-1> = W_CHAINE:"003.010,'":W_CODEPOSTASSO:"'"
   END
   W_TXTACONVERTIR=ENR_ETABLISSEMENT<9>
   GOSUB 9999991
   IF W_TXTACONVERTIR # "" THEN 
      ENR_DADSU<-1> = W_CHAINE:"003.012,'":W_TXTACONVERTIR:"'"
   END ELSE
      ENR_DADSU<-1> = W_CHAINE:"003.012,'":W_VILLEASSO:"'"
   END
   IF ENR_ASSOCIATION<25> = 0 THEN
      W_RECH = W_ANNEE:"12"
   END ELSE
      W_RECH = W_ANNEE:"11"
   END
   W_RANGEFFETAB = 0
   W_RANGEFFETAB = INT(((INDEX(ENR_ETABLISSEMENT<19>,W_RECH,1) - 1) / 6) + 1)
   IF W_RANGEFFETAB = 0 THEN W_RANGEFFETAB = 1
   IF W_TYPETRAIT="1" THEN ENR_DADSU<-1> = W_CHAINE:"004.001,'":INT((ENR_ETABLISSEMENT<17,W_RANGEFFETAB>/100)+1/2):"'"
END
IF ENR_ACTIVITES<11> = "1" THEN 
   ENR_DADSU<-1> = W_CHAINE:"005,'01'"		
END ELSE
   ENR_DADSU<-1> = W_CHAINE:"005,'02'"
END
IF W_TYPETRAIT="2" AND W_TYPEACT="M" THEN
   ENR_DADSU<-1> = W_CHAINE:"006,'9700Z'"
END ELSE
   ENR_DADSU<-1> = W_CHAINE:"006,'":ENR_ETABLISSEMENT<15>:"'"
END
ENR_DADSU<-1> = W_CHAINE:"007.001,'04'"
RETURN


**********
* 806200 -> TAXE + CONTRINUTION D'APPRENTISSAGE + PARTICIPATION A LA FORMATION PROFESSIONNELLE CONTINUE (S80.G62.00)
**********
806200
W_CHAINE = "S80.G62.00."
I=1
LOOP
UNTIL W_TABETAB<1,I>[1,10]=W_ANNEE:W_CODEENTITE:W_CODEETABL OR W_TABETAB<1,I>[1,10]="" DO
   I=I+1
REPEAT
IF W_TABETAB<1,I>[1,10]=W_ANNEE:W_CODEENTITE:W_CODEETABL THEN
   IF INT(W_TABETAB<4,I>)#0 AND W_TABETAB<4,I>#"" THEN
      ENR_DADSU<-1> = W_CHAINE:"001,'01'"
      W_MISENFORME=W_TABETAB<4,I>*100 "R26"
      ENR_DADSU<-1> = W_CHAINE:"002,'":W_MISENFORME:"'"
   END ELSE
      ENR_DADSU<-1> = W_CHAINE:"001,'02'"
   END
END
ENR_DADSU<-1> = W_CHAINE:"003,'02'"
IF INT(W_TABETAB<6,I>)#0 AND W_TABETAB<6,I>#"" THEN
   ENR_DADSU<-1> = W_CHAINE:"005,'01'"
   IF INT(W_TABETAB<5,I>)#0 AND W_TABETAB<5,I>#"" THEN
      W_MISENFORME=W_TABETAB<5,I>*100 "R26"
      ENR_DADSU<-1> = W_CHAINE:"006,'":W_MISENFORME:"'"
   END
   W_MISENFORME=W_TABETAB<6,I>*100 "R26"
   ENR_DADSU<-1> = W_CHAINE:"007,'":W_MISENFORME:"'"
END ELSE
   ENR_DADSU<-1> = W_CHAINE:"005,'02'"
END
IF W_TABETAB<1,I>[1,10]=W_ANNEE:W_CODEENTITE:W_CODEETABL THEN
   IF INT(W_TABETAB<8,I>)#0 AND W_TABETAB<8,I>#"" THEN
      ENR_DADSU<-1> = W_CHAINE:"008,'01'"
      W_MISENFORME=W_TABETAB<8,I>*100 "R26"
      ENR_DADSU<-1> = W_CHAINE:"009,'":W_MISENFORME:"'"
   END ELSE
      ENR_DADSU<-1> = W_CHAINE:"008,'02'"
   END
END
RETURN


**********
* 900100 -> TOTAL DE L'ENVOI (S90.G01.00)
**********
900100
W_CHAINE = "S90.G01.00."
IF W_DECLARIRCANTECCNRACL="OUI" THEN
   RECHDECLAR=1
   LOOP
   UNTIL ENR_DADSU<RECHDECLAR>="" OR ENR_DADSU<RECHDECLAR>[1,18]="S20.G01.00.004.001" DO
      RECHDECLAR=RECHDECLAR+1
   REPEAT
   IF ENR_DADSU<RECHDECLAR>[1,18]="S20.G01.00.004.001" THEN ENR_DADSU<RECHDECLAR>="S20.G01.00.004.001,'02'" 
END
ENR_DADSU<-1> = W_CHAINE:"001,'":DCOUNT(ENR_DADSU,CHAR(254))+2:"'"
ENR_DADSU<-1> = W_CHAINE:"002,'":W_NBSTRUCTURES20:"'"
RETURN


**********
* 911111 -> EPARGNE SALARIALE POUR AIDANT SANS CONTRAT SUR PERIODE DADS 
**********
911111
LISTTDSEPARGNESAL=""
EXECUTE 'SSELECT TDSEPARGNESAL AVEC 0 = "':W_ANNEE:W_CODEENTITE:']" AND AVEC 4 = ""'
EXECUTE 'SAUVE-LISTE LISTTDSEPARGNESAL'
EXECUTE "LISTE LISTTDSEPARGNESAL" RETURNING MSGCODE
IF MSGCODE<1>#209 THEN
   SELECT F.TDSEPARGNESAL TO LISTTDSEPARGNESAL
   W_FINTDSEPARGNESAL = "NON"
   W_TRAITEPARGNESAL="OUI"
   LOOP
      READNEXT CLETDSEPARGNESAL FROM LISTTDSEPARGNESAL ELSE W_FINTDSEPARGNESAL = "OUI"
   UNTIL W_FINTDSEPARGNESAL = "OUI" DO
      W_CODEAIDANT=CLETDSEPARGNESAL[8,5]
      W_TABPERIODEACTIVITE=""
      READ ENR_CIVILAIDANT FROM F.CIVILAIDANT,W_CODEAIDANT ELSE ENR_CIVILAIDANT=""
      GOSUB 300100
      ENR_HISTORCUMULPERACT=""
      GOSUB 4001001
      W_CHAINE = "S40.G10.00."
      ENR_DADSU<-1> = W_CHAINE:"005,'10'"
      ENR_DADSU<-1> = W_CHAINE:"008.001,'03'"
      ENR_DADSU<-1> = W_CHAINE:"008.002,'03'"
      ENR_DADSU<-1> = W_CHAINE:"009.001,'":W_CODEDECALAGEPAIE:"'"
      ENR_DADSU<-1> = W_CHAINE:"009.002,'16'"
      ENR_DADSU<-1> = W_CHAINE:"010,'AIDE A DOMICILE'"
      W_CHAINE = "S40.G10.05."
      ENR_DADSU<-1> = W_CHAINE:"011.001,'563b'"
      ENR_DADSU<-1> = W_CHAINE:"012.001,'90'"
      ENR_DADSU<-1> = W_CHAINE:"012.002,'02'"
      ENR_DADSU<-1> = W_CHAINE:"013.004,'90'"
      ENR_DADSU<-1> = W_CHAINE:"015.001,'07'"
      ENR_DADSU<-1> = W_CHAINE:"015.002,'04'"
      ENR_DADSU<-1> = W_CHAINE:"016,'9999'"
      ENR_DADSU<-1> = W_CHAINE:"017,'0'"
      ENR_DADSU<-1> = W_CHAINE:"018,'02'"
      W_CHAINE = "S40.G15.00."
      ENR_DADSU<-1> = W_CHAINE:"001,'90'"
      ENR_DADSU<-1> = W_CHAINE:"003,'0.00'"
      W_CHAINE = "S40.G15.05."
      ENR_DADSU<-1> = W_CHAINE:"013.001,'90'"
      ENR_DADSU<-1> = W_CHAINE:"025.001,'90'"
      ENR_DADSU<-1> = W_CHAINE:"025.002,'0.00'"
      ENR_DADSU<-1> = W_CHAINE:"025.003,'0.00'"
      W_CHAINE = "S40.G20.00."
      ENR_DADSU<-1> = W_CHAINE:"018.002,'999'"
      ENR_DADSU<-1> = W_CHAINE:"018.003,'999'"
      ENR_DADSU<-1> = W_CHAINE:"018.004,'999'"
      W_CHAINE = "S40.G28.05."
      ENR_DADSU<-1> = W_CHAINE:"029.001,'0.00'"
      ENR_DADSU<-1> = W_CHAINE:"029.003,'01'"
      ENR_DADSU<-1> = W_CHAINE:"029.004,'0'"
      ENR_DADSU<-1> = W_CHAINE:"030.001,'0.00'"
      W_CSG=0
      GOSUB 403004
      GOSUB 403010
      W_CHAINE = "S40.G40.00."
      ENR_DADSU<-1> = W_CHAINE:"035.001,'0.00'"
      W_MISENFORME=W_MONTIMPOSEPARGNESAL "R26"
      ENR_DADSU<-1> = W_CHAINE:"063.001,'":W_MISENFORME:"'"
      W_TOTALGENENET = W_TOTALGENENET + W_MONTIMPOSEPARGNESAL
      W_CHAINE = "S44.G03.00."
      ENR_DADSU<-1> = W_CHAINE:"001,'03'"
      W_CHAINE = "S44.G03.05."
      I=1
      LOOP
      UNTIL W_TABRETRAITE<9,I>="03" OR W_TABRETRAITE<1,I>="" DO
         I=I+1
      REPEAT
      IF W_TABRETRAITE<9,I>="03" THEN ENR_DADSU<-1> = W_CHAINE:"001,'":W_TABRETRAITE<4,I>:"'"
      W_CHAINE = "S48.G10.00."
      ENR_DADSU<-1> = W_CHAINE:"015,'03'"
      ENR_DADSU<-1> = W_CHAINE:"016,'90'"
      ENR_DADSU<-1> = W_CHAINE:"017,'02'"
      ENR_DADSU<-1> = W_CHAINE:"018,'0.00'"
   REPEAT
END
EXECUTE "EFFACER-LISTE LISTTDSEPARGNESAL"
RETURN


**********
* 999991 -> RAPPORT D'EXECUTION TYPE TRAITEMENT DADS + GENERATION FICHIER DANS REPERTOIRE DADS-U 
**********
999991
ENR_TAMPONDADS = ""
ENR_TAMPONDADS<1> = W_NBSALDECLARE
ENR_TAMPONDADS<2> = W_TOTALGENETOT
ENR_TAMPONDADS<3> = W_TOTALGENEPLAF
ENR_TAMPONDADS<4> = W_TOTALGENEBRUTE
ENR_TAMPONDADS<5> = W_TOTALGENETAXE
ENR_TAMPONDADS<6> = W_TOTALGENETAXE1
ENR_TAMPONDADS<7> = W_TOTALGENETAXE2
ENR_TAMPONDADS<8> = W_MONTANTTAXETOT + W_MONTANTTAXETR1 + W_MONTANTTAXETR2
ENR_TAMPONDADS<8>=ENR_TAMPONDADS<8>-ENR_TDSCASPARTICULIERSDADSU<3>
ENR_TAMPONDADS<9> = W_TOTALGENECSG
ENR_TAMPONDADS<10> = W_TOTALGENENET
ENR_TAMPONDADS<11> = W_TOTALHONORAIRES
I=1
LOOP
UNTIL W_TABCASPARTRAPPORT<1,I>="" DO
   J=I+1
   LOOP
   UNTIL W_TABCASPARTRAPPORT<1,J>=W_TABCASPARTRAPPORT<1,I> OR W_TABCASPARTRAPPORT<1,J>="" DO
      J=J+1
   REPEAT
   IF W_TABCASPARTRAPPORT<1,J>=W_TABCASPARTRAPPORT<1,I> THEN
      W_TABCASPARTRAPPORT<5,I>=W_TABCASPARTRAPPORT<5,I>+W_TABCASPARTRAPPORT<5,J>
      W_TABCASPARTRAPPORT<6,I>=W_TABCASPARTRAPPORT<6,I>+W_TABCASPARTRAPPORT<6,J>
      FOR K=1 TO 7
         W_TABCASPARTRAPPORT=DELETE(W_TABCASPARTRAPPORT,K,J)
      NEXT K
      I=I-1
   END
   I=I+1
REPEAT
IF W_TOTREDUCFILLON#0 THEN
   W_TABCASPARTRAPPORT<1,-1>="00"
   W_TABCASPARTRAPPORT<5,-1>=-W_TOTREDUCFILLON
   W_TABCASPARTRAPPORT<6,-1>=0
   W_TABCASPARTRAPPORT<2,-1>="REDUCTION FILLON"
END
ENR_TAMPONDADS<17> = W_TABCASPARTRAPPORT<1>
ENR_TAMPONDADS<18> = W_TABCASPARTRAPPORT<5>
ENR_TAMPONDADS<19> = W_TABCASPARTRAPPORT<6>
ENR_TAMPONDADS<20> = W_TABCASPARTRAPPORT<2>
ENR_TAMPONDADS<22> = W_TABRETRAITERAPPORT<1>
ENR_TAMPONDADS<23> = W_TABRETRAITERAPPORT<2>
ENR_TAMPONDADS<24> = W_TABRETRAITERAPPORT<3>
ENR_TAMPONDADS<25> = W_TABRETRAITERAPPORT<4>
ENR_TAMPONDADS<26> = W_TABRETRAITERAPPORT<5>
ENR_TAMPONDADS<27> = W_TABRETRAITERAPPORT<6>
ENR_TAMPONDADS<28> = W_TABRETRAITERAPPORT<7>
ENR_TAMPONDADS<29> = W_TABPREVOYANCERAPPORT<1>
ENR_TAMPONDADS<30> = W_TABPREVOYANCERAPPORT<2>
ENR_TAMPONDADS<31> = W_TABPREVOYANCERAPPORT<3>
ENR_TAMPONDADS<32> = W_TABPREVOYANCERAPPORT<4>
ENR_TAMPONDADS<33> = W_TABPREVOYANCERAPPORT<5>
ENR_TAMPONDADS<34> = W_TABPREVOYANCERAPPORT<6>
ENR_TAMPONDADS<35> = W_TABPREVOYANCERAPPORT<7>
WRITE ENR_TAMPONDADS ON F.TAMPONDADS,"DADSU":W_CODEENTITE:W_ANNEE
WRITE ENR_DADSU ON F.DADSU,W_CODEENTITE:W_ANNEE:".TXT"
IF ENR_ERREURDADSU<1> = "" THEN ENR_ERREURDADSU<1> = "vide"
WRITE ENR_ERREURDADSU ON F.TAMPONDADS,"ERREURDADSU"
RETURN


**********
* 999992 -> RAPPORT D'EXECUTION TYPE TRAITEMENT AED + GENERATION FICHIER DANS REPERTOIRE POLEEMPLOI
**********
999992
WRITE ENR_TAMPONDADS ON F.TAMPONDADS,"AED-":W_CODEENTITE:"-":W_ANNEEMOIS:"-":W_TYPEACT:"-":W_DATESYST:"-":W_HEURESYST:"-":W_NUMORDRE
WRITE ENR_DADSU ON F.POLEEMPLOI,"AED-":W_CODEENTITE:"-":W_ANNEEMOIS:"-":W_TYPEACT:"-":W_DATESYST:"-":W_HEURESYST:"-":W_NUMORDRE:".TXT"
RETURN


**********
* 9999991 -> GESTION DES MISES EN FORME
**********
9999991
FOR Z = 1 TO LEN(W_TXTACONVERTIR)
   IF SEQ(W_TXTACONVERTIR[Z,1]) = 34 THEN
      IF Z=1 THEN
         W_TXTACONVERTIR = W_TXTACONVERTIR[2,999] 		 
      END ELSE
         W_TXTACONVERTIR = W_TXTACONVERTIR[1,Z-1]:W_TXTACONVERTIR[Z+1,999]
         Z=Z-1
      END
   END
   IF SEQ(W_TXTACONVERTIR[Z,1]) = 39 THEN W_TXTACONVERTIR = W_TXTACONVERTIR[1,Z-1]:" ":W_TXTACONVERTIR[Z+1,999]
* A
   IF SEQ(W_TXTACONVERTIR[Z,1]) >= 192 AND SEQ(W_TXTACONVERTIR[Z,1]) <= 198 THEN W_TXTACONVERTIR = W_TXTACONVERTIR[1,Z-1]:"A":W_TXTACONVERTIR[Z+1,999]
   IF SEQ(W_TXTACONVERTIR[Z,1]) >= 224 AND SEQ(W_TXTACONVERTIR[Z,1]) <= 230 THEN W_TXTACONVERTIR = W_TXTACONVERTIR[1,Z-1]:"A":W_TXTACONVERTIR[Z+1,999]
* C
   IF SEQ(W_TXTACONVERTIR[Z,1]) = 199 THEN W_TXTACONVERTIR = W_TXTACONVERTIR[1,Z-1]:"C":W_TXTACONVERTIR[Z+1,999]
   IF SEQ(W_TXTACONVERTIR[Z,1]) = 231 THEN W_TXTACONVERTIR = W_TXTACONVERTIR[1,Z-1]:"C":W_TXTACONVERTIR[Z+1,999]
* E
   IF SEQ(W_TXTACONVERTIR[Z,1]) >= 200 AND SEQ(W_TXTACONVERTIR[Z,1]) <= 203 THEN W_TXTACONVERTIR = W_TXTACONVERTIR[1,Z-1]:"E":W_TXTACONVERTIR[Z+1,999]
   IF SEQ(W_TXTACONVERTIR[Z,1]) >= 232 AND SEQ(W_TXTACONVERTIR[Z,1]) <= 235 THEN W_TXTACONVERTIR = W_TXTACONVERTIR[1,Z-1]:"E":W_TXTACONVERTIR[Z+1,999]
* I
   IF SEQ(W_TXTACONVERTIR[Z,1]) >= 204 AND SEQ(W_TXTACONVERTIR[Z,1]) <= 207 THEN W_TXTACONVERTIR = W_TXTACONVERTIR[1,Z-1]:"I":W_TXTACONVERTIR[Z+1,999]
   IF SEQ(W_TXTACONVERTIR[Z,1]) >= 236 AND SEQ(W_TXTACONVERTIR[Z,1]) <= 239 THEN W_TXTACONVERTIR = W_TXTACONVERTIR[1,Z-1]:"I":W_TXTACONVERTIR[Z+1,999]
* O
   IF SEQ(W_TXTACONVERTIR[Z,1]) >= 210 AND SEQ(W_TXTACONVERTIR[Z,1]) <= 214 THEN W_TXTACONVERTIR = W_TXTACONVERTIR[1,Z-1]:"O":W_TXTACONVERTIR[Z+1,999]
   IF SEQ(W_TXTACONVERTIR[Z,1]) >= 242 AND SEQ(W_TXTACONVERTIR[Z,1]) <= 246 THEN W_TXTACONVERTIR = W_TXTACONVERTIR[1,Z-1]:"O":W_TXTACONVERTIR[Z+1,999]
* U
   IF SEQ(W_TXTACONVERTIR[Z,1]) >= 217 AND SEQ(W_TXTACONVERTIR[Z,1]) <= 220 THEN W_TXTACONVERTIR = W_TXTACONVERTIR[1,Z-1]:"U":W_TXTACONVERTIR[Z+1,999]
   IF SEQ(W_TXTACONVERTIR[Z,1]) >= 249 AND SEQ(W_TXTACONVERTIR[Z,1]) <= 252 THEN W_TXTACONVERTIR = W_TXTACONVERTIR[1,Z-1]:"U":W_TXTACONVERTIR[Z+1,999]
* Y
   IF SEQ(W_TXTACONVERTIR[Z,1]) = 221 THEN W_TXTACONVERTIR = W_TXTACONVERTIR[1,Z-1]:"Y":W_TXTACONVERTIR[Z+1,999]		
   IF SEQ(W_TXTACONVERTIR[Z,1]) = 253 THEN W_TXTACONVERTIR = W_TXTACONVERTIR[1,Z-1]:"Y":W_TXTACONVERTIR[Z+1,999]		
* Si pas espace
   IF SEQ(W_TXTACONVERTIR[Z,1]) # 32 THEN
* Si pas chiffre
      IF SEQ(W_TXTACONVERTIR[Z,1]) < 48 OR SEQ(W_TXTACONVERTIR[Z,1]) > 57 THEN
      * Si pas lettre majuscule
         IF SEQ(W_TXTACONVERTIR[Z,1]) < 65 OR SEQ(W_TXTACONVERTIR[Z,1]) > 90 THEN
         * Si pas lettre minuscule
            IF SEQ(W_TXTACONVERTIR[Z,1]) < 97 OR SEQ(W_TXTACONVERTIR[Z,1]) > 122 THEN
            * Trait d'union et point
               IF SEQ(W_TXTACONVERTIR[Z,1]) # 45 AND SEQ(W_TXTACONVERTIR[Z,1]) # 46 THEN
               * Si pas , , , , , , , , , , , , 
                  IF SEQ(W_TXTACONVERTIR[Z,1]) # 224 AND SEQ(W_TXTACONVERTIR[Z,1]) # 226 AND SEQ(W_TXTACONVERTIR[Z,1]) # 231 AND SEQ(W_TXTACONVERTIR[Z,1]) # 232 AND SEQ(W_TXTACONVERTIR[Z,1]) # 233 AND SEQ(W_TXTACONVERTIR[Z,1]) # 234 AND SEQ(W_TXTACONVERTIR[Z,1]) # 235 AND SEQ(W_TXTACONVERTIR[Z,1]) # 238 AND SEQ(W_TXTACONVERTIR[Z,1]) # 239 AND SEQ(W_TXTACONVERTIR[Z,1]) # 244 AND SEQ(W_TXTACONVERTIR[Z,1]) # 249 AND SEQ(W_TXTACONVERTIR[Z,1]) # 251 AND SEQ(W_TXTACONVERTIR[Z,1]) # 252 THEN
                     W_TXTACONVERTIR = W_TXTACONVERTIR[1,Z-1]:W_TXTACONVERTIR[Z+1,999]
                     Z = Z - 1
                  END
               END ELSE
                  IF SEQ(W_TXTACONVERTIR[Z,1]) = 46 THEN W_TXTACONVERTIR = W_TXTACONVERTIR[1,Z]:" ":W_TXTACONVERTIR[Z+1,LEN(W_TXTACONVERTIR)-Z]
                  IF SEQ(W_TXTACONVERTIR[Z,1]) = 45 AND SEQ(W_TXTACONVERTIR[Z-1,1]) = 32 THEN
                     W_TXTACONVERTIR = W_TXTACONVERTIR[1,Z-2]:W_TXTACONVERTIR[Z,999]
                     Z=Z-1
                  END
                  IF SEQ(W_TXTACONVERTIR[Z,1]) = 32 AND SEQ(W_TXTACONVERTIR[Z-1,1]) = 45 THEN W_TXTACONVERTIR = W_TXTACONVERTIR[1,Z-1]:W_TXTACONVERTIR[Z+1,999]
                  IF SEQ(W_TXTACONVERTIR[Z,1]) = 45 AND SEQ(W_TXTACONVERTIR[Z+1,1]) = 32 THEN
                     W_TXTACONVERTIR = W_TXTACONVERTIR[1,Z]:W_TXTACONVERTIR[Z+2,999]
                     Z=Z-1
                  END
               END			             
            END
         END
      END
   END ELSE
   * Gestion des double-espaces.
      IF SEQ(W_TXTACONVERTIR[Z+1,1]) = 32 THEN
         W_TXTACONVERTIR = W_TXTACONVERTIR[1,Z-1]:W_TXTACONVERTIR[Z+1,999]
         Z=Z-1
      END
      IF SEQ(W_TXTACONVERTIR[Z-1,1]) = 45 THEN 
         W_TXTACONVERTIR = W_TXTACONVERTIR[1,Z-1]:W_TXTACONVERTIR[Z+1,999]
         Z=Z-1
      END
   END
NEXT Z
* Vrifie que le premier et dernier caractres sont bien dans [A-Z], [a-z] ou [0-9], le cas chant on efface.    
LOOP
   WHILE ((SEQ(W_TXTACONVERTIR[1,1]) < 48 OR SEQ(W_TXTACONVERTIR[1,1]) > 57) AND (SEQ(W_TXTACONVERTIR[1,1]) < 65 OR SEQ(W_TXTACONVERTIR[1,1]) > 90) AND (SEQ(W_TXTACONVERTIR[1,1]) < 97 OR SEQ(W_TXTACONVERTIR[1,1]) > 122))
      IF W_TXTACONVERTIR = "" THEN EXIT
      W_TXTACONVERTIR = W_TXTACONVERTIR[2,LEN(W_TXTACONVERTIR)-1]       
REPEAT
LOOP    
   WHILE ((SEQ(W_TXTACONVERTIR[LEN(W_TXTACONVERTIR),1]) < 48 OR SEQ(W_TXTACONVERTIR[LEN(W_TXTACONVERTIR),1]) > 57) AND (SEQ(W_TXTACONVERTIR[LEN(W_TXTACONVERTIR),1]) < 65 OR SEQ(W_TXTACONVERTIR[LEN(W_TXTACONVERTIR),1]) > 90) AND (SEQ(W_TXTACONVERTIR[LEN(W_TXTACONVERTIR),1]) < 97 OR SEQ(W_TXTACONVERTIR[LEN(W_TXTACONVERTIR),1]) > 122)) DO
      IF W_TXTACONVERTIR = "" THEN EXIT
      W_TXTACONVERTIR = W_TXTACONVERTIR[1,LEN(W_TXTACONVERTIR)-1]        
REPEAT
RETURN


**********
* 9999992 -> MISE EN FORME MAIL
**********
9999992
W_Arobas = 0
W_TXTACONVERTIR = W_VerifMail
FOR Z = 1 TO LEN(W_TXTACONVERTIR)
   IF Z > LEN(W_TXTACONVERTIR) THEN EXIT
   IF W_TXTACONVERTIR[Z,1] = "@" THEN
      IF W_Arobas = 0 THEN
         W_Arobas = Z
      END ELSE
         W_VerifMail = ""
         EXIT
      END
   END ELSE
      IF W_TXTACONVERTIR[Z,1] = "." OR W_TXTACONVERTIR[Z,1] = "_" OR W_TXTACONVERTIR[Z,1] = "-" THEN
         NULL
      END ELSE
         IF SEQ(W_TXTACONVERTIR[Z,1]) >= 33 AND SEQ(W_TXTACONVERTIR[Z,1]) <= 38 THEN 
            W_TXTACONVERTIR = W_TXTACONVERTIR[1,Z-1]:W_TXTACONVERTIR[Z+1,999]
            Z = Z - 1
         END
         IF SEQ(W_TXTACONVERTIR[Z,1]) = 39 THEN W_TXTACONVERTIR = W_TXTACONVERTIR[1,Z-1]:" ":W_TXTACONVERTIR[Z+1,999]
         IF SEQ(W_TXTACONVERTIR[Z,1]) >= 40 AND SEQ(W_TXTACONVERTIR[Z,1]) <= 44 THEN
            W_TXTACONVERTIR = W_TXTACONVERTIR[1,Z-1]:W_TXTACONVERTIR[Z+1,999]
            Z = Z - 1
         END
         IF SEQ(W_TXTACONVERTIR[Z,1]) = 45 THEN W_TXTACONVERTIR = W_TXTACONVERTIR[1,Z-1]:" ":W_TXTACONVERTIR[Z+1,999]
         IF SEQ(W_TXTACONVERTIR[Z,1]) >= 46 AND SEQ(W_TXTACONVERTIR[Z,1]) <= 47 THEN 
            W_TXTACONVERTIR = W_TXTACONVERTIR[1,Z-1]:W_TXTACONVERTIR[Z+1,999]
            Z = Z - 1
         END
         IF SEQ(W_TXTACONVERTIR[Z,1]) >= 91 AND SEQ(W_TXTACONVERTIR[Z,1]) <= 96 THEN 
            W_TXTACONVERTIR = W_TXTACONVERTIR[1,Z-1]:W_TXTACONVERTIR[Z+1,999]
            Z = Z - 1
         END
         IF SEQ(W_TXTACONVERTIR[Z,1]) >= 123 AND SEQ(W_TXTACONVERTIR[Z,1]) <= 159 THEN 
            W_TXTACONVERTIR = W_TXTACONVERTIR[1,Z-1]:W_TXTACONVERTIR[Z+1,999]
            Z = Z - 1
         END
         IF SEQ(W_TXTACONVERTIR[Z,1]) >= 161 AND SEQ(W_TXTACONVERTIR[Z,1]) <= 191 THEN W_TXTACONVERTIR = W_TXTACONVERTIR[1,Z-1]:" ":W_TXTACONVERTIR[Z+1,999]
         IF SEQ(W_TXTACONVERTIR[Z,1]) >= 208 AND SEQ(W_TXTACONVERTIR[Z,1]) <= 209 THEN 
            W_TXTACONVERTIR = W_TXTACONVERTIR[1,Z-1]:W_TXTACONVERTIR[Z+1,999]
            Z = Z - 1
         END
         IF SEQ(W_TXTACONVERTIR[Z,1]) >= 215 AND SEQ(W_TXTACONVERTIR[Z,1]) <= 216 THEN 
            W_TXTACONVERTIR = W_TXTACONVERTIR[1,Z-1]:W_TXTACONVERTIR[Z+1,999]
            Z = Z - 1
         END
         IF SEQ(W_TXTACONVERTIR[Z,1]) >= 222 AND SEQ(W_TXTACONVERTIR[Z,1]) <= 223 THEN 
            W_TXTACONVERTIR = W_TXTACONVERTIR[1,Z-1]:W_TXTACONVERTIR[Z+1,999]
            Z = Z - 1
         END
         IF SEQ(W_TXTACONVERTIR[Z,1]) >= 240 AND SEQ(W_TXTACONVERTIR[Z,1]) <= 241 THEN 
            W_TXTACONVERTIR = W_TXTACONVERTIR[1,Z-1]:W_TXTACONVERTIR[Z+1,999]
            Z = Z - 1
         END
         IF SEQ(W_TXTACONVERTIR[Z,1]) >= 247 AND SEQ(W_TXTACONVERTIR[Z,1]) <= 248 THEN 
            W_TXTACONVERTIR = W_TXTACONVERTIR[1,Z-1]:W_TXTACONVERTIR[Z+1,999]
            Z = Z - 1
         END
         IF SEQ(W_TXTACONVERTIR[Z,1]) >= 254 AND SEQ(W_TXTACONVERTIR[Z,1]) <= 255 THEN 
            W_TXTACONVERTIR = W_TXTACONVERTIR[1,Z-1]:W_TXTACONVERTIR[Z+1,999]
            Z = Z - 1
         END
         * A
         IF SEQ(W_TXTACONVERTIR[Z,1]) >= 192 AND SEQ(W_TXTACONVERTIR[Z,1]) <= 198 THEN W_TXTACONVERTIR = W_TXTACONVERTIR[1,Z-1]:"A":W_TXTACONVERTIR[Z+1,999]
         IF SEQ(W_TXTACONVERTIR[Z,1]) >= 224 AND SEQ(W_TXTACONVERTIR[Z,1]) <= 230 THEN W_TXTACONVERTIR = W_TXTACONVERTIR[1,Z-1]:"A":W_TXTACONVERTIR[Z+1,999]
         * C
         IF SEQ(W_TXTACONVERTIR[Z,1]) = 199 THEN W_TXTACONVERTIR = W_TXTACONVERTIR[1,Z-1]:"C":W_TXTACONVERTIR[Z+1,999]
         IF SEQ(W_TXTACONVERTIR[Z,1]) = 231 THEN W_TXTACONVERTIR = W_TXTACONVERTIR[1,Z-1]:"C":W_TXTACONVERTIR[Z+1,999]
         * E
         IF SEQ(W_TXTACONVERTIR[Z,1]) >= 200 AND SEQ(W_TXTACONVERTIR[Z,1]) <= 203 THEN W_TXTACONVERTIR = W_TXTACONVERTIR[1,Z-1]:"E":W_TXTACONVERTIR[Z+1,999]
         IF SEQ(W_TXTACONVERTIR[Z,1]) >= 232 AND SEQ(W_TXTACONVERTIR[Z,1]) <= 235 THEN W_TXTACONVERTIR = W_TXTACONVERTIR[1,Z-1]:"E":W_TXTACONVERTIR[Z+1,999]
         * I
         IF SEQ(W_TXTACONVERTIR[Z,1]) >= 204 AND SEQ(W_TXTACONVERTIR[Z,1]) <= 207 THEN W_TXTACONVERTIR = W_TXTACONVERTIR[1,Z-1]:"I":W_TXTACONVERTIR[Z+1,999]
         IF SEQ(W_TXTACONVERTIR[Z,1]) >= 236 AND SEQ(W_TXTACONVERTIR[Z,1]) <= 239 THEN W_TXTACONVERTIR = W_TXTACONVERTIR[1,Z-1]:"I":W_TXTACONVERTIR[Z+1,999]
         * O
         IF SEQ(W_TXTACONVERTIR[Z,1]) >= 210 AND SEQ(W_TXTACONVERTIR[Z,1]) <= 214 THEN W_TXTACONVERTIR = W_TXTACONVERTIR[1,Z-1]:"O":W_TXTACONVERTIR[Z+1,999]
         IF SEQ(W_TXTACONVERTIR[Z,1]) >= 242 AND SEQ(W_TXTACONVERTIR[Z,1]) <= 246 THEN W_TXTACONVERTIR = W_TXTACONVERTIR[1,Z-1]:"O":W_TXTACONVERTIR[Z+1,999]
         * U
         IF SEQ(W_TXTACONVERTIR[Z,1]) >= 217 AND SEQ(W_TXTACONVERTIR[Z,1]) <= 220 THEN W_TXTACONVERTIR = W_TXTACONVERTIR[1,Z-1]:"U":W_TXTACONVERTIR[Z+1,999]
         IF SEQ(W_TXTACONVERTIR[Z,1]) >= 249 AND SEQ(W_TXTACONVERTIR[Z,1]) <= 252 THEN W_TXTACONVERTIR = W_TXTACONVERTIR[1,Z-1]:"U":W_TXTACONVERTIR[Z+1,999]
         * Y
         IF SEQ(W_TXTACONVERTIR[Z,1]) = 221 THEN W_TXTACONVERTIR = W_TXTACONVERTIR[1,Z-1]:"Y":W_TXTACONVERTIR[Z+1,999]		
         IF SEQ(W_TXTACONVERTIR[Z,1]) = 253 THEN W_TXTACONVERTIR = W_TXTACONVERTIR[1,Z-1]:"Y":W_TXTACONVERTIR[Z+1,999]		
      END
   END
NEXT Z
W_VerifMail = TRIM(W_TXTACONVERTIR)
IF INDEX(W_VerifMail[W_Arobas, LEN(W_VerifMail)-W_Arobas],".",1) = 0 THEN
   W_VerifMail = ""
END 
RETURN

