EXECUTE "SET-THOUS ."
EXECUTE "SET-DEC ,"
EXECUTE "DATE.FORMAT"
OPEN "", "ACTIVITESBISAIDE" TO F.ACTIVITESBISAIDE ELSE STOP
OPEN "", "CIVILAIDANT" TO F.CIVILAIDANT ELSE STOP
OPEN "", "CIVILAIDE" TO F.CIVILAIDE ELSE STOP
OPEN "", "CONTRAT" TO F.CONTRAT ELSE STOP
OPEN "", "DETAILCALCUL" TO F.DETAILCALCUL ELSE STOP
OPEN "", "RESPONSABLE" TO F.RESPONSABLE ELSE STOP
OPEN "", "SECTEUR" TO F.SECTEUR ELSE STOP
OPEN "", "TABLES" TO F.TABLES ELSE STOP
OPEN "", "TEMPO" TO F.TEMPO ELSE STOP

*********************************************************
* Recuperation des arguments
PROCREAD ARGUMENTS ELSE PRINT "RECUP ARGUMENTS"
W_TypeStat=FIELD(ARGUMENTS,"|",2)
W_CodAssoc=FIELD(ARGUMENTS,"|",3)
W_TypeAct=FIELD(ARGUMENTS,"|",4)
W_Personnel=FIELD(ARGUMENTS,"|",5)
W_Tri=FIELD(ARGUMENTS,"|",6)
W_Selection=FIELD(ARGUMENTS,"|",7)
W_DateArret=FIELD(ARGUMENTS,"|",8)
W_TypeSorti=FIELD(ARGUMENTS,"|",9)
W_User=FIELD(ARGUMENTS,"|",10)

* Typede stat demand < 3 => Aid, >= 3 => Aidant. 
W_IndiceGestionAidant=3

W_DateArretExt=OCONV(W_DateArret,"D4/")
W_AnneeArret=W_DateArretExt[7,4]
W_MoisArret=W_DateArretExt[4,2]
W_JourArret=W_DateArretExt[1,2]

W_ListeReq=""
ENR_TEMPO=""
W_CodeLibTri=""
W_LibTri=""
W_LigneTab=0
W_AncCodeLibTri=""
W_TabStat=""
W_AncCodeRupture=""
W_Heures=0
W_SauveQualif=""

* Requete
GOSUB 10

BEGIN CASE
   CASE W_TypeStat="1"
      W_LibFic="TrancheAgeAide"
   CASE W_TypeStat="2"
      W_LibFic="TrancheAncienneteAide"
   CASE W_TypeStat="3"
      W_LibFic="TrancheAgeAidant"
   CASE W_TypeStat="4"
      W_LibFic="TrancheAncienneteAidant"   
   CASE W_TypeStat="5"
      W_LibFic="TrancheHeuresAidant"
END CASE

W_CleTempo=W_LibFic:W_User

IF MSGCODE<1>#209 THEN
   IF W_TypeStat < W_IndiceGestionAidant THEN
      SELECT F.ACTIVITESBISAIDE TO W_ListeReq
   END ELSE
      SELECT F.CONTRAT TO W_ListeReq
   END

   IF W_TypeStat = 5 THEN
      GOSUB 50
   END ELSE
      IF W_TypeStat => W_IndiceGestionAidant AND W_Tri ="Q" AND W_Selection = "" THEN
         * Traitement slection Qualifcontrat
         GOSUB 40
      END ELSE
         * Traitement slection autre que Qualifcontrat
         GOSUB 20
      END
   END
END ELSE
   ENR_TEMPO<1>="VIDE"
   WRITE ENR_TEMPO ON F.TEMPO,W_CleTempo
   STOP
END        

IF W_TypeSorti = "S" THEN
   WRITE W_TabStat ON F.TEMPO,W_CleTempo
END ELSE
   * Gestion graphique

   GOSUB 70
   W_TabStat=CONVERT(CHAR(253),";",W_TabStat)
   W_TabStat=CONVERT(CHAR(254),CHAR(13):CHAR(10),W_TabStat)

   IF W_TypeStat < W_IndiceGestionAidant THEN
      OPEN "", "STATAIDE" TO F.STAT ELSE STOP
      ENR_TEMPO<1>="STATAIDE"
   END ELSE
      OPEN "", "STATAIDANT" TO F.STAT ELSE STOP
      ENR_TEMPO<1>="STATAIDANT"
    END

   W_DateGene=OCONV(DATE(),"D4/")
   W_DateGene=W_DateGene[1,2]:W_DateGene[4,2]:W_DateGene[7,4]

   NoOrdre=1
   W_LibFic=W_LibFic:"-":W_CodAssoc:"-":W_DateGene:"-"
   W_IndiceLibFic=W_LibFic:NoOrdre:".csv"

   LOOP
      READ ENR_STAT FROM F.STAT,W_IndiceLibFic ELSE ENR_STAT=""
   WHILE ENR_STAT<1,1>#"" DO
      NoOrdre=NoOrdre+1
      W_IndiceLibFic=W_LibFic:NoOrdre:".csv"
   REPEAT
   WRITE W_TabStat ON F.STAT,W_IndiceLibFic
   ENR_TEMPO<2>=W_IndiceLibFic

   WRITE ENR_TEMPO ON F.TEMPO,W_CleTempo

END

STOP

*********************************************************************************
* Requete
10
IF W_TypeStat < W_IndiceGestionAidant THEN
   W_Requete = 'SSELECT ACTIVITESBISAIDE AVEC CodeAssocBisAide = "':W_CodAssoc:'" AND AVEC TypeActBisAide = "':W_TypeAct:'"'
   IF W_TypeStat = 1 THEN
      W_Requete = W_Requete:' AND AVEC NaisAide # ""'
   END
   IF W_Selection # "" THEN        
      BEGIN CASE
         CASE W_Tri="R"
            W_Requete = W_Requete:' AND AVEC CodeResponsableBisAide = "':W_Selection:'"'
         CASE W_Tri="S"
            W_Requete = W_Requete:' AND AVEC CodeSecteurBisAide = "':W_Selection:'"'
         CASE W_Tri="C"
            W_Requete = W_Requete:' AND AVEC CommuneBisAide = "':W_Selection:'"'
      END CASE
        
   END

   W_Requete = W_Requete:' AND AVEC DateDebAct <= "':W_DateArret:'" AND AVEC 1 => "':W_DateArret:'" OR = ""'
       
   BEGIN CASE
      CASE W_Tri="R"
         W_Requete = W_Requete:' PAR RespBisAide'
      CASE W_Tri="S"
         W_Requete = W_Requete:' PAR SecteurBisAide'
      CASE W_Tri="C"
         W_Requete = W_Requete:' PAR CommuneBisAide'
   END CASE
   W_Requete = W_Requete:' PAR CodeAide PAR DateDebAct'        

END ELSE

   W_Requete = 'SSELECT CONTRAT AVEC 65 = "" AND AVEC 2 = "':W_CodAssoc:'"'   
   BEGIN CASE
      CASE W_TypeAct="M"
         W_Requete = W_Requete:' AND AVEC 1 = "02"'
      CASE W_TypeAct="I"
         W_Requete = W_Requete:' AND AVEC 1 # "02"'
      CASE W_TypeAct="P"
         W_Requete = W_Requete:' AND AVEC 1 # "02" AND AVEC TypeActivite1 # "S"'
      CASE W_TypeAct="S"
         W_Requete = W_Requete:' AND AVEC 1 # "02" AND AVEC TypeActivite1 = "S"'
   END CASE

   BEGIN CASE
      CASE W_Personnel="P"
         W_Requete = W_Requete:' AND AVEC 6 = "P"'
      CASE W_Personnel="A"
         W_Requete = W_Requete:' AND AVEC 6 = "A"'
   END CASE

   IF W_TypeStat = W_IndiceGestionAidant THEN
      W_Requete = W_Requete:' AND AVEC NaissanceAidant # ""'
   END

   IF W_Selection # "" THEN        
      BEGIN CASE
         CASE W_Tri="Q"
            W_Requete = W_Requete:' AND AVEC DernQualifProf = "':W_Selection:'"'
         CASE W_Tri="S"
            W_Requete = W_Requete:' AND AVEC CodSecteurContrat = "':W_Selection:'"'
         CASE W_Tri="C"
            W_Requete = W_Requete:' AND AVEC LibCommuneAidant = "':W_Selection:'"'
      END CASE  
   END

   W_Requete = W_Requete:' AND AVEC 7 <= "':W_DateArret:'" AND AVEC 7 # "" AND AVEC 8 => "':W_DateArret:'" OR = ""'

   BEGIN CASE
      CASE W_Tri="Q"
         IF W_TypeStat => W_IndiceGestionAidant AND W_Tri ="Q" AND W_Selection = "" THEN
            * Gestion de la qualif sans selection precsise.
            W_Requete = W_Requete:' PAR CodeAidant PAR-DECR 7'
         END ELSE
            W_Requete = W_Requete:' PAR DernQualifProf PAR CodeAidant PAR-DECR 7'
         END
      CASE W_Tri="S"
         W_Requete = W_Requete:' PAR LibSecteurContrat PAR CodeAidant PAR 7'
      CASE W_Tri="C"
         W_Requete = W_Requete:' PAR LibCommuneAidant PAR CodeAidant PAR 7'
   END CASE

END

EXECUTE W_Requete
EXECUTE 'SAUVE-LISTE W_ListeReq'
EXECUTE "LISTE W_ListeReq" RETURNING MSGCODE

RETURN

***********************************************************************************
* Traitement de la slection
20

   BEGIN CASE
       CASE W_TypeStat=1
		READ ENR_TABLES FROM F.TABLES,"AGEAIDE" ELSE STOP
       CASE W_TypeStat=2
		READ ENR_TABLES FROM F.TABLES,"ANCIENNETEAIDE" ELSE STOP
       CASE W_TypeStat=3
		READ ENR_TABLES FROM F.TABLES,"AGEAIDANT" ELSE STOP
       CASE W_TypeStat=4
		READ ENR_TABLES FROM F.TABLES,"ANCIENNETEAIDANT" ELSE STOP
       CASE W_TypeStat=5
		READ ENR_TABLES FROM F.TABLES,"HEURESAIDANT" ELSE STOP
   END CASE

   W_Fini="FAUX"
   LOOP
      READNEXT W_CleReq FROM W_ListeReq ELSE W_Fini="VRAI"
   WHILE W_Fini="FAUX" DO
     W_CodeRupture=W_CleReq[1,5]
     IF W_CodeRupture # W_AncCodeRupture THEN
       
       IF W_TypeStat < W_IndiceGestionAidant THEN
         READ ENR_CIVILAIDE FROM F.CIVILAIDE,W_CodeRupture ELSE STOP
         W_CodeActBisAide=W_CleReq
         READ ENR_ACTIVITEBISAIDE FROM F.ACTIVITESBISAIDE,W_CodeActBisAide ELSE STOP
         BEGIN CASE
            CASE W_Tri="R"
               W_CodeLibTri=ENR_CIVILAIDE<39>
               READ ENR_RESPONSABLE FROM F.RESPONSABLE,W_CodeLibTri ELSE STOP
               W_LibTri=ENR_RESPONSABLE<1>
            CASE W_Tri="S"
               W_CodeLibTri=ENR_CIVILAIDE<40>
               W_CodeLibTri=W_CodeLibTri[1,3]
               READ ENR_SECTEUR FROM F.SECTEUR,W_CodeLibTri ELSE STOP
               W_LibTri=ENR_SECTEUR<1>
            CASE W_Tri="C"
               W_CodeLibTri=ENR_CIVILAIDE<11>
               W_LibTri=W_CodeLibTri
            CASE W_Tri="T"
               W_CodeLibTri="T"
               W_LibTri="Totalit"
         END CASE
	 W_Sexe=ENR_CIVILAIDE<17>
       END ELSE
         READ ENR_CIVILAIDANT FROM F.CIVILAIDANT,W_CodeRupture ELSE STOP
         READ ENR_CONTRAT FROM F.CONTRAT,W_CleReq ELSE STOP
         BEGIN CASE
            CASE W_Tri="Q"
               W_NbQualif=DCOUNT(ENR_CONTRAT<16>,CHAR(253))
               W_CodeLibTri=ENR_CONTRAT<16,W_NbQualif>
               W_LibTri=W_CodeLibTri
            CASE W_Tri="S"
               W_CodeLibTri=ENR_CIVILAIDANT<31>
               READ ENR_SECTEUR FROM F.SECTEUR,W_CodeLibTri ELSE STOP
               W_LibTri=ENR_SECTEUR<1>
            CASE W_Tri="C"
               W_CodeLibTri=ENR_CIVILAIDANT<11>
               W_LibTri=W_CodeLibTri
            CASE W_Tri="T"
               W_LibTri="Totalit"
               W_CodeLibTri="T"
         END CASE
	 W_Sexe=ENR_CIVILAIDANT<16>
       END

       IF W_CodeLibTri # W_AncCodeLibTri THEN

   	 * Ecriture du critre de tri dans le tableau ( ex : Secteur)
   	 BEGIN CASE
      		CASE W_Tri="R"
         		W_LigneTab=W_LigneTab+1
         		W_TabStat<W_LigneTab,1>="Responsable"
         		W_TabStat<W_LigneTab,2>=W_CodeLibTri
         		W_TabStat<W_LigneTab,3>=W_LibTri
      		CASE W_Tri="S"
         		W_LigneTab=W_LigneTab+1	
         		W_TabStat<W_LigneTab,1>="Secteur"
         		W_TabStat<W_LigneTab,2>=W_CodeLibTri
         		W_TabStat<W_LigneTab,3>=W_LibTri
      		CASE W_Tri="C"
         		W_LigneTab=W_LigneTab+1
         		W_TabStat<W_LigneTab,1>="Commune"
         		W_TabStat<W_LigneTab,2>=W_CodeLibTri
      		CASE W_Tri="Q"
         		W_LigneTab=W_LigneTab+1
         		W_TabStat<W_LigneTab,1>="Qualification professionnelle"
         		W_TabStat<W_LigneTab,2>=W_CodeLibTri
  	 END CASE

	 W_SauveLigne=W_LigneTab

   	 W_Virgule1=ENR_TABLES<1,6>
   	 W_PlaceVir1=INDEX(W_Virgule1,"N",1)
	 IF W_PlaceVir1 # 0 THEN
   	 	W_Virgule1="MR":W_Virgule1[W_PlaceVir1+1,1]:","
	 END ELSE
   	 	W_Virgule1=""
	 END

   	 W_Virgule2=ENR_TABLES<1,7>
   	 W_PlaceVir2=INDEX(W_Virgule2,"N",1)
	 IF W_PlaceVir2 # 0 THEN
   	 	W_Virgule2="MR":W_Virgule2[W_PlaceVir2+1,1]:","
	 END ELSE
   	 	W_Virgule2=""
	 END

   	 W_NbEltsTables=DCOUNT(ENR_TABLES<3>,CHAR(253))
   	 FOR iTab=1 TO W_NbEltsTables

          	W_TabStat<W_LigneTab+iTab,1>="De ":ENR_TABLES<3,iTab> W_Virgule1:"  ":ENR_TABLES<4,iTab> W_Virgule2
       		W_TabStat<W_LigneTab+iTab,2>=0
		W_TabStat<W_LigneTab+iTab,3>=0
		W_TabStat<W_LigneTab+iTab,4>=0

   	 NEXT iTab

    	 W_LigneTab=W_LigneTab+iTab

   	 W_TabStat<W_LigneTab,1>="Total"
   	 W_TabStat<W_LigneTab,2>=0
   	 W_TabStat<W_LigneTab,3>=0
   	 W_TabStat<W_LigneTab,4>=0

       END

         BEGIN CASE
            CASE W_TypeStat=1
		   W_DateStat=OCONV(ENR_CIVILAIDE<20>,"D4/")
            CASE W_TypeStat=2
		   W_DateStat=OCONV(W_CodeActBisAide[12,99],"D4/")
            CASE W_TypeStat=3
		   W_DateStat=OCONV(ENR_CIVILAIDANT<26>,"D4/")
            CASE W_TypeStat=4
		   W_DateStat=OCONV(ENR_CONTRAT<7>,"D4/")
            CASE W_TypeStat=5
               READ ENR_DETAILCALCUL FROM F.DETAILCALCUL,W_CleReq:W_AnneeArret:W_MoisArret THEN
	 	      W_Heures=W_Heures + ENR_DETAILCALCUL<6>
               END
         END CASE

         IF W_TypeStat=5 THEN
            W_Valeur=W_Heures
         END ELSE
            * Calcul les annes d'anciennet ou d'age
            GOSUB 30
         END

         iTab=W_NbEltsTables
         LOOP
         WHILE ENR_TABLES<3,iTab> > W_Valeur AND iTab # 0 DO
            iTab=iTab-1
         REPEAT

         IF iTab # 0 THEN

	    IF W_Sexe="M" THEN
            	W_TabStat<W_SauveLigne+iTab,2>=W_TabStat<W_SauveLigne+iTab,2>+1
   	    	W_TabStat<W_LigneTab,2>=W_TabStat<W_LigneTab,2>+1
	    END ELSE
            	W_TabStat<W_SauveLigne+iTab,3>=W_TabStat<W_SauveLigne+iTab,3>+1
   	    	W_TabStat<W_LigneTab,3>=W_TabStat<W_LigneTab,3>+1
	    END
            W_TabStat<W_SauveLigne+iTab,4>=W_TabStat<W_SauveLigne+iTab,4>+1

            * Gestion du total en bout de tableau
   	    W_TabStat<W_LigneTab,4>=W_TabStat<W_LigneTab,4>+1

         END
     END
     W_AncCodeLibTri=W_CodeLibTri
     W_AncCodeRupture=W_CodeRupture

   REPEAT

 RETURN

********************************************************
* Calcul les annes d'anciennet ou d'age
30
   W_AnneeFaite=W_AnneeArret-W_DateStat[7,4]
   W_MoisFait=W_MoisArret-W_DateStat[4,2]
   W_JourFait=W_JourArret-W_DateStat[1,2]
   IF W_JourFait<0 THEN
      W_MoisFait=W_MoisFait-1
   END
   IF W_MoisFait<0 THEN
      W_AnneeFaite=W_AnneeFaite-1
      W_MoisFait=12+W_MoisFait
   END
   W_Valeur=W_AnneeFaite

   IF W_TypeStat="2" THEN
      W_Valeur=W_Valeur*100
   END

RETURN

*******************************************************************
* Gestion de la Qualification professionnelle du contrat de travail
40
   W_Ligne0=""
   BEGIN CASE
       CASE W_TypeStat=3
		READ ENR_TABLES FROM F.TABLES,"AGEAIDANT" ELSE STOP
       CASE W_TypeStat=4
		READ ENR_TABLES FROM F.TABLES,"ANCIENNETEAIDANT" ELSE STOP
   END CASE

   W_NbEltsTables=DCOUNT(ENR_TABLES<3>,CHAR(253))

   W_Fini="FAUX"
   LOOP
      READNEXT W_CleReq FROM W_ListeReq ELSE W_Fini="VRAI"
   WHILE W_Fini="FAUX" DO
     W_CodeRupture=W_CleReq[1,5]
     IF W_CodeRupture # W_AncCodeRupture THEN
         READ ENR_CIVILAIDANT FROM F.CIVILAIDANT,W_CodeRupture ELSE STOP
         READ ENR_CONTRAT FROM F.CONTRAT,W_CleReq ELSE STOP
         W_NbQualif=DCOUNT(ENR_CONTRAT<16>,CHAR(253))
         W_CodeLibQualif=ENR_CONTRAT<16,W_NbQualif>
         W_LibQualif=W_CodeLibQualif

         BEGIN CASE
            CASE W_TypeStat=3
		   W_DateStat=OCONV(ENR_CIVILAIDANT<26>,"D4/")
            CASE W_TypeStat=4
		   W_DateStat=OCONV(ENR_CONTRAT<7>,"D4/")
         END CASE

         * Calcul les annes d'anciennet ou d'age
         GOSUB 30

         iTemp=1
         LOOP
         UNTIL W_TabStat<iTemp,2> = W_LibQualif OR W_TabStat<iTemp,2> = "" DO
            iTemp=iTemp+1
         REPEAT

         IF W_TabStat<iTemp,2> = "" THEN
		
         	W_LigneTab=iTemp

         	W_TabStat<W_LigneTab,1>="Qualification professionnelle"
         	W_TabStat<W_LigneTab,2>=W_CodeLibQualif

	 	W_SauveLigne=W_LigneTab

   		W_Virgule1=ENR_TABLES<1,6>
   		W_PlaceVir1=INDEX(W_Virgule1,"N",1)
	 	IF W_PlaceVir1 # 0 THEN
   			W_Virgule1="MR":W_Virgule1[W_PlaceVir1+1,1]:","
		END ELSE
   			W_Virgule1=""
		END

   		W_Virgule2=ENR_TABLES<1,7>
   		W_PlaceVir2=INDEX(W_Virgule2,"N",1)
	 	IF W_PlaceVir2 # 0 THEN
   			W_Virgule2="MR":W_Virgule2[W_PlaceVir2+1,1]:","
		END ELSE
   			W_Virgule2=""
		END

   	 	FOR iTab=1 TO W_NbEltsTables
          		W_TabStat<W_LigneTab+iTab,1>="De ":ENR_TABLES<3,iTab> W_Virgule1:"  ":ENR_TABLES<4,iTab> W_Virgule2
       			W_TabStat<W_LigneTab+iTab,2>=0
			W_TabStat<W_LigneTab+iTab,3>=0
			W_TabStat<W_LigneTab+iTab,4>=0

   	 	NEXT iTab

    	 	W_LigneTab=W_LigneTab+iTab

   	 	W_TabStat<W_LigneTab,1>="Total"
   	 	W_TabStat<W_LigneTab,2>=0
   	 	W_TabStat<W_LigneTab,3>=0
   	 	W_TabStat<W_LigneTab,4>=0
		W_SauveQualif=W_LibQualif
	 END ELSE

		W_SauveLigne=iTemp
		W_LigneTab=W_NbEltsTables+iTemp+1
         END

         * Positionnne sur la bonne colonne
         iTab=W_NbEltsTables
         LOOP
         WHILE ENR_TABLES<3,iTab> > W_Valeur AND iTab # 0 DO
            iTab=iTab-1
         REPEAT

       IF iTab # 0 THEN
	 IF ENR_CIVILAIDANT<16>="M" THEN
            	W_TabStat<W_SauveLigne+iTab,2>=W_TabStat<W_SauveLigne+iTab,2>+1
   	    	W_TabStat<W_LigneTab,2>=W_TabStat<W_LigneTab,2>+1
	 END ELSE
            	W_TabStat<W_SauveLigne+iTab,3>=W_TabStat<W_SauveLigne+iTab,3>+1
   	    	W_TabStat<W_LigneTab,3>=W_TabStat<W_LigneTab,3>+1
	 END
         W_TabStat<W_SauveLigne+iTab,4>=W_TabStat<W_SauveLigne+iTab,4>+1

         * Gestion du total en bout de tableau
   	 W_TabStat<W_LigneTab,4>=W_TabStat<W_LigneTab,4>+1
       END

     END

     W_AncCodeRupture=W_CodeRupture

   REPEAT
RETURN

***************************************************************************************
* Traitement de la stat/heures par aidant
50
   W_Ligne0=""
   READ ENR_TABLES FROM F.TABLES,"HEURESAIDANT" ELSE STOP

   W_NbEltsTables=DCOUNT(ENR_TABLES<3>,CHAR(253))

   W_Fini="FAUX"
   LOOP
      READNEXT W_CleReq FROM W_ListeReq ELSE W_Fini="VRAI"
   WHILE W_Fini="FAUX" DO
     W_CodeRupture=W_CleReq
     IF W_CodeRupture[1,5] # W_AncCodeRupture[1,5] AND W_AncCodeRupture # "" THEN

         IF W_TypeStat => W_IndiceGestionAidant AND W_Tri ="Q" AND W_Selection = "" THEN
            GOSUB 60
         END ELSE
            GOSUB 55
         END
     END
     READ ENR_DETAILCALCUL FROM F.DETAILCALCUL,W_CleReq:W_AnneeArret:W_MoisArret THEN
        W_Heures=W_Heures + ENR_DETAILCALCUL<6>
     END

     W_AncCodeLibTri=W_CodeLibTri
     W_AncCodeRupture=W_CodeRupture

   REPEAT

   IF W_TypeStat => W_IndiceGestionAidant AND W_Tri ="Q" AND W_Selection = "" THEN
      GOSUB 60
   END ELSE
      GOSUB 55
   END   

 RETURN

******************************************************************************
* Gestion de la stat heures
55
         READ ENR_CIVILAIDANT FROM F.CIVILAIDANT,W_AncCodeRupture[1,5] ELSE STOP
         READ ENR_CONTRAT FROM F.CONTRAT,W_AncCodeRupture ELSE STOP
         BEGIN CASE
            CASE W_Tri="Q"
               W_NbQualif=DCOUNT(ENR_CONTRAT<16>,CHAR(253))
               W_CodeLibTri=ENR_CONTRAT<16,W_NbQualif>
               W_LibTri=W_CodeLibTri
            CASE W_Tri="S"
               W_CodeLibTri=ENR_CIVILAIDANT<31>
               READ ENR_SECTEUR FROM F.SECTEUR,W_CodeLibTri ELSE STOP
               W_LibTri=ENR_SECTEUR<1>
            CASE W_Tri="C"
               W_CodeLibTri=ENR_CIVILAIDANT<11>
               W_LibTri=W_CodeLibTri
            CASE W_Tri="T"
               W_LibTri="Totalit"
               W_CodeLibTri="T"
         END CASE

         IF W_CodeLibTri # W_AncCodeLibTri THEN

   	 	* Ecriture du critre de tri dans le tableau ( ex : Secteur)
   	 	BEGIN CASE
      			CASE W_Tri="R"
         			W_LigneTab=W_LigneTab+1
         			W_TabStat<W_LigneTab,1>="Responsable"
         			W_TabStat<W_LigneTab,2>=W_CodeLibTri
         			W_TabStat<W_LigneTab,3>=W_LibTri
      			CASE W_Tri="S"
         			W_LigneTab=W_LigneTab+1
         			W_TabStat<W_LigneTab,1>="Secteur"
         			W_TabStat<W_LigneTab,2>=W_CodeLibTri
         			W_TabStat<W_LigneTab,3>=W_LibTri
      			CASE W_Tri="C"
         			W_LigneTab=W_LigneTab+1
         			W_TabStat<W_LigneTab,1>="Commune"
         			W_TabStat<W_LigneTab,2>=W_CodeLibTri
      			CASE W_Tri="Q"
         			W_LigneTab=W_LigneTab+1
         			W_TabStat<W_LigneTab,1>="Qualification professionnelle"
         			W_TabStat<W_LigneTab,2>=W_CodeLibTri
  	 	END CASE

	 	W_SauveLigne=W_LigneTab

   		W_Virgule1=ENR_TABLES<1,6>
   		W_PlaceVir1=INDEX(W_Virgule1,"N",1)
	 	IF W_PlaceVir1 # 0 THEN
   			W_Virgule1="MR":W_Virgule1[W_PlaceVir1+1,1]:","
		END ELSE
   			W_Virgule1=""
		END

   		W_Virgule2=ENR_TABLES<1,7>
   		W_PlaceVir2=INDEX(W_Virgule2,"N",1)
	 	IF W_PlaceVir1 # 0 THEN
   			W_Virgule2="MR":W_Virgule2[W_PlaceVir2+1,1]:","
		END ELSE
   			W_Virgule2=""
		END

   	 	FOR iTab=1 TO W_NbEltsTables

          		W_TabStat<W_LigneTab+iTab,1>="De ":ENR_TABLES<3,iTab> W_Virgule1:"  ":ENR_TABLES<4,iTab> W_Virgule2
       			W_TabStat<W_LigneTab+iTab,2>=0
			W_TabStat<W_LigneTab+iTab,3>=0
			W_TabStat<W_LigneTab+iTab,4>=0

   	 	NEXT iTab

    	 	W_LigneTab=W_LigneTab+iTab

   	 	W_TabStat<W_LigneTab,1>="Total"
   	 	W_TabStat<W_LigneTab,2>=0
   	 	W_TabStat<W_LigneTab,3>=0
   	 	W_TabStat<W_LigneTab,4>=0

         END

         W_Valeur=W_Heures

         iTab=W_NbEltsTables
         LOOP
         WHILE ENR_TABLES<3,iTab> > W_Valeur AND iTab # 0 DO
            iTab=iTab-1
         REPEAT

         IF iTab # 0 THEN

	    IF ENR_CIVILAIDANT<16>="M" THEN
            	W_TabStat<W_SauveLigne+iTab,2>=W_TabStat<W_SauveLigne+iTab,2>+1
   	    	W_TabStat<W_LigneTab,2>=W_TabStat<W_LigneTab,2>+1
	    END ELSE
            	W_TabStat<W_SauveLigne+iTab,3>=W_TabStat<W_SauveLigne+iTab,3>+1
   	    	W_TabStat<W_LigneTab,3>=W_TabStat<W_LigneTab,3>+1
	    END
            W_TabStat<W_SauveLigne+iTab,4>=W_TabStat<W_SauveLigne+iTab,4>+1

            * Gestion du total en bout de tableau
   	    W_TabStat<W_LigneTab,4>=W_TabStat<W_LigneTab,4>+1

         END

         W_Heures=0

RETURN

******************************************************************************
* Gestion de la stat heures avec qualif professionnel
60
         READ ENR_CIVILAIDANT FROM F.CIVILAIDANT,W_AncCodeRupture[1,5] ELSE STOP
         READ ENR_CONTRAT FROM F.CONTRAT,W_AncCodeRupture ELSE STOP
         W_NbQualif=DCOUNT(ENR_CONTRAT<16>,CHAR(253))
         W_CodeLibQualif=ENR_CONTRAT<16,W_NbQualif>
         W_LibQualif=W_CodeLibQualif

         W_Valeur=W_Heures

         iTemp=1
         LOOP
         UNTIL W_TabStat<iTemp,2> = W_LibQualif OR W_TabStat<iTemp,2> = "" DO
            iTemp=iTemp+1
         REPEAT

         IF W_TabStat<iTemp,2> = "" THEN

         	W_LigneTab=iTemp

         	W_TabStat<W_LigneTab,1>="Qualification professionnelle"
         	W_TabStat<W_LigneTab,2>=W_CodeLibQualif

	 	W_SauveLigne=W_LigneTab

   		W_Virgule1=ENR_TABLES<1,6>
   		W_PlaceVir1=INDEX(W_Virgule1,"N",1)
	 	IF W_PlaceVir1 # 0 THEN
   			W_Virgule1="MR":W_Virgule1[W_PlaceVir1+1,1]:","
		END ELSE
   			W_Virgule1=""
		END

   		W_Virgule2=ENR_TABLES<1,7>
   		W_PlaceVir2=INDEX(W_Virgule2,"N",1)
	 	IF W_PlaceVir1 # 0 THEN
   			W_Virgule2="MR":W_Virgule2[W_PlaceVir2+1,1]:","
		END ELSE
   			W_Virgule2=""
		END

   	 	FOR iTab=1 TO W_NbEltsTables

          		W_TabStat<W_LigneTab+iTab,1>="De ":ENR_TABLES<3,iTab> W_Virgule1:"  ":ENR_TABLES<4,iTab> W_Virgule2
       			W_TabStat<W_LigneTab+iTab,2>=0
			W_TabStat<W_LigneTab+iTab,3>=0
			W_TabStat<W_LigneTab+iTab,4>=0

   	 	NEXT iTab

    	 	W_LigneTab=W_LigneTab+iTab

   	 	W_TabStat<W_LigneTab,1>="Total"
   	 	W_TabStat<W_LigneTab,2>=0
   	 	W_TabStat<W_LigneTab,3>=0
   	 	W_TabStat<W_LigneTab,4>=0

	 END ELSE
	 	W_SauveLigne=iTemp
		W_LigneTab=W_NbEltsTables+iTemp+1
         END

         * Positionnne sur la bonne colonne
         iTab=W_NbEltsTables
         LOOP
         WHILE ENR_TABLES<3,iTab> > W_Valeur AND iTab # 0 DO
            iTab=iTab-1
         REPEAT

	 IF ENR_CIVILAIDANT<16>="M" THEN
            	W_TabStat<W_SauveLigne+iTab,2>=W_TabStat<W_SauveLigne+iTab,2>+1
   	    	W_TabStat<W_LigneTab,2>=W_TabStat<W_LigneTab,2>+1
	 END ELSE
            	W_TabStat<W_SauveLigne+iTab,3>=W_TabStat<W_SauveLigne+iTab,3>+1
   	    	W_TabStat<W_LigneTab,3>=W_TabStat<W_LigneTab,3>+1
	 END
         W_TabStat<W_SauveLigne+iTab,4>=W_TabStat<W_SauveLigne+iTab,4>+1

         * Gestion du total en bout de tableau
   	 W_TabStat<W_LigneTab,4>=W_TabStat<W_LigneTab,4>+1

       W_Heures=0

RETURN


******************************************************************************
* MISE EN FORME FICHIER GRAPHIQUE

70

W_Compte=DCOUNT(W_TabStat,CHAR(254))
W_Sauve=""
FOR i= 1 TO W_Compte
	IF W_TabStat<i,1>[1,5]="Respo" OR W_TabStat<i,1>[1,5]="Commu" OR W_TabStat<i,1>[1,5]="Secte" OR W_TabStat<i,1>[1,5]="Quali" THEN
		IF W_TabStat<i,3> # "" THEN
			W_Sauve=W_TabStat<i,3>
		END ELSE
			W_Sauve=W_TabStat<i,2>
		END
	END ELSE
		W_TabStat=DELETE(W_TabStat,i,4)
		IF W_Sauve # "" THEN
	      		W_TabStat=INSERT(W_TabStat,i,1;W_Sauve)
		END

	END

NEXT i

FOR i= W_Compte TO 1 STEP -1
	IF W_TabStat<i,1>[1,5]="Respo" OR W_TabStat<i,1>[1,5]="Commu" OR W_TabStat<i,1>[1,5]="Secte" OR W_TabStat<i,1>[1,5]="Quali" OR W_TabStat<i,2>[1,5]="Total" OR W_TabStat<i,1>[1,5]="Total" THEN
		W_TabStat=DELETE(W_TabStat,i)
	END
NEXT i

BEGIN CASE
	CASE W_Tri="R"
		W_Temp="Responsable;Tranche;Homme;Femme"
        CASE W_Tri="S"
		W_Temp="Secteur;Tranche;Homme;Femme"
	CASE W_Tri="C"
		W_Temp="Commune;Tranche;Homme;Femme"
	CASE W_Tri="Q"
		W_Temp="Qualification professionnelle;Tranche;Homme;Femme"
	CASE W_Tri="T"
		W_Temp="Tranche;Homme;Femme"
END CASE

W_TabStat=INSERT(W_TabStat,i;W_Temp)

RETURN