EXECUTE "SET-THOUS ."
EXECUTE "SET-DEC ,"
EXECUTE "DATE.FORMAT"
OPEN "", "TPSTEMPO" TO F.TPSTEMPO ELSE STOP
OPEN "", "CIVILAIDANT" TO F.CIVILAIDANT ELSE STOP
OPEN "", "SECTEUR" TO F.SECTEUR ELSE STOP
PROCREAD PARAMETRES ELSE STOP

i = 0
W_Nb = 1
LOOP
i = INDEX(PARAMETRES,"|",W_Nb)
WHILE INDEX(PARAMETRES,"|",W_Nb+1) # 0
W_Nb = W_Nb + 1
REPEAT

W_Requete = "AFFICHEPLANNING |":PARAMETRES[23,i-21]
W_FinParam = PARAMETRES[i+1,LEN(PARAMETRES)-i]
DateDeb = FIELD(W_FinParam,"-",2)
DateFin = FIELD(W_FinParam,"-",3)
W_CleRetour = FIELD(W_Requete,"|",2)
W_Tri = FIELD(W_Requete,"|",7)
IF FIELD(W_Requete,"|",8) # "" THEN
	W_Tri = ""
END


* Lancements du PR AFFICHEPLANNING

W_ListeDates = ""

NombreSemaines = 0
LOOP
NombreSemaines = NombreSemaines + 1
W_DateDeb = DateDeb + (NombreSemaines-1)*7
W_DateFin = W_DateDeb + 6
WHILE W_DateFin <= DateFin
	W_ListeDates<NombreSemaines,1> = W_DateDeb
	W_ListeDates<NombreSemaines,2> = W_DateFin
	i = INDEX(W_Requete,"|",6)
	W_Temp = W_Requete[i,LEN(W_Requete)-i+1]
	i = INDEX(W_Requete,"|",4)
	W_Requete = W_Requete[1,i]:W_DateDeb:"|":W_DateFin:W_Temp
	*FIELD(W_Requete,"|",5) = W_DateDeb
	*FIELD(W_Requete,"|",5) = W_DateFin
	
	EXECUTE W_Requete
	READ ENR FROM F.TPSTEMPO, "AFFICHEPLANNING":W_CleRetour ELSE ENR_TEMPO = ""
	WRITE ENR ON F.TPSTEMPO, "PLANNINGMULTISEMAINE":W_CleRetour:"SEM":NombreSemaines

	DELETE F.TPSTEMPO, "AFFICHEPLANNING":W_CleRetour
	*DEBUG
REPEAT
NombreSemaines = NombreSemaines - 1
READ ENR_RESULT FROM F.TPSTEMPO, "PLANNINGMULTISEMAINE":W_CleRetour:"SEM1" ELSE ENR_RESULT = ""
DELETE F.TPSTEMPO, "PLANNINGMULTISEMAINE":W_CleRetour:"SEM1"

* Nb : ENR_RESULT contient systmatiquement la semaine 1
* => parcours de ENR_RESULT pouyr indiquer les dates de la semaine 1:
iResult = 0
LOOP
iResult = iResult + 1
WHILE ENR_RESULT<iResult>[1,4] # "#FIN"
	IF ENR_RESULT<iResult>[1,7] = "#Interv" THEN

		* 1ert : indication des dates :
		IF LEN(ENR_RESULT<iResult>) = 12 THEN
			ENR_RESULT<iResult> = ENR_RESULT<iResult>:"-":W_ListeDates<1,1>:"-":W_ListeDates<1,2>
		END ELSE
			W_Sect100 = ENR_RESULT<iResult>[13,LEN(ENR_RESULT<iResult>)-12]
			ENR_RESULT<iResult> = ENR_RESULT<iResult>[1,12]:"-":W_ListeDates<1,1>:"-":W_ListeDates<1,2>:"-":W_Sect100
		END
	END
REPEAT


IF NombreSemaines >= 2 THEN
 FOR W_IndSemaine = 2 TO NombreSemaines
   READ ENR_TEMP FROM F.TPSTEMPO, "PLANNINGMULTISEMAINE":W_CleRetour:"SEM":W_IndSemaine ELSE ENR_TEMP = ""
   
   GOSUB 100
   WRITE ENR_RESULT ON F.TPSTEMPO, "AFFICHEPLANNING":W_CleRetour
   DELETE F.TPSTEMPO, "PLANNINGMULTISEMAINE":W_CleRetour:"SEM":W_IndSemaine
 NEXT W_IndSemaine
END

WRITE ENR_RESULT ON F.TPSTEMPO, "AFFICHEPLANNING":W_CleRetour


STOP

100 *********************************************************************************
* 			Intgration de la semaine i dans ENR_RESULT				*
*************************************************************************************
iResult = 0
W_AidantEnCoursResult = ""
W_AidantEnCoursTemp = ""
W_DernAidantIntegre = ""
W_IndiceAidantResult = 0
W_IndiceAidantTemp = 0
W_TriResult = ""
W_TriTemp = ""
iTemp = 0
LOOP
iResult = iResult + 1
WHILE ENR_RESULT<iResult>[1,4] # "#FIN"
	IF ENR_RESULT<iResult>[1,7] = "#Interv" THEN

		W_AidantEnCoursResult = ENR_RESULT<iResult>[8,5]
		W_IndiceAidantResult = iResult
		READ ENR_CIVILAIDANT FROM F.CIVILAIDANT, W_AidantEnCoursResult ELSE ENR_CIVILAIDANT = ""
		W_NomPrenomResult = ENR_CIVILAIDANT<2>:" ":ENR_CIVILAIDANT<3>
		IF W_Tri # "" THEN
			IF W_Tri = "C" THEN
				W_TriResult = ENR_CIVILAIDANT<11>
			END ELSE
				READ ENR_SECTEUR FROM F.SECTEUR, ENR_CIVILAIDANT<31> ELSE ENR_SECTEUR = ""
				W_TriResult = ENR_SECTEUR<1>
			END
		END
		GOSUB 150
		* Attention : en cas d'insertion, on a dplac W_IndiceAidantResult :
		iResult = W_IndiceAidantResult
	END
REPEAT

IF ENR_TEMP<iTemp+1>[1,4] # "#FIN" THEN
	W_AidantEnCoursResult = "ZZZZ"
	W_IndiceAidantResult = iResult
	W_NomPrenomResult = "ZZZZZZ"
	IF W_Tri # "" THEN
		W_TriResult = "ZZZZZZZ"
	END
	GOSUB 150
END
RETURN

150 *********************************************************************************
*		Tests sur l'aidant en cours (ou suivants) de ENR_TEMP				*
*************************************************************************************
* On recherche l'aidant  insrer JUSTE AVANT l'aidant en cours => aidant infrieur
LOOP
IF W_AidantEnCoursTemp # "" AND W_AidantEnCoursTemp # W_DernAidantIntegre THEN
	READ ENR_CIVILAIDANT FROM F.CIVILAIDANT, W_AidantEnCoursTemp ELSE ENR_CIVILAIDANT = ""
	W_NomPrenomTemp = ENR_CIVILAIDANT<2>:" ":ENR_CIVILAIDANT<3>
	IF W_Tri # "" THEN
		IF W_Tri = "C" THEN
			W_TriTemp = ENR_CIVILAIDANT<11>
		END ELSE
			READ ENR_SECTEUR FROM F.SECTEUR, ENR_CIVILAIDANT<31> ELSE ENR_SECTEUR = ""
			W_TriTemp = ENR_SECTEUR<1>
		END
	END
 
	IF W_NomPrenomTemp < W_NomPrenomResult OR (W_Tri # "" AND W_TriTemp < W_TriResult) THEN
		GOSUB 200
	END ELSE
	
		RETURN
	END
END
iTemp = iTemp + 1
WHILE ENR_TEMP<iTemp>[1,4] # "#FIN"
	IF ENR_TEMP<iTemp>[1,7] = "#Interv" THEN
		W_AidantEnCoursTemp = ENR_TEMP<iTemp>[8,5]
		W_IndiceAidantTemp = iTemp
	END
REPEAT
* Ligne ci dessous : pour ne pas boucler aprs derniere ligne = "#FIN"
iTemp = iTemp - 1
RETURN

200 *********************************************************************************
*		Intgration de l'aidant en cours (ou suivants) de ENR_TEMP			*
*************************************************************************************
IF LEN(ENR_TEMP<W_IndiceAidantTemp>) = 12 THEN
	ENR_RESULT = INSERT(ENR_RESULT,W_IndiceAidantResult;ENR_TEMP<W_IndiceAidantTemp>:"-":W_ListeDates<W_IndSemaine,1>:"-":W_ListeDates<W_IndSemaine,2>)
END ELSE
	W_Sect200 = ENR_TEMP<W_IndiceAidantTemp>[13,LEN(ENR_TEMP<W_IndiceAidantTemp>)-12]
	ENR_RESULT = INSERT(ENR_RESULT,W_IndiceAidantResult;ENR_TEMP<W_IndiceAidantTemp>[1,12]:"-":W_ListeDates<W_IndSemaine,1>:"-":W_ListeDates<W_IndSemaine,2>:"-":W_Sect200)
END
W_IndiceAidantResult = W_IndiceAidantResult + 1
IF W_AidantEnCoursTemp # W_DernAidantIntegre THEN
	i200 = 0
	LOOP
		i200 = i200 + 1
	WHILE ENR_TEMP<W_IndiceAidantTemp + i200>[1,7] # "#Interv" AND ENR_TEMP<W_IndiceAidantTemp + i200>[1,4] # "#FIN"
		ENR_RESULT = INSERT(ENR_RESULT,W_IndiceAidantResult;ENR_TEMP<W_IndiceAidantTemp+i200>)
		W_IndiceAidantResult = W_IndiceAidantResult + 1

	REPEAT
	W_DernAidantIntegre = W_AidantEnCoursTemp
	
END
RETURN
