***************************************************************
* programme d'extraction de donnes aidant
* gnration d'un fichier pour SOLEM
***************************************************************

SUBROUTINE EXTRACTAIDANTSOLEM(RETURNVAL, ARGUMENTS, OUTPUT)
* Ouvertures des fichiers

EXECUTE "SET-THOUS ."
OPEN "", "ASSOCIATION" TO F.ASSOCIATION ELSE STOP
OPEN "", "CIVILAIDANT" TO F.CIVILAIDANT ELSE STOP
OPEN "", "COMPTEUR" TO F.COMPTEUR ELSE STOP
OPEN "", "CONTRAT" TO F.CONTRAT ELSE STOP
OPEN "", "FUSION" TO F.FUSION ELSE STOP

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

W_Systeme=FIELD(ARGUMENTS,"|",1)
W_Type=FIELD(ARGUMENTS,"|",2)
IF W_Type="S" THEN
	W_TypeSelect=FIELD(ARGUMENTS,"|",3)
	W_Select=FIELD(ARGUMENTS,"|",4)
	W_Aidant=FIELD(ARGUMENTS,"|",5)
	W_Aide=FIELD(ARGUMENTS,"|",6)
	W_CodeCommune=FIELD(ARGUMENTS,"|",7)
END

*********************************************************
* PROGRAMME PRINCIPAL

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

READ ENR_COMPTEUR FROM F.COMPTEUR,"999" ELSE ENR_COMPTEUR=""

GOSUB 40

ENR_FUSION=""
W_SauveAidant=""
W_Cle=""

W_ListeReq=""
* Requete
GOSUB 10

IF MSGCODE<1>#209 THEN

   SELECT F.CONTRAT TO W_ListeReq
   GOSUB 20

END     
    
ENR_COMPTEUR<21>=W_SauveAidant

WRITE ENR_COMPTEUR ON F.COMPTEUR,"999"

IF ENR_FUSION # "" THEN
	W_Cle="AIDANT.TXT"
*	IF W_Type="S" THEN
*		BEGIN CASE
*			CASE W_TypeSelect="S" 
*				W_Cle=W_Cle:"-":W_Select
*			CASE W_TypeSelect="C" 
*				W_Cle=W_Cle:"-":W_CodeCommune
*		END CASE
*	END
*
*	W_Cle=W_Cle:"-":TIMEDATE()[19,2]
*	BEGIN CASE
*		CASE TIMEDATE()[13,3] = "Jan"
*			W_Cle=W_Cle:"01"
*		CASE TIMEDATE()[13,3] = "Feb"
*			W_Cle=W_Cle:"02"
*		CASE TIMEDATE()[13,3] = "Mar"
*			W_Cle=W_Cle:"03"
*		CASE TIMEDATE()[13,3] = "Apr"
*			W_Cle=W_Cle:"04"
*		CASE TIMEDATE()[13,3] = "May"
*			W_Cle=W_Cle:"05"
*		CASE TIMEDATE()[13,3] = "Jun"
*			W_Cle=W_Cle:"06"
*		CASE TIMEDATE()[13,3] = "Jul"
*			W_Cle=W_Cle:"07"
*		CASE TIMEDATE()[13,3] = "Aug"
*			W_Cle=W_Cle:"08"
*		CASE TIMEDATE()[13,3] = "Sep"
*			W_Cle=W_Cle:"09"
*		CASE TIMEDATE()[13,3] = "Oct"
*			W_Cle=W_Cle:"10"
*		CASE TIMEDATE()[13,3] = "Nov"
*			W_Cle=W_Cle:"11"
*		CASE TIMEDATE()[13,3] = "Dec"
*			W_Cle=W_Cle:"12"
*	END CASE
*	W_Cle=W_Cle:TIMEDATE()[10,2]:"-":TIMEDATE()[1,2]:TIMEDATE()[4,2]:".txt"

	WRITE ENR_FUSION ON F.FUSION,W_Cle
END

OUTPUT=W_Cle

RETURN

*********************************************************************************
* Requete
10

	W_Date=OCONV(DATE(),"D4/")

	W_Mois=W_Date[4,2]
	W_An=W_Date[7,4]
	FOR i=1 TO 2
		W_Mois=W_Mois-1
		IF INT(W_Mois) = 0 THEN
			W_Mois="12"
			W_An=W_An-1
		END
	NEXT i
	W_Date=ICONV("01":"/":W_Mois:"/":W_An,"D4/")-1

	IF W_Type="S" THEN
		BEGIN CASE
			CASE W_TypeSelect="S" 
				W_TempBis=' AND AVEC CodSecteurContrat = "':W_Select:'"'
			CASE W_TypeSelect="C" 
				W_TempBis=' AND AVEC CommunePostAidant = "':W_Select:'"'
			CASE W_TypeSelect="A" 
				W_TempBis=' AND AVEC CodeAidant >= "':W_Aidant:'"'
		END CASE
	END

	W_TempTer=' AND AVEC 2 = "':W_Asso<1>:'"'
	W_CountAsso=DCOUNT(W_Asso,CHAR(254))
	FOR i=2 TO W_CountAsso
		W_TempTer = W_TempTer:' OR = "':W_Asso<i>:'"'
	NEXT i
	W_TempTer = W_TempTer:' AND AVEC 65 = "" AND AVEC 6 ="P"'

	W_Temp = 'SELECT CONTRAT AVEC 7 <= "':DATE():'" AND AVEC 8 >= "':DATE():'" OR = ""'
	W_Temp=W_Temp:W_TempTer
	IF W_Type="S" THEN
		W_Temp=W_Temp:W_TempBis
	END
	W_Temp = W_Temp:' OR AVEC 7 >= "':DATE():'"' 
	W_Temp=W_Temp:W_TempTer
	IF W_Type="S" THEN
		W_Temp=W_Temp:W_TempBis
	END
	W_Temp = W_Temp:' OR AVEC 8 >= "':W_Date:'"' 
	W_Temp=W_Temp:W_TempTer
	IF W_Type="S" THEN
		W_Temp=W_Temp:W_TempBis
	END

	W_Temp=W_Temp:' PAR @ID'

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

RETURN

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

   W_CodeAidant=""
   W_AncCodeAidant=""
   i=0
   W_Fini="FAUX"
   LOOP
      	READNEXT W_CleReq FROM W_ListeReq ELSE W_Fini="VRAI"
   WHILE W_Fini="FAUX" DO
	W_CodeAidant=W_CleReq[1,5]

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

        IF W_CodeAidant # W_AncCodeAidant THEN
          	i=i+1
         	READ ENR_CIVILAIDANT FROM F.CIVILAIDANT,W_CodeAidant ELSE ENR_CIVILAIDANT=""
         	READ ENR_ASSOCIATION FROM F.ASSOCIATION,ENR_CONTRAT<2> ELSE ENR_ASSOCIATION=""

         	* Mise en forme adresse 1
         	Indice=5
         	Tableau=ENR_CIVILAIDANT
         	GOSUB 30
		W_NumSecu=ENR_CIVILAIDANT<17>:ENR_CIVILAIDANT<18>
		W_NumSecu=CONVERT(" ","",W_NumSecu)

		W_Tel=CONVERT(" ","",ENR_CIVILAIDANT<12>)
	      	W_Tel=CONVERT("/","",W_Tel)
	      	W_Tel=CONVERT(".","",W_Tel)
	      	W_Tel=CONVERT("-","",W_Tel)

		W_Tel2=CONVERT(" ","",ENR_CIVILAIDANT<14>)
	      	W_Tel2=CONVERT("/","",W_Tel2)
	      	W_Tel2=CONVERT(".","",W_Tel2)
	      	W_Tel2=CONVERT("-","",W_Tel2)

            	ENR_FUSION<i>=ENR_CIVILAIDANT<2> "L#40":ENR_CIVILAIDANT<3> "L#40":W_NumSecu "L#15":MiseEnFormeAdresse1 "L#40"
            	ENR_FUSION<i>=ENR_FUSION<i>:ENR_CIVILAIDANT<9> "L#40":ENR_CIVILAIDANT<10>:ENR_CIVILAIDANT<11> "L#40":W_Tel "L#40"
            	ENR_FUSION<i>=ENR_FUSION<i>:SPACE(40):W_Tel2 "L#40":SPACE(80):W_CodeAidant "L#10":ENR_ASSOCIATION<39> "L#10"

		W_DateFin=OCONV(ENR_CIVILAIDANT<36>,"D4/")
		W_DateFin=CONVERT("/","",W_DateFin)
		W_DateFin=W_DateFin "L#8"

            	ENR_FUSION<i>=ENR_FUSION<i>:W_DateFin

		IF W_SauveAidant="" THEN
			W_SauveAidant=W_CodeAidant
		END ELSE
			IF W_CodeAidant > W_SauveAidant THEN
				W_SauveAidant=W_CodeAidant
			END
		END

	END

        W_AncCodeAidant=W_CodeAidant
   REPEAT
    
 RETURN

************************************************************************
* Mise en forme adresse 1
30
    MiseEnFormeAdresse1 = ""

    IF Tableau<Indice> # "" THEN
        MiseEnFormeAdresse1 = Tableau<Indice>:" "
    END
    
    IF Tableau<Indice + 1> # "" THEN
        MiseEnFormeAdresse1 = MiseEnFormeAdresse1:Tableau<Indice + 1> :" "
    END
    
    IF Tableau<Indice + 2> # "" THEN
        MiseEnFormeAdresse1 = MiseEnFormeAdresse1:Tableau<Indice + 2> :" "
    END
    
    IF Tableau<Indice + 3> # "" THEN
        MiseEnFormeAdresse1 = MiseEnFormeAdresse1:Tableau<Indice + 3>
    END
RETURN

************************************************************************
* REQUETE ASSOCIATION
40

	W_RequeteAsso=""
	W_Asso=""

	EXECUTE 'SELECT ASSOCIATION AVEC 38 = "':W_Systeme:'" PAR @ID'
	EXECUTE 'SAUVE-LISTE W_RequeteAsso'
	EXECUTE "LISTE W_RequeteAsso" RETURNING MSGCODE

	IF MSGCODE<1> # 209 THEN
		SELECT F.ASSOCIATION TO W_RequeteAsso
		W_Fini = "FAUX"
		LOOP
			READNEXT W_CleAsso FROM W_RequeteAsso ELSE W_Fini = "VRAI"
		WHILE W_Fini = "FAUX" DO

			W_Asso<DCOUNT(W_Asso,CHAR(254))+1> = W_CleAsso

		REPEAT
	END

RETURN
