**********************************************************
* Generation du fichier DADSCRC
* Programme chaine a partir d'un projet VB
* Moulin christophe
**********************************************************
* Ouvertures des fichiers
EXECUTE "SET-THOUS ."
EXECUTE "SET-DEC ,"
EXECUTE "DATE.FORMAT"
OPEN "","ABSENCESAIDANT" TO F.ABSENCESAIDANT ELSE STOP
OPEN "","ASSOCIATION" TO F.ASSOCIATION ELSE STOP
OPEN "","CIVILAIDANT" TO F.CIVILAIDANT ELSE STOP
OPEN "","CONSTANTESPAIE" TO F.CONSTANTESPAIE ELSE STOP
OPEN "","CONTRAT" TO F.CONTRAT ELSE STOP
OPEN "","CRCPARAM" TO F.CRCPARAM ELSE STOP
OPEN "","DADSCRC" TO F.DADSCRC ELSE STOP
OPEN "","ETABLISSEMENT" TO F.ETABLISSEMENT ELSE STOP
OPEN "","HISTORCUMUL" TO F.HISTORCUMUL ELSE STOP
OPEN "","HISTORCUMULETABL" TO F.HISTORCUMULETABL ELSE STOP
OPEN "","ORGANISMESOCIAL" TO F.ORGANISMESOCIAL ELSE STOP
OPEN "","REGROUPBRC" TO F.REGROUPBRC ELSE STOP
OPEN "","RUBCHARGE" TO F.RUBCHARGE ELSE STOP
OPEN "","TAMPONDADS" TO F.TAMPONDADS ELSE STOP
OPEN "","TRANCHE" TO F.TRANCHE ELSE STOP

*********************************************************
* Recuperation des arguments
PROCREAD ARGUMENTS ELSE STOP
W_CodeOrg=FIELD(ARGUMENTS," ",2)
W_CboPeriode=FIELD(ARGUMENTS," ",3)

*********************************************************
* Initialisation des variables
W_RienSelect="FAUX"
W_Fini="FAUX"
W_Temp=""
W_Ligne=""
W_NoLigne=0
ENR_DADSCRC=""
ENR_TEMPO=""
W_TabContrat=""
W_CountContrat=0
W_Passe120="FAUX"
W_CumulTotBrutAsso=0
W_CumulTrancheAAsso=0
W_CumulTrancheBAsso=0
W_CumulTrancheCAsso=0
W_TotalLigneSalAsso=0
W_TotalLigneSalEtab=0
W_AdresseAsso=""
ENR_TAMPONDADS=""

W_RequeteAbs=""
W_RequeteAbsDuree=""
W_RequeteContrat=""
W_RequeteRegBrc=""
******************************************
* Programme principal

READ ENR_CONSTANTESPAIE FROM F.CONSTANTESPAIE,"1" ELSE ENR_CONSTANTESPAIE = ""
DateEuro=ENR_CONSTANTESPAIE<9>

* 12420 = 01/01/2002
IF DateEuro >= 12420 THEN
   W_Euro="FAUX"
END ELSE
   W_Euro="VRAI"
END

W_CodeAsso=W_CodeOrg[1,3]

W_Annee4=W_CboPeriode[1,4]
W_Annee=W_CboPeriode[3,2]

W_AnneePrec4=W_CboPeriode[1,4]-1
W_AnneePrec=W_AnneePrec4[3,2]

READ ENR_ASSOCIATION FROM F.ASSOCIATION,W_CodeAsso ELSE ENR_ASSOCIATION = ""
READ ENR_ORGANISMESOCIAL FROM F.ORGANISMESOCIAL,W_CodeOrg ELSE ENR_ORGANISMESOCIAL = ""

IF ENR_ASSOCIATION<25>="1" THEN
   W_DateDeb=ICONV("01/12/":W_AnneePrec4,"D4/")
   W_DateFin=ICONV("30/11/":W_Annee4,"D4/")
END ELSE
   W_DateDeb=ICONV("01/01/":W_Annee4,"D4/")
   W_DateFin=ICONV("31/12/":W_Annee4,"D4/")
END


   * Requete contrat pour les salaries prestaires.
   GOSUB 10

   * Selection des rubriques regroupees
   GOSUB 40

   IF PasRegBrc="VRAI" THEN
      STOP
   END

   * Chargement en table des rubriques regroupees
   GOSUB 50

   * Enregistrement 000 (Drapeau de debut)
   GOSUB 100

   * Enregistrement 010 (Association)
   GOSUB 110

   READNEXT W_CleContrat FROM W_RequeteContrat ELSE W_Fini="VRAI"
   W_CleAidantPrec=W_CleContrat[1,5]
   W_TabContrat<1>=W_CleContrat

   W_NbEtab=0
   W_EtabPrec=""

**************************************************************************
* etiquette
1
   i=2
   LOOP
      READNEXT W_CleContrat FROM W_RequeteContrat ELSE W_Fini="VRAI"
   WHILE W_CleAidantPrec = W_CleContrat[1,5] AND W_Fini# "VRAI" DO
      W_TabContrat<i>=W_CleContrat
      i=i+1
      W_CleAidantPrec=W_CleContrat[1,5]
   REPEAT

   * Traitement du precedent
   W_CodeAidant=W_CleAidantPrec
   READ ENR_CIVILAIDANT FROM F.CIVILAIDANT,W_CodeAidant ELSE ENR_CIVILAIDANT = ""
   W_CountContrat=DCOUNT(W_TabContrat,CHAR(254))

   READ ENR_CONTRAT FROM F.CONTRAT,W_TabContrat<W_CountContrat> ELSE ENR_CONTRAT = ""
   IF W_EtabPrec # ENR_CONTRAT<3> THEN
      READ ENR_ETABLISSEMENT FROM F.ETABLISSEMENT,ENR_CONTRAT<3> ELSE ENR_ETABLISSEMENT = ""
      IF W_Passe120="VRAI" THEN
         * Enregistrement 300 (Fin Etablissement)
         GOSUB 300
      END
      W_TotalLigneSalEtab=0
      W_CumulTotBrutEtab=0
      W_CumulTrancheAEtab=0
      W_CumulTrancheBEtab=0
      W_CumulTrancheCEtab=0
      * Enregistrement 020 (Etablisssment)
      GOSUB 120
      W_NbEtab=W_NbEtab+1
   END

   * Enregistrement 200 (Salari)
   GOSUB 200

   W_TabContrat=""
   W_CleAidantPrec=W_CleContrat[1,5]
   W_TabContrat<1>=W_CleContrat
   W_EtabPrec=ENR_CONTRAT<3>
   IF W_Fini# "VRAI" THEN
      GOTO 1
   END

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

   * Enregistrement 300 (Fin Etablissement)
   GOSUB 300

   * Enregistrement 310
   GOSUB 310

   * Enregistrement 990
   GOSUB 990

   WRITE ENR_DADSCRC ON F.DADSCRC,W_CodeOrg[1,3]:W_CodeOrg[7,3]:W_CboPeriode

   * Generation du fichier "Rapport d'execution"

   ENR_TAMPONDADS<1>=W_NoLigne * 566
   ENR_TAMPONDADS<2>=W_NoLigne
   ENR_TAMPONDADS<3>=W_TotalLigneSalAsso
   ENR_TAMPONDADS<4>=W_CumulTotBrutAsso
   ENR_TAMPONDADS<5>=W_CumulTrancheAAsso
   ENR_TAMPONDADS<6>=W_CumulTrancheBAsso

   WRITE ENR_TAMPONDADS ON F.TAMPONDADS,"DADSCRC"

STOP

**************************************************************************
* Requete sur contrat
10 
   EXECUTE 'SSELECT CONTRAT AVEC 65 # "O" AND AVEC 1 # "02" AND AVEC 2 = "':W_CodeAsso:'" AND AVEC 7 <= "':W_DateFin:'" AND AVEC 8 >= "':W_DateDeb:'" OR = "" PAR 3 PAR NomPrenomAidantContrat PAR CodeAidant PAR @ID'
   EXECUTE 'SAUVE-LISTE W_RequeteContrat'
   EXECUTE "LISTE W_RequeteContrat" RETURNING MSGCODE

   IF MSGCODE<1>=209 THEN
      STOP
   END ELSE
      SELECT F.CONTRAT TO W_RequeteContrat
   END

RETURN

**************************************************************************
* Requete sur AbsenceAidant pour la situation
20 
   EXECUTE 'SSELECT ABSENCESAIDANT AVEC @ID = "':W_CodeAidant:']" AND AVEC NumMotifAidant = "01" OR = "02" OR = "12" AND AVEC 13 = "':W_CodeAsso:'" OR = "" AND AVEC DebAbsAidant <= "':W_DateFin:'" AND AVEC 2 >= "':W_DateDeb:'" PAR @ID'
   EXECUTE 'SAUVE-LISTE W_RequeteAbs'
   EXECUTE "LISTE W_RequeteAbs" RETURNING MSGCODE
   IF MSGCODE<1> # 209 THEN
      SELECT F.ABSENCESAIDANT TO W_RequeteAbs
      PasAbs="FAUX"
   END ELSE
      PasAbs="VRAI"
   END

RETURN

**************************************************************************
* Requete sur AbsenceAidant pour la duree de maladie
30 
   EXECUTE 'SSELECT ABSENCESAIDANT AVEC @ID = "':W_CodeAidant:']" AND AVEC NumMotifAidant <= "06" AND AVEC NumMotifAidant # "03" AND AVEC 13 = "':W_CodeAsso:'" OR = "" AND AVEC DebAbsAidant <= "':W_DateFin:'" AND AVEC 2 >= "':W_DateDeb:'" AND AVEC DureeAbs >= "60" OR AVEC @ID = "':W_CodeAidant:']" AND AVEC NumMotifAidant <= "06" AND AVEC NumMotifAidant # "03" AND AVEC 13 = "':W_CodeAsso:'" OR = "" AND AVEC DebAbsAidant <= "':W_DateFin:'" AND AVEC 2 >= "':W_DateFin:'" PAR DebAbsAidant'
   EXECUTE 'SAUVE-LISTE W_RequeteAbsDuree'
   EXECUTE "LISTE W_RequeteAbsDuree" RETURNING MSGCODE
   IF MSGCODE<1> # 209 THEN
      SELECT F.ABSENCESAIDANT TO W_RequeteAbsDuree
      PasAbsDuree="FAUX"
   END ELSE
      PasAbsDuree="VRAI"
   END

RETURN

**************************************************************************
* Selection des rubriques regroupees
40
   EXECUTE 'SSELECT REGROUPBRC AVEC @ID = "':W_CodeOrg:']"'
   EXECUTE 'SAUVE-LISTE W_RequeteRegBrc'
   EXECUTE "LISTE W_RequeteRegBrc" RETURNING MSGCODE
   IF MSGCODE<1> # 209 THEN
      SELECT F.REGROUPBRC TO W_RequeteRegBrc
      PasRegBrc="FAUX"
   END ELSE
      PasRegBrc="VRAI"
   END

RETURN

**************************************************************************
* Chargement en table des rubriques regroupees
* Description du tableau : 1=T  2=A  3=B  4=C
50

   W_TabRubChg=""
   W_FiniBrc="FAUX"
   LOOP
      READNEXT W_CleRegBrc FROM W_RequeteRegBrc ELSE W_FiniBrc="VRAI"
   WHILE W_FiniBrc # "VRAI" DO
      iBrc=1
      LOOP
         READ ENR_REGROUPBRC FROM F.REGROUPBRC,W_CleRegBrc ELSE ENR_REGROUPBRC = ""
      WHILE ENR_REGROUPBRC<2,iBrc> # "" DO
         READ ENR_RUBCHARGE FROM F.RUBCHARGE,ENR_REGROUPBRC<2,iBrc> ELSE ENR_RUBCHARGE = ""
         READ ENR_TRANCHE FROM F.TRANCHE,ENR_RUBCHARGE<2> ELSE ENR_TRANCHE = ""

         IF ENR_TRANCHE<10> > 4 THEN
            IF W_TabRubChg<ENR_TRANCHE<10>> # "" THEN
               W_TabRubChg<1,-1>=ENR_REGROUPBRC<2,iBrc>
            END ELSE
                W_TabRubChg<1>=ENR_REGROUPBRC<2,iBrc>
            END
         END ELSE
            IF W_TabRubChg<ENR_TRANCHE<10>> # "" THEN
               W_TabRubChg<ENR_TRANCHE<10>,-1>=ENR_REGROUPBRC<2,iBrc>
            END ELSE
               W_TabRubChg<ENR_TRANCHE<10>>=ENR_REGROUPBRC<2,iBrc>
            END
         END

         iBrc=iBrc+1
      REPEAT
   REPEAT

RETURN
**************************************************************************
* Enregistrement 000
100
   IF W_Euro="VRAI" THEN
      W_Ligne="00000000000000000000056"
   END ELSE
      W_Ligne="00000000000000000000006"
   END

   READ ENR_ETABLISSEMENT FROM F.ETABLISSEMENT,W_CodeAsso:"001" ELSE ENR_ETABLISSEMENT = ""
   W_Ligne=W_Ligne:ENR_ETABLISSEMENT<14>

   W_Ligne=W_Ligne:SPACE(527)

   W_NoLigne=W_NoLigne+1
   ENR_DADSCRC<W_NoLigne>=W_Ligne

RETURN

**************************************************************************
* Enregistrement 010
110
   W_Ligne=ENR_ASSOCIATION<14>:"0000000000010":ENR_ETABLISSEMENT<14>

   W_Ape=ENR_ETABLISSEMENT<15>
   W_Ape=W_Ape "R%4"
   W_Ligne=W_Ligne:W_Ape:"     "

   W_RaisonSociale=ENR_ASSOCIATION<2>
   W_RaisonSociale=W_RaisonSociale "L#50"
   W_Ligne=W_Ligne:W_RaisonSociale

* Adresse
   W_ComplAdr=ENR_ASSOCIATION<7>
   W_ComplAdr=W_ComplAdr[1,32]
   W_ComplAdr=W_ComplAdr "L#32"
   W_Ligne=W_Ligne:W_ComplAdr:" "

   W_NumVoie=ENR_ASSOCIATION<3>
   W_NumVoie=W_NumVoie "L#4"
   W_Ligne=W_Ligne:W_NumVoie

   W_ComplNumVoie=ENR_ASSOCIATION<4>
   W_ComplNumVoie=W_ComplNumVoie[1,1]
   W_ComplNumVoie=W_ComplNumVoie "L#1"
   W_Ligne=W_Ligne:W_ComplNumVoie:" "

   IF ENR_ASSOCIATION<5> # "" THEN
      W_NatNomVoie=ENR_ASSOCIATION<5>:" ":ENR_ASSOCIATION<6>
   END ELSE
      W_NatNomVoie=ENR_ASSOCIATION<6>
   END
   W_NatNomVoie=W_NatNomVoie[1,26]
   W_NatNomVoie=W_NatNomVoie "L#26"
   W_Ligne=W_Ligne:W_NatNomVoie:"00000 "      ;*CodeInsee

   W_CommuneVoie=ENR_ASSOCIATION<9>
   W_CommuneVoie=W_CommuneVoie[1,26]
   W_CommuneVoie=W_CommuneVoie "L#26"
   W_Ligne=W_Ligne:W_CommuneVoie

   W_CodePostal=ENR_ASSOCIATION<8>
   W_CodePostal=W_CodePostal "R%5"
   W_Ligne=W_Ligne:W_CodePostal:" "

   W_Ligne=W_Ligne:W_CommuneVoie

   W_AdresseAsso=W_ComplAdr:" ":W_NumVoie:W_ComplNumVoie:" ":W_NatNomVoie:"00000 ":W_CommuneVoie:W_CodePostal:" ":W_CommuneVoie

   W_Ligne=W_Ligne:SPACE(323)

   W_NoInst=ENR_ORGANISMESOCIAL<17>
   W_NoInst=W_NoInst "R%4"
   W_Ligne=W_Ligne:W_NoInst
   
   W_NoIdent=ENR_ORGANISMESOCIAL<19>
   W_NoIdent=CONVERT(" ","",W_NoIdent)
   W_NoIdent=W_NoIdent[1,13]
   W_NoIdent=W_NoIdent "L#13"
   W_Ligne=W_Ligne:W_NoIdent

   W_NoLigne=W_NoLigne+1
   ENR_DADSCRC<W_NoLigne>=W_Ligne

RETURN

**************************************************************************
* Enregistrement 020
120

   
   W_Passe120="VRAI"
   READ ENR_CRCPARAM FROM F.CRCPARAM,ENR_CONTRAT<3> ELSE ENR_CRCPARAM = ""
   W_Ligne=ENR_ETABLISSEMENT<14>:"00":W_Annee:"0020":ENR_ETABLISSEMENT<14>:W_Ape:" "
   W_Ligne=W_Ligne:"00000000000000":SPACE(41):W_RaisonSociale

   IF ENR_ETABLISSEMENT<8> = "" AND ENR_ETABLISSEMENT<9> = "" THEN
   * Adresse Association
      W_Ligne=W_Ligne:W_AdresseAsso
   END ELSE
   * Adresse Etablissment
      W_ComplAdr=ENR_ETABLISSEMENT<7>
      W_ComplAdr=W_ComplAdr[1,32]
      W_ComplAdr=W_ComplAdr "L#32"
      W_Ligne=W_Ligne:W_ComplAdr:" "

      W_NumVoie=ENR_ETABLISSEMENT<3>
      W_NumVoie=W_NumVoie "L#4"
      W_Ligne=W_Ligne:W_NumVoie

      W_ComplNumVoie=ENR_ETABLISSEMENT<4>
      W_ComplNumVoie=W_ComplNumVoie[1,1]
      W_ComplNumVoie=W_ComplNumVoie "L#1"
      W_Ligne=W_Ligne:W_ComplNumVoie:" "

      IF ENR_ETABLISSEMENT<5> # "" THEN
         W_NatNomVoie=ENR_ETABLISSEMENT<5>:" ":ENR_ETABLISSEMENT<6>
      END ELSE
         W_NatNomVoie=ENR_ETABLISSEMENT<6>
      END
      W_NatNomVoie=W_NatNomVoie[1,26]
      W_NatNomVoie=W_NatNomVoie "L#26"
      W_Ligne=W_Ligne:W_NatNomVoie:"00000 "      ;*CodeInsee

      W_CommuneVoie=ENR_ETABLISSEMENT<9>
      W_CommuneVoie=W_CommuneVoie[1,26]
      W_CommuneVoie=W_CommuneVoie "L#26"
      W_Ligne=W_Ligne:W_CommuneVoie

      W_CodePostal=ENR_ETABLISSEMENT<8>
      W_CodePostal=W_CodePostal "R%5"
      W_Ligne=W_Ligne:W_CodePostal:" "

      W_Ligne=W_Ligne:W_CommuneVoie
   END

   W_Ligne=W_Ligne:SPACE(244)       ;* Dont 1 pour le decalage de paie et 1 pour CCP

   IF ENR_ASSOCIATION<25>="1" THEN
      W_Ligne=W_Ligne:W_AnneePrec:"1201":W_Annee:"1130"
   END ELSE
      W_Ligne=W_Ligne:W_Annee:"0101":W_Annee:"1231"
   END

   IF ENR_CRCPARAM<1> # "" THEN
	W_NoIdentEtab = ENR_CRCPARAM<1>
   END ELSE
	W_NoIdentEtab = W_NoIdent
   END

   W_Ligne=W_Ligne:W_NoIdentEtab:W_NoInst:W_NoIdent

   W_NoLigne=W_NoLigne+1
   ENR_DADSCRC<W_NoLigne>=W_Ligne

RETURN

**************************************************************************
* Enregistrement 200
200
   W_Ligne=ENR_ETABLISSEMENT<14>:"00":W_Annee:"0200"

   W_MatSal=W_CodeAidant "L#10"
   W_Ligne=W_Ligne:W_MatSal

   W_Nir=ENR_CIVILAIDANT<17>
   W_Nir=CONVERT(" ","",W_Nir)
   W_Nir=W_Nir "R%13"
   W_Ligne=W_Ligne:W_Nir

   W_CleNir=ENR_CIVILAIDANT<18>
   W_CleNir=W_CleNir "R%2"
   W_Ligne=W_Ligne:W_CleNir

   W_DateNais=OCONV(ENR_CIVILAIDANT<26>,"D2/")
   W_DateNais=CONVERT("/","",W_DateNais)
   W_Ligne=W_Ligne:W_DateNais

   W_CodePaysNais=ENR_CIVILAIDANT<29>
   IF W_CodePaysNais = "000000" THEN
      W_DeptNais=ENR_CIVILAIDANT<28>
      W_DeptNais=W_DeptNais[1,2]
      W_DeptNais=W_DeptNais "R%2"

      W_CommuneNais=ENR_CIVILAIDANT<27>
      W_CommuneNais=W_CommuneNais[1,26]
      W_CommuneNais=W_CommuneNais "L#26"

      W_Ligne=W_Ligne:W_DeptNais:"000":W_CommuneNais
   END ELSE
   
	W_CodePaysNais[3,3] = W_CodePaysNais[3,3] "L%3"
      W_PaysNais=ENR_CIVILAIDANT<30>
      W_PaysNais=W_PaysNais[1,26]
      W_PaysNais=W_PaysNais "L#26"
	
	IF W_CodePaysNais[1,2] = "99" THEN 
	      W_Ligne=W_Ligne:"99":W_CodePaysNais[3,3]:W_PaysNais
	END ELSE
	      W_Ligne=W_Ligne:W_CodePaysNais[1,5]:W_PaysNais
	END
   END

   W_Titre=ENR_CIVILAIDANT<1>
   W_Titre=W_Titre[1,3]
   W_Titre=W_Titre "L#3"
   IF W_Titre="MR " THEN
      W_Titre="M  "
   END
   W_Ligne=W_Ligne:W_Titre

   W_NomPatro=ENR_CIVILAIDANT<4>
   W_NomPatro=W_NomPatro[1,30]
   W_NomPatro=W_NomPatro "L#30"
   W_Ligne=W_Ligne:W_NomPatro
   
   W_Prenom=ENR_CIVILAIDANT<3>
   W_Prenom=W_Prenom[1,20]
   W_Prenom=W_Prenom "L#20"
   W_Ligne=W_Ligne:W_Prenom

   IF W_Titre # "M  " THEN
      W_Nom=ENR_CIVILAIDANT<2>
      W_Nom=W_Nom[1,30]
      W_Nom=W_Nom "L#30"
      W_Ligne=W_Ligne:W_Nom
   END ELSE
      W_Ligne=W_Ligne:SPACE(30)
   END

* Adresse
   W_ComplAdr=ENR_CIVILAIDANT<9>
   W_ComplAdr=W_ComplAdr[1,32]
   W_ComplAdr=W_ComplAdr "L#32"
   W_Ligne=W_Ligne:W_ComplAdr:" "

   W_NumVoie=ENR_CIVILAIDANT<5>
   W_NumVoie=W_NumVoie "L#4"
   W_Ligne=W_Ligne:W_NumVoie

   W_ComplNumVoie=ENR_CIVILAIDANT<6>
   W_ComplNumVoie=W_ComplNumVoie[1,1]
   W_ComplNumVoie=W_ComplNumVoie "L#1"
   W_Ligne=W_Ligne:W_ComplNumVoie:" "

   IF ENR_CIVILAIDANT<7> # "" THEN
      W_NatNomVoie=ENR_CIVILAIDANT<7>:" ":ENR_CIVILAIDANT<8>
   END ELSE
      W_NatNomVoie=ENR_CIVILAIDANT<8>
   END
   W_NatNomVoie=W_NatNomVoie[1,26]
   W_NatNomVoie=W_NatNomVoie "L#26"
   W_Ligne=W_Ligne:W_NatNomVoie

   W_CodeInsee=ENR_CIVILAIDANT<39>
   W_CodeInsee=W_CodeInsee "R%5"
   W_Ligne=W_Ligne:W_CodeInsee:" "

   W_CommuneVoie=ENR_CIVILAIDANT<11>
   W_CommuneVoie=W_CommuneVoie[1,26]
   W_CommuneVoie=W_CommuneVoie "L#26"
   W_Ligne=W_Ligne:W_CommuneVoie

   W_CodePostal=ENR_CIVILAIDANT<10>
   W_CodePostal=W_CodePostal "R%5"
   W_Ligne=W_Ligne:W_CodePostal:" "

   W_Ligne=W_Ligne:W_CommuneVoie

   READ ENR_CONTRAT FROM F.CONTRAT,W_TabContrat<W_CountContrat> ELSE ENR_CONTRAT = ""

   W_CountAvenant=DCOUNT(ENR_CONTRAT<15>,CHAR(253))
   W_Qualif=ENR_CONTRAT<16,W_CountAvenant>
   W_Qualif=W_Qualif[1,30]
   W_Qualif=W_Qualif "L#30"
   W_Ligne=W_Ligne:W_Qualif

   READ ENR_HISTORCUMUL FROM F.HISTORCUMUL,W_CodeAidant:W_Annee4:W_CodeAsso THEN
      W_YaHistorCumul="VRAI"
      W_Sit="10"
	IF ENR_HISTORCUMUL<23> # "" THEN
		READ ENR_HISTORCUMUL FROM F.HISTORCUMULETABL,W_CodeAidant:W_Annee4:W_CodeAsso:ENR_CONTRAT<3>[4,3] ELSE ENR_HISTORCUMUL = ""
	END
   END ELSE
      W_YaHistorCumul="FAUX"
      * Requete sur AbsenceAidant pour la situation
      GOSUB 20 

      W_Sit="10"
      IF PasAbs="FAUX" THEN
         READNEXT W_CleAbs FROM W_RequeteAbs ELSE PRINT "PAS ABS"
         IF W_CleAbs[6,2]="01" THEN
            W_Sit="20"
         END ELSE
            IF W_CleAbs[6,2]="02" THEN
               W_Sit="24"
            END ELSE
               W_Sit="60"
            END
         END
      END
   END

   W_Ligne=W_Ligne:W_Sit

   W_CpNorm=ENR_CONTRAT<82>
   IF NUM(W_CpNorm) = "FALSE" THEN
	W_CpNorm = "242"
   END
   W_CpNorm=W_CpNorm "R%3"
   W_TrouvRegime = "Faux"
   IRegime = 0
   LOOP
   WHILE ENR_CRCPARAM<2,IRegime> # "" AND W_TrouvRegime = "Faux"
	IF ENR_CRCPARAM<2,IRegime> = ENR_CONTRAT<82> THEN
		W_TrouvRegime = "VRAI"
	END
	IRegime = IRegime + 1
   REPEAT
   
   IF W_TrouvRegime = "VRAI" THEN
	IRegime = IRegime - 1
	W_Regime = ENR_CRCPARAM<3,IRegime>
	W_Regime = W_Regime "L#7"
	W_Ligne=W_Ligne:W_CpNorm:W_Regime
   END ELSE
	W_Ligne=W_Ligne:W_CpNorm:"       "
   END

   READ ENR_CONTRAT FROM F.CONTRAT,W_TabContrat<1> ELSE ENR_CONTRAT = ""

   IF ENR_CONTRAT<7> >= W_DateDeb THEN
      W_Entree="EM":OCONV(ENR_CONTRAT<7>,"D2/")
      W_Entree=CONVERT("/","",W_Entree)
   END ELSE
      W_Entree="        "
   END

   READ ENR_CONTRAT FROM F.CONTRAT,W_TabContrat<W_CountContrat> ELSE ENR_CONTRAT = ""

   IF ENR_CONTRAT<8> # "" THEN
      IF ENR_CONTRAT<8> <= W_DateFin THEN
         IF ENR_CONTRAT<49> < 38 OR ENR_CONTRAT<49> = 53 OR ENR_CONTRAT<49> = 59 THEN
            W_MotifSortie="DE"
         END ELSE
            IF ENR_CONTRAT<49> = 38 OR ENR_CONTRAT<49> = 39 THEN
               W_MotifSortie="DR"
            END ELSE
               W_MotifSortie="DV"
            END
         END
         W_Sortie=OCONV(ENR_CONTRAT<8>,"D2/")
         W_Sortie=CONVERT("/","",W_Sortie)
         W_Sortie=W_MotifSortie:W_Sortie
      END ELSE
         W_Sortie="        "
      END
   END ELSE
      W_Sortie="        "
   END

   W_Ligne=W_Ligne:W_Entree:W_Sortie:"00000 "

   * Requete sur AbsenceAidant pour la duree de maladie
   GOSUB 30 

   W_Ligne=W_Ligne:"0000000"

   IF W_YaHistorCumul="VRAI" THEN	;* Presence de l'historcumul

      W_IndTabRubChg=1
      GOSUB 210
      W_CumulTotBrutEtab=W_CumulTotBrutEtab+W_CumulHisto
      W_CumulTotBrutAsso=W_CumulTotBrutAsso+W_CumulHisto
      W_TotBrut=W_CumulHisto "R%7"

      W_IndTabRubChg=2
      GOSUB 210
      W_CumulTrancheAEtab=W_CumulTrancheAEtab+W_CumulHisto
      W_CumulTrancheAAsso=W_CumulTrancheAAsso+W_CumulHisto
      W_TrancheA=W_CumulHisto "R%7"

      W_IndTabRubChg=3
      GOSUB 210
      W_CumulTrancheBEtab=W_CumulTrancheBEtab+W_CumulHisto
      W_CumulTrancheBAsso=W_CumulTrancheBAsso+W_CumulHisto
      W_TrancheB=W_CumulHisto "R%7"

      W_IndTabRubChg=4
      GOSUB 210
      W_CumulTrancheCEtab=W_CumulTrancheCEtab+W_CumulHisto
      W_CumulTrancheCAsso=W_CumulTrancheCAsso+W_CumulHisto
      W_TrancheC=W_CumulHisto "R%7"

      W_Ligne=W_Ligne:"T":W_TotBrut:"A":W_TrancheA:"B":W_TrancheB:"C":W_TrancheC

   END ELSE
      W_Ligne=W_Ligne:"T0000000A0000000B0000000C0000000"   
   END

   W_Ligne=W_Ligne:"S0000000D0000000E0000000F0000000U0000000"

   W_CodePcs=ENR_CONTRAT<17,W_CountAvenant>
   W_CodePcs=W_CodePcs "L#4"
   W_Ligne=W_Ligne:W_CodePcs:SPACE(63)

   W_MatInst=ENR_CONTRAT<34>
   W_MatInst=CONVERT(" ","",W_MatInst)
   W_MatInst=W_MatInst[1,13]
   W_MatInst=W_MatInst "L#13"
   W_Ligne=W_Ligne:W_MatInst

   IF ENR_ASSOCIATION<25>="1" THEN
      W_Ligne=W_Ligne:W_AnneePrec:"1201":W_Annee:"1130"
   END ELSE
      W_Ligne=W_Ligne:W_Annee:"0101":W_Annee:"1231"
   END

   W_Ligne=W_Ligne:W_NoIdentEtab:W_NoInst:W_NoIdent

   IF W_YaHistorCumul="VRAI" THEN
      IF W_TotBrut # 0 OR W_TrancheA # 0 OR W_TrancheB # 0 OR W_TrancheC # 0 THEN
         W_TotalLigneSalEtab=W_TotalLigneSalEtab+1
         W_TotalLigneSalAsso=W_TotalLigneSalAsso+1
         W_NoLigne=W_NoLigne+1
         ENR_DADSCRC<W_NoLigne>=W_Ligne
      END
   END

   IF PasAbsDuree="FAUX" THEN
      W_FinAbsDuree="FAUX"
      W_DureeAbs=0
      W_DureeAv=0
      W_DureeAp=0
      LOOP
         READNEXT W_CleAbsDuree FROM W_RequeteAbsDuree ELSE W_FinAbsDuree="VRAI"
      WHILE W_FinAbsDuree="FAUX" DO
         READ ENR_ABSENCESAIDANT FROM F.ABSENCESAIDANT,W_CleAbsDuree ELSE ENR_ABSENCESAIDANT = ""
	   W_DureeAbs = 0
         IF W_CleAbsDuree[8,5] < W_DateDeb THEN
		IF ENR_ABSENCESAIDANT<2> => W_DateFin THEN
			ENR_ABSENCESAIDANT<2> = W_DateFin
		END
		W_DureeAbs=W_DureeAbs + (ENR_ABSENCESAIDANT<2> - W_DateDeb) + 1
         END ELSE
            W_DureeAp=ENR_ABSENCESAIDANT<2> - W_CleAbsDuree[8,5] + 1
		IF W_DureeAp => "60" THEN
	            IF ENR_ABSENCESAIDANT<2> => W_DateFin THEN
      	         W_DureeAbs=W_DureeAbs + W_DateFin - W_CleAbsDuree[8,5] + 1
            	END ELSE
	               W_DureeAbs=W_DureeAbs + ENR_ABSENCESAIDANT<2> - W_CleAbsDuree[8,5] + 1
      	      END
		END ELSE
	            IF ENR_ABSENCESAIDANT<2> => W_DateFin THEN
      	         W_DureeAbs=W_DureeAbs + W_DateFin - W_CleAbsDuree[8,5] + 1
      	      END
		END
         END
         W_DureeAbs=W_DureeAbs "R%3"

	   IF W_CleAbsDuree[6,2] = "02" THEN
		W_LigneAbs = W_Ligne[1,326]:'24':W_Ligne[329,10]
	   END ELSE
		W_LigneAbs = W_Ligne[1,326]:'20':W_Ligne[329,10]
	   END
	   IF W_CleAbsDuree[8,5] < W_DateDeb THEN
		W_DateAbs = "        "
	   END ELSE
         	W_DateAbs=OCONV(W_CleAbsDuree[8,5],"D2/")
         	W_DateAbs=CONVERT("/","",W_DateAbs)
         	W_DateAbs='DV':W_DateAbs
	   END
	   W_LigneAbs = W_LigneAbs:W_DateAbs
	   IF ENR_ABSENCESAIDANT<2> => W_DateFin THEN
		W_DateAbs = "        "
	   END ELSE
         	W_DateAbs=OCONV(ENR_ABSENCESAIDANT<2>,"D2/")
         	W_DateAbs=CONVERT("/","",W_DateAbs)
         	W_DateAbs='DV':W_DateAbs
	   END
	   W_LigneAbs = W_LigneAbs:W_DateAbs:W_Ligne[355,6]:W_DureeAbs:'0000T0000000A0000000B0000000C0000000S0000000D0000000E0000000F0000000U0000000':W_Ligne[440,125]
         W_TotalLigneSalEtab=W_TotalLigneSalEtab+1
         W_TotalLigneSalAsso=W_TotalLigneSalAsso+1
         W_NoLigne=W_NoLigne+1
         ENR_DADSCRC<W_NoLigne>=W_LigneAbs
      REPEAT
   END

RETURN
**************************************************************************
* Recherche l'assiette des differents types de tranche.
210
   W_CumulHisto=0
   iHistorTab=1

   IF W_TabRubChg<W_IndTabRubChg> # "" AND W_YaHistorCumul="VRAI" THEN
      W_Trouve1Rub = "F"
      LOOP
      WHILE W_TabRubChg<W_IndTabRubChg,iHistorTab> # "" AND W_Trouve1Rub = "F" DO
         iHistor=1
	   
         LOOP
         WHILE W_TabRubChg<W_IndTabRubChg,iHistorTab> # ENR_HISTORCUMUL<15,iHistor> AND ENR_HISTORCUMUL<15,iHistor> # "" DO
            iHistor=iHistor+1
         REPEAT

         IF ENR_HISTORCUMUL<15,iHistor> # "" THEN
            W_CumulHisto=W_CumulHisto + ENR_HISTORCUMUL<17,iHistor>       
	    W_Trouve1Rub = "V"
         END

         iHistorTab=iHistorTab+1
      REPEAT

      W_CumulHisto=INT(W_CumulHisto/100 + 1/2)
   END
RETURN
**************************************************************************
* Enregistrement 300
300
   W_Passe120="FAUX"
   W_TotalLigneSalEtab=W_TotalLigneSalEtab "R%6"
   W_Ligne=ENR_ETABLISSEMENT<14>:"00":W_Annee:"0300":W_TotalLigneSalEtab

   W_CumulTotBrutEtab=W_CumulTotBrutEtab "R%12"
   W_CumulTrancheAEtab=W_CumulTrancheAEtab "R%12"
   W_CumulTrancheBEtab=W_CumulTrancheBEtab "R%12"
   W_CumulTrancheCEtab=W_CumulTrancheCEtab "R%12"

   W_Ligne=W_Ligne:"T":W_CumulTotBrutEtab:"A":W_CumulTrancheAEtab:"B":W_CumulTrancheBEtab:"C":W_CumulTrancheCEtab

   W_Ligne=W_Ligne:"S000000000000D000000000000E000000000000F000000000000U000000000000":SPACE(374)

   IF ENR_ASSOCIATION<25>="1" THEN
      W_Ligne=W_Ligne:W_AnneePrec:"1201":W_Annee:"1130"
   END ELSE
      W_Ligne=W_Ligne:W_Annee:"0101":W_Annee:"1231"
   END

   W_Ligne=W_Ligne:W_NoIdentEtab:W_NoInst:W_NoIdent

   W_NoLigne=W_NoLigne+1
   ENR_DADSCRC<W_NoLigne>=W_Ligne

RETURN

**************************************************************************
* Enregistrement 310
310
   W_NbEtab=W_NbEtab "R%5"
   W_TotalLigneSalAsso=W_TotalLigneSalAsso "R%6"
   W_Ligne=ENR_ASSOCIATION<14>:"9999999999":"310":W_NbEtab:W_TotalLigneSalAsso

   W_CumulTotBrutAsso=W_CumulTotBrutAsso "R%12"
   W_CumulTrancheAAsso=W_CumulTrancheAAsso "R%12"
   W_CumulTrancheBAsso=W_CumulTrancheBAsso "R%12"
   W_CumulTrancheCAsso=W_CumulTrancheCAsso "R%12"

   W_Ligne=W_Ligne:"T":W_CumulTotBrutAsso:"A":W_CumulTrancheAAsso:"B":W_CumulTrancheBAsso:"C":W_CumulTrancheCAsso

   W_Ligne=W_Ligne:"S000000000000D000000000000E000000000000F000000000000U000000000000"

   W_Ligne=W_Ligne:SPACE(397):W_NoInst:W_NoIdent

   W_NoLigne=W_NoLigne+1
   ENR_DADSCRC<W_NoLigne>=W_Ligne

RETURN

**************************************************************************
* Enregistrement 990
990
   IF W_Euro="VRAI" THEN
      W_Ligne="9999999999999999999995":SPACE(542)
   END ELSE
      W_Ligne="9999999999999999999990":SPACE(542)
   END
   W_NoLigne=W_NoLigne+1
   ENR_DADSCRC<W_NoLigne>=W_Ligne

RETURN
