***********************************************************************************
***********************************************************************************
**                                                                               **
**		Gestion de l'impression du registre mdical SSIAD                **
**                                                                               **
**                                                                               **
** Le 08/09/04                                                  Cyprien         **
**                                                                               **
***********************************************************************************
***********************************************************************************

SUBROUTINE SSIADREGISTREMED(RETURNVAL,W_Entree,W_Sortie)

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

***********************************************************************************
**                                                                               **
**                       Ouverture des fichiers                                  **
**                                                                               **
***********************************************************************************
EXECUTE "SET-THOUS ."
OPEN "", "ACTIVITESAIDE" TO F.ACTIVITESAIDE ELSE RETURN
OPEN "", "ACTIVITES" TO F.ACTIVITES ELSE RETURN
OPEN "", "AGGIRAIDE" TO F.AGGIRAIDE ELSE RETURN
OPEN "", "ASSOCIATION" TO F.ASSOCIATION ELSE RETURN
OPEN "", "CIVILAIDE" TO F.CIVILAIDE ELSE RETURN
OPEN "", "COMMUNES" TO F.COMMUNES ELSE RETURN
OPEN "", "FICHEMEDAIDE" TO F.FICHEMEDAIDE ELSE RETURN
OPEN "", "FUSION" TO F.FUSION ELSE RETURN
OPEN "", "RESPONSABLE" TO F.RESPONSABLE ELSE RETURN
OPEN "", "SECTEUR" TO F.SECTEUR ELSE RETURN
OPEN "", "SSIADABSENCESAIDE" TO F.SSIADABSENCESAIDE ELSE RETURN
OPEN "", "SSIADACCORDS" TO F.SSIADACCORDS ELSE RETURN
OPEN "", "SSIADELEMGEST" TO F.SSIADELEMGEST ELSE RETURN
OPEN "", "SSIADORGAFFIL" TO F.SSIADORGAFFIL ELSE RETURN
OPEN "", "SSIADREGIME" TO F.SSIADREGIME ELSE RETURN
OPEN "", "TEMPO" TO F.TEMPO ELSE RETURN
OPEN "", "TABLES" TO F.TABLES ELSE RETURN
OPEN "", "TABLES" TO F.MOTIFSORTIESID ELSE RETURN
OPEN "", "TABLES" TO F.MOTIFSORTIE ELSE RETURN

***********************************************************************************
**                                                                               **
**                      Rcupration des arguments                               **
**                                                                               **
***********************************************************************************
W_Entite = W_Entree<1>
W_Type = W_Entree<2>
W_Select = W_Entree<3>
W_Periode = W_Entree<4>
W_Tri = W_Entree<5>
W_SSTri = W_Entree<6>
W_Ordre = W_Entree<7>
W_Edition = W_Entree<8>
W_Printer = W_Entree<9>
W_Rupture = W_Entree<10>

***********************************************************************************
**                                                                               **
**                      Initialisation des variables                             **
**                                                                               **
***********************************************************************************

* Decription du tableau Tab
* Tab(i,1) = E/EA/S/SA
* Tab(i,2) = Date de dbut ou de fin d'accord ou d'absence en fonction de Tab(i,1)
* Tab(i,3) = Code table MOTIFSORTIE de l'absence ou de l'activit
* Tab(i,4) = Code de l'aid
* Tab(i,5) = Nom-Prenom de l'aid
* Tab(i,6) = Code de l'activit

iAno=0
W_Ano = 0
i = 0
W_Count = 0
Tab = ""
TabAno = ""
W_Max = 0
W_Test = 0
W_Aide = 0
W_Clef = 0
ENR_TEMPO = ""
W_Date_Test = ""
TabTempoPrec=""

*ici
W_DebutPeriode=ICONV(W_Periode[1,10],"D4/")
W_FinPeriode=ICONV(W_Periode[12,10],"D4/")

* Cration de la requte
GOSUB 100

* Remplissage du tableau
GOSUB 200

j = 1
IF TabAno<j> = "" THEN
	IF W_Printer # "CSV" THEN
	   * Tri du tableau
	   GOSUB 300
	END
	* Impression
	IF W_Ano # 1 THEN
		GOSUB 400
	END
	i = DCOUNT(W_Sortie,CHAR(254))
END ELSE

	READ ENR_ASSOC FROM F.ASSOCIATION,W_Entite ELSE ENR_ASSOC = ""
	READ ENR_CIVILAIDE FROM F.CIVILAIDE,TabAno[1,7] ELSE ENR_CIVILAIDE = ""
	TabAno=INSERT(TabAno,1;"|----------+--------------------------------+--------------------------------------------------------------------------------------|")
	TabAno=INSERT(TabAno,1;"|   AIDE   |":SPACE(32):"|":SPACE(86):"|")
	TabAno=INSERT(TabAno,1;"|":SPACE(10):"|         NOM ET PRENOM          |                                        ANOMALIE                                      |")
	TabAno=INSERT(TabAno,1;"|   CODE   |":SPACE(32):"|":SPACE(86):"|")
	TabAno=INSERT(TabAno,1;" ----------------------------------------------------------------------------------------------------------------------------------")
	TabAno=INSERT(TabAno,1;" ")
	TabAno=INSERT(TabAno,1;" ")
	TabAno=INSERT(TabAno,1;" ")
	TabAno=INSERT(TabAno,1;"Tel : ":ENR_ASSOC<12>)
	TabAno=INSERT(TabAno,1;ENR_ASSOC<8>:" ":ENR_ASSOC<9>)
	TabAno=INSERT(TabAno,1;ENR_ASSOC<7>: SPACE(42-LEN(ENR_ASSOC<7>)) : "-----------------------------------------------")
	TabAno=INSERT(TabAno,1;ENR_ASSOC<3>:" ":ENR_ASSOC<5>:" ":ENR_ASSOC<6>)
	TabAno=INSERT(TabAno,1;ENR_ASSOC<1>: SPACE(60-LEN(ENR_ASSOC<1>)) : "LISTE DES ANOMALIES DE L'EXTRAIT DU REGISTRE MEDICAL")
	TabAno=INSERT(TabAno,1;"")
	W_Sortie = TabAno
END

BEGIN CASE
	CASE W_Printer = "MATRIC"
		WRITE W_Sortie ON F.TEMPO,"SSIAD"
	CASE W_Printer = "CSV"
		WRITE W_Sortie ON F.FUSION,"SSIADREGMED.CSV"
	CASE W_Printer = "LASER"
		i = DCOUNT(W_Sortie,CHAR(254))
		FOR j = 1 TO i
			IF INDEX(W_Sortie<j>,"--",1) # 0 THEN
				ENR_TEMPO<j> = CONVERT("--","  ",W_Sortie<j>)
			END ELSE
				ENR_TEMPO<j> = W_Sortie<j>
			END
			ENR_TEMPO<j> = CONVERT("+"," ",ENR_TEMPO<j>)
			ENR_TEMPO<j> = CONVERT("|"," ",ENR_TEMPO<j>)
		NEXT j
		W_Sortie = ENR_TEMPO

		WRITE ENR_TEMPO ON F.TEMPO,"SSIAD"
END CASE
RETURN

100
***********************************************************************************
**                                                                               **
**                      Cration de la requte                                   **
**                                                                               **
***********************************************************************************

READ ENR_REGIME FROM F.SSIADREGIME,"1" ELSE PRINT "Fichier SSIADREGIME non renseign."
READ ENR_TABLES FROM F.TABLES,"MOTIFSORTIESID" ELSE ENR_TABLES = ""
READ ENR_MOTIFSORTIE FROM F.MOTIFSORTIE,"MOTIFSORTIE" ELSE ENR_MOTIFSORTIE = ""
READ ENR_MOTIFSORTIESID FROM F.MOTIFSORTIESID,"MOTIFSORTIESID" ELSE ENR_MOTIFSORTIESID = ""

W_Requete=""
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!		Type de slection (1)
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

IF LEN(W_Type) > 1 AND W_Type[1,1] = "A" THEN
	W_Requete = 'SELECT SSIADACCORDS AVEC 3 ="':W_Entite:W_Type[2,LEN(W_Type)]:'" AND'
END ELSE
	W_Requete = 'SELECT SSIADACCORDS'
END


*W_Requete = W_Requete : ' AVEC 0 = "05735]" AND'



!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!		Priode de rfrence
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

W_Requete = W_Requete : ' AVEC 1 <= "': ICONV(W_Periode[12,10],"D4/") :'" AND AVEC 2 >= "': ICONV(W_Periode[1,10],"D4/") - 1 :'"'

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!		Type de slection (2)
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

BEGIN CASE
   CASE W_Type[1,1] = "V"
	W_Requete = W_Requete : ' AND AVEC CodeService = "' : W_Type[2,LEN(W_Type)] :'"'
*   CASE W_Type[1,1] = "A"
*	W_Requete = W_Requete : ' AND AVEC ActiviteAccord = "' : W_Type[2,LEN(W_Type)] :'"'
*   CASE W_Type[1,1] = "S"
END CASE

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!		Slection				 
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

BEGIN CASE
   CASE W_Select[1,1] = "R"
*	W_Requete = W_Requete : ' AND AVEC LibResponsable = "' : W_Select[2,LEN(W_Select)] :'"'
   CASE W_Select[1,1] = "S"
*	W_Requete = W_Requete : ' AND AVEC CodeSecteur = "' : W_Select[2,LEN(W_Select)] :'"'
   CASE W_Select[1,1] = "C"
*	W_Requete = W_Requete : ' AND AVEC Commune = "' : W_Select[2,LEN(W_Select)] :'"'
END CASE

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!			Tri et Ss-Tri
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
IF W_Tri # "" THEN
	W_Requete = W_Requete : ' AND AVEC CodRegSsAcc = "' : W_Tri[1,2] :'"'
END

IF W_SSTri # "" THEN
	W_Requete = W_Requete : ' AND AVEC CodSsRegSsAcc = "' : W_SSTri[1,2] :'"'
END

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!			Ordre
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

BEGIN CASE
	CASE W_Ordre[1,1] = "V"
		W_Requete = W_Requete : ' PAR NomPrenomAide PAR DateDebutAccord'
	CASE W_Ordre[1,1] = "E"
		W_Requete = W_Requete : ' PAR NomPrenomAide PAR DateDebutAccord'
	CASE W_Ordre[1,1] = "S"
		W_Requete = W_Requete : ' PAR NomPrenomAide PAR DateFinAccord'
	CASE W_Ordre[1,1] = "A"
		W_Requete = W_Requete : ' AND AVEC NomAide => "' : FIELD(W_Ordre[2,LEN(W_Ordre)], "|", 1) : ']" AND <= "' : FIELD(W_Ordre[2,LEN(W_Ordre)], "|", 2) : ']"'
		W_Requete = W_Requete : ' PAR NomPrenomAide PAR DateDebutAccord'
END CASE

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!			Tri				 
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

IF W_Tri # "" AND W_SSTri = "" THEN
	W_Requete = W_Requete : ' PAR CodSsRegSsAcc'
END ELSE
	IF W_Tri # "" THEN
		W_Requete = W_Requete : ' PAR CodRegSsAcc PAR CodSsRegSsAcc'
	END
END
W_Requete = W_Requete : ' PAR CodeAccord'

EXECUTE W_Requete

RETURN

200
***********************************************************************************
**                                                                               **
**                      Remplissage du tableau                                   **
**                                                                               **
***********************************************************************************
W_AccInfAct = "Faux"
W_Fini = "Faux"
i = 1
W_AncClef = ""
W_Clef = ""
indLect = 1
TabTempo = ""
j = 1
iTempo = 1 
W_AbsenceOk = "Faux"
LOOP
	READNEXT W_Clef ELSE W_Fini = "Vrai"
WHILE W_Fini = "Faux" DO
	READ ENR_SSIADACCORDS FROM F.SSIADACCORDS,W_Clef ELSE ENR_SSIADACCORDS = ""

	READ ENR_ACTIV FROM F.ACTIVITESAIDE,W_Clef[1,5] ELSE ENR_ACTIV = ""
	IF W_AncClef # W_Clef[1,5] AND indLect # 1 THEN
		W_AbsenceOk = "Faux"
		W_Count = DCOUNT(TabTempo,CHAR(254))
		FOR iTab = 1 TO W_Count
			GOSUB 210
		NEXT iTab
          IF TabTempo # "" THEN

		IF (TabTempo<W_Count,6> # "" AND TabTempo<W_Count,3> < TabTempo<W_Count,6> AND TabTempo<W_Count,3> < ICONV(W_Periode[12,10],"D4/")) OR (TabTempo<W_Count,6> = "" AND TabTempo<W_Count,3> < ICONV(W_Periode[12,10],"D4/")) THEN

			TabAno<j> = "| ":TabTempo<W_Count,1>[1,5]:SPACE(10-LEN(TabTempo<W_Count,1>[1,5])-1):"| ":ENR_CIVILAIDE<2> : " " : ENR_CIVILAIDE<3>:SPACE(32-LEN(ENR_CIVILAIDE<2> : " " : ENR_CIVILAIDE<3>)-1):"| Date fin accord infrieure  date fin activit ou priode de rfrence.":SPACE(86-LEN(" Date fin accord infrieure  date fin activit ou priode de rfrence.")):"|"
			j = j + 1
			TabAno<j> = "|----------+--------------------------------+--------------------------------------------------------------------------------------|"
			j = j + 1
		END	
          END
		TabTempo = ""
		iTempo = 1

	END
	READ ENR_ACTIV FROM F.ACTIVITESAIDE,W_Clef[1,5] ELSE ENR_ACTIV = ""
	W_ActiviteSansDate = "Faux"
	W_PasActivite = "Vrai"
	FOR indAct = 1 TO DCOUNT(ENR_ACTIV<1>,CHAR(253))
		IF ENR_SSIADACCORDS<3> = ENR_ACTIV<1,indAct> THEN
			W_PasActivite = "Faux"
			IF ENR_ACTIV<2,indAct> # "" THEN
*ici
			   IF ENR_ACTIV<3,indAct> >= ICONV(W_Periode[1,10],"D4/") OR ENR_ACTIV<3,indAct> = "" THEN
				IF ((ENR_ACTIV<2,indAct> <= ENR_SSIADACCORDS<2>) AND (ENR_ACTIV<3,indAct> >= ENR_SSIADACCORDS<1>)) OR ((ENR_ACTIV<2,indAct> <= ENR_SSIADACCORDS<2>) AND (ENR_ACTIV<3,indAct> ="")) THEN
					TabTempo<iTempo,1> = W_Clef
					TabTempo<iTempo,2> = ENR_SSIADACCORDS<1>
					TabTempo<iTempo,3> = ENR_SSIADACCORDS<2>		
					TabTempo<iTempo,4> = ENR_SSIADACCORDS<3>
					TabTempo<iTempo,5> = ENR_ACTIV<2,indAct>
					TabTempo<iTempo,6> = ENR_ACTIV<3,indAct>
					TabTempo<iTempo,7> = ENR_ACTIV<4,indAct>
					iTempo = iTempo + 1
				END
                     END
			END ELSE
				W_ActiviteSansDate = "Vrai"
			END
		END
	NEXT indAct
	IF W_PasActivite = "Vrai" THEN
		READ ENR_CIVILAIDE FROM F.CIVILAIDE,W_Clef[1,5] ELSE ENR_CIVILAIDE = ""
		TabAno<j> = "| ":W_Clef[1,5]:SPACE(10-LEN(W_Clef[1,5])-1):"| ":ENR_CIVILAIDE<2> : " " : ENR_CIVILAIDE<3>:SPACE(32-LEN(ENR_CIVILAIDE<2> : " " : ENR_CIVILAIDE<3>)-1):"| Pas d'activits.":SPACE(86-LEN(" Pas d'activits.")):"|"
		j = j + 1
		TabAno<j> = "|----------+--------------------------------+--------------------------------------------------------------------------------------|"
		j = j + 1
	END	
	IF W_ActiviteSansDate = "Vrai" THEN
		TabTempo<iTempo,1> = W_Clef
		TabTempo<iTempo,2> = ENR_SSIADACCORDS<1>
		TabTempo<iTempo,3> = ENR_SSIADACCORDS<2>		
		TabTempo<iTempo,4> = ENR_SSIADACCORDS<3>
		TabTempo<iTempo,5> = ""
		TabTempo<iTempo,6> = ""
		TabTempo<iTempo,7> = ""
		iTempo = iTempo + 1
	END
	indLect = indLect + 1
	W_AncClef = W_Clef[1,5]
	W_Max = DCOUNT(Tab,CHAR(254))
REPEAT

	W_Count = DCOUNT(TabTempo,CHAR(254))
	FOR iTab = 1 TO W_Count
		GOSUB 210
	NEXT iTab

*ici
      IF TabTempo # "" THEN
	   IF (TabTempo<W_Count,6> # "" AND TabTempo<W_Count,3> < TabTempo<W_Count,6> AND TabTempo<W_Count,3> < ICONV(W_Periode[12,10],"D4/")) OR (TabTempo<W_Count,6> = "" AND TabTempo<W_Count,3> < ICONV(W_Periode[12,10],"D4/")) THEN
		TabAno<j> = "| ":TabTempo<W_Count,1>[1,5]:SPACE(10-LEN(TabTempo<W_Count,1>[1,5])-1):"| ":ENR_CIVILAIDE<2> : " " : ENR_CIVILAIDE<3>:SPACE(32-LEN(ENR_CIVILAIDE<2> : " " : ENR_CIVILAIDE<3>)-1):"| Date fin accord infrieure  date fin activit ou priode de rfrence.":SPACE(86-LEN(" Date fin accord infrieure  date fin activit ou priode de rfrence.")):"|"
		j = j + 1
		TabAno<j> = "|----------+--------------------------------+--------------------------------------------------------------------------------------|"
		j = j + 1
	   END
      END
	* Reparcours le tableau pour voir si abs
	W_Max = DCOUNT(Tab,CHAR(254))
	iAbs = 1

	FOR i = 1 TO W_Max
		READ ENR_CIVILAIDE FROM F.CIVILAIDE,Tab<i,4> ELSE ENR_CIVILAIDE = ""
  		READ ENR_ABS FROM F.SSIADABSENCESAIDE,Tab<i,4> ELSE ENR_ABS = ""	
		FOR iAbs = DCOUNT(ENR_ABS<1>,CHAR(253)) TO 1 STEP -1


*		FOR iAbs = 1 TO DCOUNT(ENR_ABS<1>,CHAR(253))
               IF ENR_ABS<1,iAbs> <= W_FinPeriode AND W_DebutPeriode <= ENR_ABS<2,iAbs> THEN
			* CAS 1 : SA E EA S	-->	EA S

*				IF Tab<i,1>[1,1] = "E" THEN
*					IF ENR_ABS<1,iAbs> < Tab<i,2> AND ENR_ABS<2,iAbs> > Tab<i,2> THEN
*						IF ENR_ABS<2,iAbs> < Tab<i+1,2> AND Tab<i+1,1> = "S" THEN
*							Tab<i,1> = "EA"
*							Tab<i,2> = ENR_ABS<2,iAbs> + 1
*							Tab<i,3> = ""
*							Tab<i,4> = Tab<i,4> 
*							Tab<i,5> = ENR_CIVILAIDE<2> : " " : ENR_CIVILAIDE<3>
*							* Tab<i,6> dj initialis car on crase au mme indice
*PRINT "PASSE 1"
*							i = i + 1
*						END
*					END
*				END

				* CAS 2 : SA E S EA ou SA E [fin periode] EA	-->	0
				IF Tab<i,1>[1,1] = "E" THEN	
					* Michael 18/04/06 : Est on sur que tab<i+1,2> se rapporte au mme aid ? NON !!!
					IF ENR_ABS<1,iAbs> < Tab<i,2> AND ENR_ABS<2,iAbs> > Tab<i+1,2> AND Tab<i+1,1> = "S" THEN	
*					IF ENR_ABS<1,iAbs> < Tab<i,2> AND ((ENR_ABS<2,iAbs> > Tab<i+1,2> AND Tab<i+1,1> = "S") OR (ENR_ABS<2,iAbs> > ICONV(W_Periode[12,10],"D4/") AND Tab<i+1,1> # "S")) THEN	

				
						W_AncAide = Tab<i,4>	
						Tab=DELETE(Tab,i)
						* BOUCLE NE SERT A RIEN CAR NORMALEMENT "E" EST SUIVI "S"
						LOOP
						WHILE Tab<i,1> # "S" AND Tab<i,4> = W_AncAide
							Tab=DELETE(Tab,i)
						REPEAT
						IF ENR_ABS<2,iAbs> > Tab<i,2> AND Tab<i,1> = "S" THEN
							Tab=DELETE(Tab,i)
						END
						IF Tab<i,4> = W_AncAide THEN
							iAbs = iAbs - 1
						END ELSE
							iAbs = DCOUNT(ENR_ABS<1>,CHAR(253))
						END
					END
*				END ELSE	
				END	
				* CAS 3 : E SA S EA	-->	E SA
				  IF Tab<i,1>[1,1] = "E" THEN
					IF ENR_ABS<1,iAbs> > Tab<i,2> AND ENR_ABS<2,iAbs> > Tab<i+1,2> AND ENR_ABS<1,iAbs> < Tab<i+1,2> AND Tab<i+1,1>= "S" THEN
						W_AncAide = Tab<i,4>
						i = i + 1
			      			Tab<i,1> = "SA"
		      				Tab<i,2> = ENR_ABS<1,iAbs>
							* renseigne Tab<i,3> avec le libelle de l'absence
						      W_CodeMotifTab=ENR_ABS<4,iAbs>
						      GOSUB 440
			      			Tab<i,4> = W_AncAide
			      			Tab<i,5> = ENR_CIVILAIDE<2> : " " : ENR_CIVILAIDE<3>
			      			Tab<i,6> = Tab<i-1,6>
						Tab<i,7>=Tab<i-1,7>

*						i = i + 1
					END
				  END

	
				* CAS 4 : E SA EA S	-->	E SA EA S
				  IF Tab<i,1>[1,1] = "E" THEN
*					IF ENR_ABS<1,iAbs> > Tab<i,2> AND ENR_ABS<2,iAbs> < Tab<i+1,2> THEN
					IF ENR_ABS<2,iAbs> < Tab<i+1,2> AND Tab<i,4> = Tab<i+1,4> OR ENR_ABS<2,iAbs> <= W_FinPeriode THEN
					   IF ENR_ABS<1,iAbs> >= W_DebutPeriode THEN 

						W_AncAide = Tab<i,4>
						i = i + 1
						Tab=INSERT(Tab,i;"SA")
						Tab<i,1> = "SA"
						Tab<i,2> = ENR_ABS<1,iAbs>
						* renseigne Tab<i,3> avec le libelle de l'absence
					        W_CodeMotifTab=ENR_ABS<4,iAbs>
					        GOSUB 440
						Tab<i,4> = W_AncAide 
						Tab<i,5> = ENR_CIVILAIDE<2> : " " : ENR_CIVILAIDE<3>
		      			Tab<i,6> = Tab<i-1,6>
						Tab<i,7>=Tab<i-1,7>
                                 END

					   IF ENR_ABS<2,iAbs> + 1 >= W_DebutPeriode THEN
						W_AncAide = Tab<i,4>

						IF ENR_ABS<2,iAbs> < Tab<i+1,2> AND Tab<i+1,1> = "S" AND Tab<i,4> = Tab<i+1,4> AND Tab<i,2> < W_DebutPeriode THEN
						* modif du 22/08/2007 : cas avec absence  cheval sur dbut priode en choix individuel
						  IF W_Ordre[1,1] = "A" AND ENR_ABS<1,iAbs> <= W_DebutPeriode THEN
						   Tab=INSERT(Tab,i;Tab<i>)
			      		   Tab<i,1> = "SA"
			      		   Tab<i,2> = ENR_ABS<1,iAbs>
					         W_CodeMotifTab=ENR_ABS<4,iAbs>
					         GOSUB 440
						   i = i + 1
						  END

						   * ecrase l'entree erone par le EA

						   Tab<i,1> = "EA"
						   Tab<i,2> = ENR_ABS<2,iAbs> + 1
						   Tab<i,3> = ""
						*  Tab<i,4> = Tab<i,4> 
						*  Tab<i,5> = ENR_CIVILAIDE<2> : " " : ENR_CIVILAIDE<3>
						*  Tab<i,6> dj initialis car on crase au mme indice
                                    END ELSE

						   i = i + 1
						   Tab=INSERT(Tab,i;"EA")
			      		   Tab<i,1> = "EA"
			      		   Tab<i,2> = ENR_ABS<2,iAbs> + 1
		      			   Tab<i,3> = ""
			      		   Tab<i,4> = W_AncAide 
		      			   Tab<i,5> = ENR_CIVILAIDE<2> : " " : ENR_CIVILAIDE<3>
			      		   Tab<i,6> = Tab<i-1,6>
					   Tab<i,7>=Tab<i-1,7>
                                    END
					   END
*						i = i + 1
					END
				  END
*				END
		   END

		NEXT iAbs
		W_Max = DCOUNT(Tab,CHAR(254))
	NEXT i

	* Apuration des entree et sortie supprim par l'absence
	FOR i = 1 TO W_Max
		IF Tab<i,2> < ICONV(W_Periode[1,10],"D4/") OR Tab<i,2> > ICONV(W_Periode[12,10],"D4/") THEN
			IF W_Ordre[1,1] # "A" THEN 
				IF W_Edition=0 THEN
					Tab=DELETE(Tab,i)
					i = i - 1
					W_Max = W_Max - 1
				END ELSE
					IF Tab<i,2> > ICONV(W_Periode[12,10],"D4/") THEN
						Tab=DELETE(Tab,i)
						i = i - 1
						W_Max = W_Max - 1
					END
				END	
			END ELSE
				IF Tab<i,2> > ICONV(W_Periode[12,10],"D4/") THEN
					Tab=DELETE(Tab,i)
					i = i - 1
					W_Max = W_Max - 1
				END
			END
		END	
	NEXT i

RETURN

210
***********************************************************************************
**                                                                               **
**                      Remplissage du tableau  (2)                              ** 
**                                                                               **
***********************************************************************************
*ICI

	IF iTab # 1 THEN
		IF TabTempo<iTab-1,4> = TabTempo<iTab,4> AND TabTempo<iTab-1,5> = TabTempo<iTab,5> THEN
			IF TabTempo<iTab-1,3>  = TabTempo<iTab,2> -1 THEN			
				*	SORTIE
			END ELSE
				READ ENR_CIVILAIDE FROM F.CIVILAIDE,TabTempo<iTab-1,1>[1,5] ELSE ENR_CIVILAIDE = ""
				TabAno<j> = "| ":TabTempo<iTab-1,1>[1,5]:SPACE(10-LEN(TabTempo<iTab-1,1>[1,5])-1):"| ":ENR_CIVILAIDE<2> : " " : ENR_CIVILAIDE<3>:SPACE(32-LEN(ENR_CIVILAIDE<2> : " " : ENR_CIVILAIDE<3>)-1):"| Accords non conscutifs.":SPACE(86-LEN(" Accords non conscutifs.")):"|"
				j = j + 1
				TabAno<j> = "|----------+--------------------------------+--------------------------------------------------------------------------------------|"
				j = j + 1
			END
		END 
	END				
	IF TabTempo<iTab,2> < TabTempo<iTab,5> THEN
		READ ENR_CIVILAIDE FROM F.CIVILAIDE,TabTempo<iTab-1,1>[1,5] ELSE ENR_CIVILAIDE = ""
		TabAno<j> = "| ":TabTempo<iTab-1,1>[1,5]:SPACE(10-LEN(TabTempo<iTab-1,1>[1,5])-1):"| ":ENR_CIVILAIDE<2> : " " : ENR_CIVILAIDE<3>:SPACE(32-LEN(ENR_CIVILAIDE<2> : " " : ENR_CIVILAIDE<3>)-1):"| Date de dbut d'accord infrieure  la date de dbut d'activit.":SPACE(86-LEN(" Date de dbut d'accord infrieure  la date de dbut d'activit.")):"|"
		j = j + 1
		TabAno<j> = "|----------+--------------------------------+--------------------------------------------------------------------------------------|"
		j = j + 1
	END ELSE
		*	ENTREE
		IF Tab<i-1,4> = TabTempo<iTab,1>[1,5] AND  Tab<i-1,1> = "E" THEN
		END ELSE
	      		Tab<i,1> = "E"
		     	Tab<i,2> = TabTempo<iTab,2>
      			Tab<i,4> = TabTempo<iTab,1>[1,5]
			READ ENR_CIVILAIDE FROM F.CIVILAIDE,TabTempo<iTab,1>[1,5] ELSE ENR_CIVILAIDE = ""
	      		Tab<i,5> = ENR_CIVILAIDE<2> : " " : ENR_CIVILAIDE<3>
			Tab<i,6>=TabTempo<iTab,4>
			Tab<i,7>=TabTempo<iTab,5>
			i = i + 1			
		END
	END
	* Michael, le 18/04 : ne suirr pas sur que l'on uisse utiliser TabTempo<iTab+1,2> ici car itab +1 n'est pas encore saisi ????
	* nb : le principe = fin accord et fin accord = debut accord suivant - 1.
	* Si fin accord     >= Fin activite     ET   fin accord + 1      <> debut accord suivant :
	IF TabTempo<iTab,3> >= TabTempo<iTab,6> AND TabTempo<iTab,3> + 1 # TabTempo<iTab+1,2> THEN
		*	SORTIE
		READ ENR_CIVILAIDE FROM F.CIVILAIDE,TabTempo<iTab,1>[1,5] ELSE ENR_CIVILAIDE = ""
		Tab<i,1> = "S"
		IF TabTempo<iTab,6> = "" THEN
			IF TabTempo<iTab,3> <> "" THEN
				Tab<i,2> = TabTempo<iTab,3> + 1
			END ELSE
				* ICI pas de fin d'accord, avoir si ANO
				Tab<i,2> = ICONV(W_Periode[12,10],"D4/")
			END
		END ELSE
		      	Tab<i,2> = TabTempo<iTab,6> + 1
		END
		*RECUPERATION DU MOTIF DE SORTIE SID
		IF TabTempo<iTab,7> # "" THEN
		   W_CodeMotifTab=TabTempo<iTab,7>
		   GOSUB 440
		END ELSE
		   * activit active donc pas de motif de sortie
		   Tab<i,3>=""
		END	
		Tab<i,4> = TabTempo<iTab,1>[1,5]
	      	Tab<i,5> = ENR_CIVILAIDE<2> : " " : ENR_CIVILAIDE<3>
		Tab<i,6>=TabTempo<iTab,4>
		Tab<i,7>=TabTempo<iTab,5>
		i=i+1
		W_FinAccInfFinAct = "Faux"
	END

RETURN

300
***********************************************************************************
**                                                                               **
**                      Tri du tableau                                           **
**                                                                               **
***********************************************************************************
W_Max=DCOUNT(Tab,CHAR(254))
* Suppression des entrees/sorties selon choix de l'IHM
IF W_Ordre[1,1] = "E" OR W_Ordre[1,1] = "S" THEN
   FOR i = 1 TO W_Max
	IF W_Ordre[1,1] = "E" THEN
		IF Tab<i,1>[1,1] = "S" THEN
			Tab = DELETE(Tab,i)
		END
	END
	IF W_Ordre[1,1] = "S" THEN
		IF Tab<i,1>[1,1] = "E" THEN
			Tab = DELETE(Tab,i)
		END
	END
   NEXT i
   W_Max=DCOUNT(Tab,CHAR(254))
END
IF W_Rupture <> "0" AND (W_Tri= "" OR W_SSTri = "") THEN
   BEGIN CASE
   	CASE W_Ordre[1,1] = "A"
		* Tri alpha
		W_Test = "VRAI"
		LOOP
		WHILE W_Test = "VRAI" DO
			W_Test = "FAUX"
			FOR i = 1 TO W_Max -1
				READ ENR_SSIADELEMGEST FROM F.SSIADELEMGEST,Tab<i,4> ELSE ENR_SSIADELEMGEST = ""
				W_Regime1 = ENR_SSIADELEMGEST<1>:ENR_SSIADELEMGEST<2>
				READ ENR_SSIADELEMGEST FROM F.SSIADELEMGEST,Tab<i+1,4> ELSE ENR_SSIADELEMGEST = ""
				W_Regime2 = ENR_SSIADELEMGEST<1>:ENR_SSIADELEMGEST<2>

				IF W_Regime1:Tab<i,5> > W_Regime2:Tab<i+1,5> THEN
					W_Temp=Tab<i>
					Tab<i>=Tab<i+1>
					Tab<i+1>=W_Temp
					W_Test="VRAI"
				END
			NEXT i
		REPEAT
   	CASE 1
		W_Test = "VRAI"
		LOOP
		WHILE W_Test = "VRAI" DO
			W_Test = "FAUX"
			FOR i = 1 TO W_Max-1
				READ ENR_SSIADELEMGEST FROM F.SSIADELEMGEST,Tab<i,4> ELSE ENR_SSIADELEMGEST = ""
				W_Regime1 = ENR_SSIADELEMGEST<1>:ENR_SSIADELEMGEST<2>
				READ ENR_SSIADELEMGEST FROM F.SSIADELEMGEST,Tab<i+1,4> ELSE ENR_SSIADELEMGEST = ""
				W_Regime2 = ENR_SSIADELEMGEST<1>:ENR_SSIADELEMGEST<2>

				IF W_Regime1:Tab<i,2>:Tab<i,5> > W_Regime2:Tab<i+1,2>:Tab<i,5> THEN
					W_Temp=Tab<i>
					Tab<i>=Tab<i+1>
					Tab<i+1>=W_Temp
					W_Test="VRAI"
				END
			NEXT i
		REPEAT
   END CASE
END ELSE
   BEGIN CASE
   	CASE W_Ordre[1,1] = "A"
		* Tri alpha
		W_Test = "VRAI"
		LOOP
		WHILE W_Test = "VRAI" DO
			W_Test = "FAUX"
			FOR i = 1 TO W_Max-1
				IF Tab<i,5> > Tab<i+1,5> THEN
					W_Temp=Tab<i>
					Tab<i>=Tab<i+1>
					Tab<i+1>=W_Temp
					W_Test="VRAI"
				END
			NEXT i
		REPEAT
	CASE 1
		* tri chronologique
		W_Test = "VRAI"
		LOOP
		WHILE W_Test = "VRAI" DO
			W_Test = "FAUX"
			FOR i = 1 TO W_Max-1
				IF Tab<i,2> > Tab<i+1,2> THEN
					W_Temp=Tab<i>
					Tab<i>=Tab<i+1>
					Tab<i+1>=W_Temp
					W_Test="VRAI"
				END
			NEXT i
		REPEAT
   END CASE
END
W_EA = 0
*CONCATENATION DES ACCORDS CONSECUTIFS
FOR i = 1 TO W_Max-1
	IF Tab<i,4> = Tab<i+1,4> AND Tab<i+1,1> # Tab<i,1> AND Tab<i,2> = Tab<i+1,2> THEN
		Tab = DELETE(Tab,i+1)
		Tab = DELETE(Tab,i)
		W_Max=W_Max-2
	END
NEXT i
FOR i = 1 TO W_Max
	LOOP
	WHILE Tab<i,4> = Tab<i + 1,4> AND i < W_Max-1
		IF Tab<i,1> = "S" AND Tab<i,2> = "" THEN
			Tab = DELETE(Tab,i)
		END
		IF Tab<i,1> = "SA" THEN
			W_Ea = Tab<i,4>
		 	i = i + 1
				W_i = i
				FOR i = W_i TO W_Max
					IF W_Ea = Tab<i,4> AND Tab<i,1> # "EA" THEN
						Tab = DELETE(Tab,i)
					END ELSE
						i = W_Max
					END
				NEXT i
				i = W_i
		END

		IF Tab<i,1> = Tab<i+1,1> AND Tab<i,2> = Tab<i+1,2> AND Tab<i,4> = Tab<i+1,4> AND Tab<i,4> # "" THEN
			Tab = DELETE(Tab,i)
		END
		i = i + 1
	REPEAT	
NEXT i

RETURN

400
************************************************************************
*  *   *   *   *****   *****   *****   *****   *****   *   *****   *   *
*  *   ** **   *    *  *    *  *       *       *       *   *   *   **  *
*  *   * * *   *****   *****   ***     *****   *****   *   *   *   * * *
*  *   *   *   *       *  *    *           *       *   *   *   *   *  **
*  *   *   *   *       *   *   *****   *****   *****   *   *****   *   *
************************************************************************
i = 1
READ ENR_ASSOC FROM F.ASSOCIATION,W_Entite ELSE ENR_ASSOC = ""
W_Fini = "Faux"
W_Max = DCOUNT(Tab,CHAR(254))

IF W_Ordre[1,1] = "A" THEN
	GOSUB 430
END
IF W_Printer = "CSV" THEN
	i = 1
	W_Sortie<i,1> = "Libell du service;Libell d'activit;Libell du responsable;Libell du secteur;Libell de la commune;Nom et prnom de l'aid;Nom patronymique de l'aid;Numro d'immatriculation;Nom et prnom de l'assur;1re ligne d'adresse;2me ligne d'adresse;Code postal;Ville;Date de naissance;Libell du rgime;Libell du sous-rgime;Libell de l'organisme d'affiliation;Code du rgime de l'assur;Entre service;Date d'entre;Date de sortie;Libell de motif de sortie;Nombre de jours;GIR;Diagnostic"
	i = i + 1
	j = 1
	LOOP
	WHILE j <= W_Max DO
		* LIBELLE DU SERVICE
		READ ENR_SSIADELEMGEST FROM F.SSIADELEMGEST,Tab<j,4> ELSE ENR_SSIADELEMGEST = ""
		READ ENR_CIVILAIDE FROM F.CIVILAIDE,Tab<j,4> ELSE ENR_CIVILAIDE = ""
		READ ENR_ACTIVITES FROM F.ACTIVITES,Tab<j,6> ELSE ENR_ACTIVITES = ""
		READ ENR_TABLES FROM F.TABLES,"SERVICES" ELSE ENR_TABLES = ""
		FOR indServ = 1 TO DCOUNT(ENR_TABLES<2>,CHAR(253))
			IF ENR_TABLES<2,indServ> = ENR_ACTIVITES<13> THEN
				W_Sortie<i,1> = ENR_TABLES<3,indServ>
			END
		NEXT indServ
		* LIBELLE DE L'ACTIVITE
		W_Sortie<i,1> = W_Sortie<i,1> : ";" : ENR_ACTIVITES<1>
		* LIBELLE DU RESPONSABLE
		READ ENR_RESPONSABLE FROM F.RESPONSABLE,ENR_CIVILAIDE<39> ELSE ENR_RESPONSABLE = ""
		W_Sortie<i,1> = W_Sortie<i,1> : ";" : ENR_RESPONSABLE<1>
		* LIBELLE DU SECTEUR
		READ ENR_SECTEUR FROM F.SECTEUR,ENR_CIVILAIDE<40>[1,3] ELSE ENR_SECTEUR = ""
		W_Sortie<i,1> = W_Sortie<i,1> : ";" : ENR_SECTEUR<1>
		* LIBELLE DE LA COMMUNE
		W_Sortie<i,1> = W_Sortie<i,1> : ";" : ENR_CIVILAIDE<11>
		* NOM ET PRENOM DE L'AIDE
		W_Sortie<i,1> = W_Sortie<i,1> : ";" : ENR_CIVILAIDE<2> : " " : ENR_CIVILAIDE<3>
		* NOM PATRONYMIQUE
		W_Sortie<i,1> = W_Sortie<i,1> : ";" : ENR_CIVILAIDE<4>
		* NUMERO D'IMMATRICULATION
		IF ENR_SSIADELEMGEST<8> = "" THEN
			W_Sortie<i,1> = W_Sortie<i,1> : ";" : ENR_CIVILAIDE<18> : " " : ENR_CIVILAIDE<19>
		END ELSE
			W_Sortie<i,1> = W_Sortie<i,1> : ";" : ENR_SSIADELEMGEST<8> : " " : ENR_SSIADELEMGEST<9>
		END			
		* NOM ET PRENOM ASSURE
		W_Sortie<i,1> = W_Sortie<i,1> : ";" : ENR_SSIADELEMGEST<5>
		* 1re LIGNE ADRESSE
		W_Sortie<i,1> = W_Sortie<i,1> : ";" : ENR_CIVILAIDE<5> : " " : ENR_CIVILAIDE<6> : " " : ENR_CIVILAIDE<7> : " " : ENR_CIVILAIDE<8>
		* 2me LIGNE ADRESSE
		W_Sortie<i,1> = W_Sortie<i,1> : ";" : ENR_CIVILAIDE<9>
		* CODE POSTAL
		W_Sortie<i,1> = W_Sortie<i,1> : ";" : ENR_CIVILAIDE<10>
		* VILLE
		W_Sortie<i,1> = W_Sortie<i,1> : ";" : ENR_CIVILAIDE<11>
		* DATE DE NAISSANCE
		W_Sortie<i,1> = W_Sortie<i,1> : ";" : OCONV(ENR_CIVILAIDE<20>,"D4/")
		* LIBELLE DU REGIME
		READ ENR_REGIME FROM F.SSIADREGIME,"1" ELSE ENR_SSIADREGIME = ""
		FOR indReg = 1 TO DCOUNT(ENR_REGIME<1>,CHAR(253))
			IF ENR_SSIADELEMGEST<1> = ENR_REGIME<1,indReg> THEN
				W_Sortie<i,1> = W_Sortie<i,1> : ";" : ENR_REGIME<2,indReg>
				EXIT
			END
		NEXT indReg
		* LIBELLE DU SOUS-REGIME
		FOR indSsReg = 1 TO DCOUNT(ENR_REGIME<3,indReg>,CHAR(252))
			IF ENR_SSIADELEMGEST<2> = ENR_REGIME<3,indReg,indSsReg> THEN
				W_Sortie<i,1> = W_Sortie<i,1> : ";" : ENR_REGIME<4,indReg,indSsReg>
			END
		NEXT indSsReg
		* LIBELLE DE L'ORGANISME
		READ ENR_SSIADORGAFFIL FROM F.SSIADORGAFFIL,ENR_SSIADELEMGEST<3> ELSE ENR_SSIADORGAFFIL = ""
		W_Sortie<i,1> = W_Sortie<i,1> : ";" : ENR_SSIADORGAFFIL<1>

		* CODE REGIME ASSURE
		W_CodeRegime=CONVERT("0","O",ENR_SSIADELEMGEST<22>)
		W_Sortie<i,1> = W_Sortie<i,1> : ";" : W_CodeRegime

		* Date d'entre dans le service
		W_Sortie<i,1> = W_Sortie<i,1> : ";" : OCONV(Tab<j,7>,"D4/")

		* DATE D'ENTREE + DATE DE SORTIE
		* Meme aidant qui est entre et sorti sur la priode
		IF Tab<j,1>[1,1] = "E" AND Tab<j+1,1>[1,1] = "S" AND Tab<j,4> = Tab<j+1,4> THEN
			* met la date de l'entree
*ici
			IF Tab<j,2> >= W_DebutPeriode THEN
			    W_Sortie<i,1> = W_Sortie<i,1> : ";" : OCONV(Tab<j,2>,"D4/")
			END ELSE
			    W_Sortie<i,1> = W_Sortie<i,1> : ";"
			END
			* met la date de sortie
			W_Sortie<i,1> = W_Sortie<i,1> : ";" : OCONV(Tab<j+1,2>,"D4/")
			IF Tab<j+1,2> # "" THEN
				*la sortie est toujours au lendemain donc pas de +1
				IF Tab<j+1,2> > ICONV(W_Periode[12,10],"D4/") THEN
					IF Tab<j,2> < ICONV(W_Periode[1,10],"D4/") THEN
						W_NbJour=ICONV(W_Periode[12,10],"D4/")-ICONV(W_Periode[1,10],"D4/")+1
					END ELSE
						W_NbJour=ICONV(W_Periode[12,10],"D4/")-Tab<j,2>+1
					END
				END ELSE
					IF Tab<j,2> < ICONV(W_Periode[1,10],"D4/") THEN
						W_NbJour=Tab<j+1,2>-ICONV(W_Periode[1,10],"D4/")
					END ELSE
						W_NbJour=Tab<j+1,2>-Tab<j,2>
					END
				END
			END ELSE
				W_NbJour=ICONV(W_Periode[12,10],"D4/")-Tab<j,2>+1
			END
			W_Date_Test = Tab<j+1,2>
			W_MotifSortieSID=Tab<j+1,3>

			* on saute la sortie
			j=j+1
		END ELSE
			IF Tab<j,1>[1,1] = "E" THEN
			   * met la date de l'entree + sortie = ""
*ici
			   IF Tab<j,2> >= W_DebutPeriode THEN
			      W_Sortie<i,1> = W_Sortie<i,1> : ";" : OCONV(Tab<j,2>,"D4/") : ";"
			   END ELSE
			      W_Sortie<i,1> = W_Sortie<i,1> : ";;"
			   END
			   IF Tab<j,2> < ICONV(W_Periode[1,10],"D4/") THEN
 			  	W_NbJour=ICONV(W_Periode[12,10],"D4/")-ICONV(W_Periode[1,10],"D4/")+1
			   END ELSE
				W_NbJour=ICONV(W_Periode[12,10],"D4/")-Tab<j,2>+1
			   END
			   W_MotifSortieSID=""
			   W_Date_Test = Tab<j,2>
			END ELSE
				* sortie seul
			        * met entree = "" + date de sortie
			        W_Sortie<i,1> = W_Sortie<i,1> : ";;" : OCONV(Tab<j,2>,"D4/")
 			        W_NbJour=Tab<j,2>-ICONV(W_Periode[1,10],"D4/")
	  			W_MotifSortieSID=Tab<j,3>
				W_Date_Test = Tab<j,2>
				
			END
		END			
		* LIBELLE DU MOTIF DE SORTIE
		W_Sortie<i,1> = W_Sortie<i,1> : ";" : W_MotifSortieSID
		* NOMBRE DE JOURS
		W_Sortie<i,1> = W_Sortie<i,1> : ";" : W_NbJour
		* GIR
		READ ENR_AGGIRAIDE FROM F.AGGIRAIDE,Tab<j,4> ELSE ENR_AGGIRAIDE = ""

		IF W_FinPeriode >= ENR_AGGIRAIDE<18> THEN
			* Gir en cours
			W_Sortie<i,1> = W_Sortie<i,1> : ";" : ENR_AGGIRAIDE<19> : ENR_AGGIRAIDE<20>
		END ELSE

			lGir=1
			LOOP
			UNTIL W_FinPeriode >= ENR_AGGIRAIDE<39,lGir> OR ENR_AGGIRAIDE<39,lGir>="" DO 
				lGir=lGir+1
			REPEAT
			IF ENR_AGGIRAIDE<39,lGir> # "" THEN
				* Gir prcdent
				W_Sortie<i,1> = W_Sortie<i,1> : ";" : ENR_AGGIRAIDE<40,lGir> : ENR_AGGIRAIDE<41,lGir>
			END

		END

*		IF ENR_AGGIRAIDE<18> > W_Date_Test THEN
*			* Gir prcdent
*			W_Sortie<i,1> = W_Sortie<i,1> : ";" : ENR_AGGIRAIDE<40> : ENR_AGGIRAIDE<41>
*		END ELSE
*			* Gir en cours
*			W_Sortie<i,1> = W_Sortie<i,1> : ";" : ENR_AGGIRAIDE<19> : ENR_AGGIRAIDE<20>
*		END

		* DIAGNOSTIC
		W_Diagnostic=""
		READ ENR_FICHEMEDAIDE FROM F.FICHEMEDAIDE,Tab<j,4> ELSE ENR_FICHEMEDAIDE = ""
		FOR indServ = 1 TO DCOUNT(ENR_FICHEMEDAIDE<4>,CHAR(253))
			IF Tab<j,1>[1,1] = "E" THEN
				W_DateRef = W_FinPeriode
			END ELSE
				W_DateRef = Tab<j,2>
			END
			IF ENR_FICHEMEDAIDE<3,indServ> <= W_DateRef THEN
				W_Diagnostic=ENR_FICHEMEDAIDE<4,indServ>
				W_Diagnostic=CONVERT(";",",",W_Diagnostic)
				W_Diagnostic=CONVERT(CHAR(10):CHAR(13),",",W_Diagnostic)
				W_Sortie<i,1> = W_Sortie<i,1> : ";" : W_Diagnostic 
				EXIT
			END
		NEXT indServ
		i = i + 1
		j = j + 1
	REPEAT

	* reparcours pour supprimer des cas qui ne servent pas - christophe
	W_NbSortie=DCOUNT(W_Sortie,CHAR(254))
      FOR iSortie = 2 TO W_NbSortie

	   IF ICONV(FIELD(W_Sortie<iSortie>,";",20),"D4/") < W_DebutPeriode AND FIELD(W_Sortie<iSortie>,";",20)# "" AND FIELD(W_Sortie<iSortie>,";",21)= "" THEN
		W_Sortie=DELETE(W_Sortie,iSortie)
		W_NbSortie=W_NbSortie-1
		iSortie=iSortie-1
	   END
	NEXT iSortie


END ELSE
	IF W_Ordre[1,1] # "A" THEN

	* reparcours pour supprimer des cas qui ne servent pas - christophe
	W_NbTab=DCOUNT(Tab,CHAR(254))

	FOR iSortie=1 TO W_NbTab
	   IF Tab<iSortie,2> < W_DebutPeriode THEN
		Tab=DELETE(Tab,iSortie)
		W_NbTab=W_NbTab-1
		iSortie=iSortie-1
	   END
	NEXT iSortie

		W_Sortie = ""	
		j = 1
		i=1
		W_Sortie<i,1> = ENR_ASSOC<1>: SPACE(30-LEN(ENR_ASSOC<1>)) : "EXTRAIT DU REGISTRE MEDICAL POUR LA PERIODE DU ":W_Periode[1,10]:" AU ":W_Periode[12,10]
		i = i + 1
		W_Sortie<i,1> = ENR_ASSOC<3>:" ":ENR_ASSOC<5>:" ":ENR_ASSOC<6>
		i = i + 1
		W_Sortie<i,1> = ENR_ASSOC<7>: SPACE(42-LEN(ENR_ASSOC<7>)) : "-----------------------------------------------"
		i = i + 1
		W_Sortie<i,1> = ENR_ASSOC<8>:" ":ENR_ASSOC<9>
		i = i + 1
		W_Sortie<i,1> = "Tel : ":ENR_ASSOC<12>
		i = i + 1
		W_Sortie<i,1> = " "
		i = i + 1
		BEGIN CASE
			CASE W_Type[1,1]="V"
				READ ENR_TABLES FROM F.TABLES,"SERVICES" ELSE ENR_TABLES = ""
				FOR indServ = 1 TO DCOUNT(ENR_TABLES<2>,CHAR(253))
					IF ENR_TABLES<2,indServ> = W_Type[2,3] AND FIELD(ENR_TABLES<2,indServ>,CHAR(254),2) = "" THEN
						W_Sortie<i,1> = "Service : ":ENR_TABLES<3,indServ>
						i = i + 1
					END
				NEXT indServ
			CASE W_Type[1,1]="A"
				READ ENR_ACTIVITES FROM F.ACTIVITES,W_Entite:W_Type[2,3] ELSE ENR_ACTIVITES = ""
				W_Sortie<i,1> = "Activites : ": ENR_ACTIVITES<1>
				i = i + 1
			CASE 1
				W_Sortie<i,1> = ""
				i = i + 1
		END CASE

		BEGIN CASE
			CASE W_Select[1,1] = "R"
				READ ENR_RESPONSABLE FROM F.RESPONSABLE,W_Type[2,3] ELSE ENR_RESPONSABLE = ""
				W_Sortie<i,1> = "Responsable : ":ENR_RESPONSABLE<1>
				i = i + 1
			CASE W_Select[1,1] = "S"
				READ ENR_SECTEUR FROM F.SECTEUR,W_Select[2,3] ELSE ENR_SECTEUR = ""
				W_Sortie<i,1> = "Secteur : ":ENR_SECTEUR<1>
				i = i + 1
			CASE W_Select[1,1] = "C"
				READ ENR_COMMUNES FROM F.COMMUNES,W_Select[2,3] ELSE ENR_COMMUNES = ""
				W_Sortie<i,1> = "Communes : ":ENR_COMMUNES<1>
				i = i + 1
			CASE 1
				W_Sortie<i,1> = ""
				i = i + 1
		END CASE

		indAffReg = i
		W_Sortie<i,1> = "Rgime - Sous rgime : "
		i = i + 1
		IF W_Ordre[1,1] = "E" THEN W_Sortie<i,1> = "                                                       ORDRE CHRONOLOGIQUE DES ENTREES"
		IF W_Ordre[1,1] = "S" THEN W_Sortie<i,1> = "                                                       ORDRE CHRONOLOGIQUE DES SORTIES"
		IF W_Ordre[1,1] = "V" THEN W_Sortie<i,1> = "                                                  ORDRE CHRONOLOGIQUE DES ENTREES / SORTIES"
		i = i + 1
		W_Sortie<i,1> = " "
		i = i + 1
		W_Sortie<i,1> = " ----------------------------------------------------------------------------------------------------------------------------------"
		i = i + 1
		W_Sortie<i,1> = "|          |ENTREE|                         |                         |   DATE   | NUMERO D'IMMATRICULATION|                       |"
		i = i + 1
		W_Sortie<i,1> = "|   DATE   |  OU  |      NOM ET PRENOM      |         ADRESSE         |    DE    |      DE L'ASSURE        |      DIAGNOSTIC       |"
		i = i + 1
		W_Sortie<i,1> = "|          |SORTIE|                         |                         |NAISSANCE |  ET CAISSE DE L'ASSURE  |                       |"
		i = i + 1
		W_Sortie<i,1> = "|----------+------+-------------------------+-------------------------+----------+-------------------------+-----------------------|"
		i = i + 1
		IndiceRegime = 2

		LOOP
		WHILE j <= W_Max DO
			IF j > 0 THEN
				IF Tab<j,2> = "" AND Tab<j,1> = "" THEN
					j = j + 1
				END
				IF W_Ordre[1,1] # "S" AND Tab<j,1>[1,1] = "E" THEN

					READ ENR_CIVILAIDE FROM F.CIVILAIDE,Tab<j,4> ELSE ENR_CIVILAIDE = ""
					READ ENR_SSIADELEMGEST FROM F.SSIADELEMGEST,Tab<j,4> ELSE ENR_SSIADELEMGEST = ""
					READ ENR_SSIADORGAFFIL FROM F.SSIADORGAFFIL,ENR_SSIADELEMGEST<3> ELSE ENR_SSIADORGAFFIL = ""
					* DIAGNOSTIC
					READ ENR_FICHEMEDAIDE FROM F.FICHEMEDAIDE,Tab<j,4> ELSE ENR_FICHEMEDAIDE = ""					
					FOR indServ = 1 TO DCOUNT(ENR_FICHEMEDAIDE<4>,CHAR(253))
						*IF Tab<j,1>[1,1] = "E" AND Tab<j+1,1>[1,1] = "S" AND Tab<j,4> = Tab<j+1,4> THEN
						*	W_Date_Test = Tab<j+1,2>
						*END ELSE
						*	W_Date_Test = Tab<j,2>
						*END

						IF Tab<j,1>[1,1] = "E" THEN
							W_DateRef = W_FinPeriode
						END ELSE
							W_DateRef = Tab<j,2>
						END

						IF ENR_FICHEMEDAIDE<3,indServ> <= W_DateRef THEN
							W_Diagnostic=ENR_FICHEMEDAIDE<4,indServ>
							W_Diagnostic=CONVERT(";",",",W_Diagnostic)
							W_Diagnostic=CONVERT(CHAR(10):CHAR(13),",",W_Diagnostic)
							EXIT
						END
					NEXT indServ
					W_NomPrenomAide = ENR_CIVILAIDE<2> : " " :ENR_CIVILAIDE<3>
					W_AdresseAide = ENR_CIVILAIDE<5> : " " : ENR_CIVILAIDE<6> : " " : ENR_CIVILAIDE<7> : " " : ENR_CIVILAIDE<8>
					W_VilleAide = ENR_CIVILAIDE<10> : " " : ENR_CIVILAIDE<11>
					W_Caisse = ENR_SSIADORGAFFIL<1>
					IF ENR_SSIADELEMGEST<4> # "" AND ENR_SSIADELEMGEST<4> # "-1" THEN
				        	W_Secu = ENR_SSIADELEMGEST<8> : " " : ENR_SSIADELEMGEST<9>
			 		END ELSE
			        		W_Secu = ENR_CIVILAIDE<18> : " " : ENR_CIVILAIDE<19>
				 	END
					*READ ENR_SSIADREGIME FROM F.SSIADREGIME,"1" ELSE ENR_SSIADREGIME = ""
					*indReg = 1
					*indSsReg = 1
					*LOOP
					*WHILE ENR_SSIADELEMGEST<1> # ENR_SSIADREGIME<1,indReg> AND ENR_SSIADREGIME<1,indReg> # ""
					*	indReg = indReg + 1
					*REPEAT

	        	 		W_Sortie<i,1> = "|" : OCONV(Tab<j,2>,"D4/") : SPACE(10-LEN(OCONV(Tab<j,2>,"D4/"))) : "|" : Tab<j,1> : SPACE(6-LEN(Tab<j,1>)) : "|" : W_NomPrenomAide[1,25] : SPACE(25-LEN(W_NomPrenomAide[1,25])) : "|" : W_AdresseAide[1,25] : SPACE(25-LEN(W_AdresseAide[1,25])) : "|" : OCONV(ENR_CIVILAIDE<20>,"D4/") : SPACE(10-LEN(OCONV(ENR_CIVILAIDE<20>,"D4/"))) : "|" : W_Secu : SPACE(25-LEN(W_Secu)) : "|"

					* DIAGNOSTIC
					W_Diagnostic=""
					READ ENR_FICHEMEDAIDE FROM F.FICHEMEDAIDE,Tab<j,4> ELSE ENR_FICHEMEDAIDE = ""
					FOR indServ = 1 TO DCOUNT(ENR_FICHEMEDAIDE<4>,CHAR(253))

						*IF Tab<j,1>[1,1] = "E" AND Tab<j+1,1>[1,1] = "S" AND Tab<j,4> = Tab<j+1,4> THEN
						*	W_Date_Test = Tab<j+1,2>
						*END ELSE
						*	W_Date_Test = Tab<j,2>
						*END	

						IF Tab<j,1>[1,1] = "E" THEN
							W_DateRef = W_FinPeriode
						END ELSE
							W_DateRef = Tab<j,2>
						END
					
						IF ENR_FICHEMEDAIDE<3,indServ> <= W_DateRef THEN
							W_Diagnostic=ENR_FICHEMEDAIDE<4,indServ>
							W_Diagnostic=CONVERT(";",",",W_Diagnostic)
							W_Diagnostic=CONVERT(CHAR(10):CHAR(13),",",W_Diagnostic)
							EXIT
						END
					NEXT indServ

					W_Len=LEN(W_Diagnostic)
					W_Caract=1
					IF W_Diagnostic <> "" THEN

						W_Stop="FAUX"
						LOOP
						UNTIL W_Caract > W_Len OR W_Stop="VRAI" DO
							IF MOD(W_Caract,23)=0 THEN
								W_Stop="VRAI"
							END
							W_Sortie<i,1> = W_Sortie<i,1>:W_Diagnostic[W_Caract,1]
							W_Caract=W_Caract+1

						REPEAT

						W_Sortie<i,1> = W_Sortie<i,1>:SPACE(23-LEN(W_Diagnostic[1,W_Caract])):"|"

					END ELSE
						W_Sortie<i,1> = W_Sortie<i,1>:SPACE(23):"|"
					END

					W_Sortie<indAffReg,IndiceRegime > = ENR_SSIADELEMGEST<1> :ENR_SSIADELEMGEST<2>
					IndiceRegime = IndiceRegime + 1
				 	i = i + 1
			    	 	W_Sortie<i,1> = "|          |      |"
				 	IF ENR_CIVILAIDE<4> # ENR_CIVILAIDE<2> THEN
						W_Sortie<i,1> = W_Sortie<i,1>  : "nee " : ENR_CIVILAIDE<4> : SPACE(21-LEN(ENR_CIVILAIDE<4>))
			 		END ELSE
						W_Sortie<i,1> = W_Sortie<i,1>  : "                         "
				 	END

					W_Sortie<i,1> = W_Sortie<i,1> : "|" : ENR_CIVILAIDE<9>[1,25] : SPACE(25-LEN(ENR_CIVILAIDE<9>[1,25])): "|          |":ENR_SSIADELEMGEST<5>[1,25] : SPACE(25-LEN(ENR_SSIADELEMGEST<5>[1,25])):"|"

					IF W_Diagnostic <> "" THEN

						W_CaractAnt=W_Caract

						W_Stop="FAUX"
						LOOP
						UNTIL W_Caract>W_Len OR W_Stop="VRAI" DO
							IF MOD(W_Caract,23)=0 THEN
								W_Stop="VRAI"
							END
							W_Sortie<i,1> = W_Sortie<i,1>:W_Diagnostic[W_Caract,1]
							W_Caract=W_Caract+1

						REPEAT

						W_Sortie<i,1> = W_Sortie<i,1>:SPACE(23-LEN(W_Diagnostic[W_CaractAnt,W_Caract-W_CaractAnt])):"|"

					END ELSE
						W_Sortie<i,1> = W_Sortie<i,1>:SPACE(23):"|"
					END

				 	i = i + 1

					W_Sortie<i,1> = "|          |      |                         |" : W_VilleAide[1,25] : SPACE(25-LEN(W_VilleAide[1,25])) :"|          |" : W_Caisse[1,25] : SPACE(25-LEN(W_Caisse[1,25])):"|"
					IF W_Diagnostic <> "" THEN

						W_CaractAnt=W_Caract

						W_Stop="FAUX"
						LOOP
						UNTIL W_Caract>W_Len OR W_Stop="VRAI" DO
							IF MOD(W_Caract,23)=0 THEN
								W_Stop="VRAI"
							END
							W_Sortie<i,1> = W_Sortie<i,1>:W_Diagnostic[W_Caract,1]
							W_Caract=W_Caract+1

						REPEAT

						W_Sortie<i,1> = W_Sortie<i,1>:SPACE(23-LEN(W_Diagnostic[W_CaractAnt,W_Caract-W_CaractAnt])):"|"

					END ELSE
						W_Sortie<i,1> = W_Sortie<i,1>:SPACE(23):"|"
					END


				 	i = i + 1

					IF W_Caract > W_Len THEN
						W_Sortie<i,1> = "|          |      |                         |                         |          |                         |                       |"
					END ELSE
						LOOP
						UNTIL W_Caract > W_Len DO
							W_Sortie<i,1> = "|          |      |                         |                         |          |                         |"
							IF W_Diagnostic <> "" THEN

								W_CaractAnt=W_Caract

								W_Stop="FAUX"
								LOOP
								UNTIL W_Caract>W_Len OR W_Stop="VRAI" DO
									IF MOD(W_Caract,23)=0 THEN
										W_Stop="VRAI"
									END
									W_Sortie<i,1> = W_Sortie<i,1>:W_Diagnostic[W_Caract,1]
									W_Caract=W_Caract+1

								REPEAT

								W_Sortie<i,1> = W_Sortie<i,1>:SPACE(23-LEN(W_Diagnostic[W_CaractAnt,W_Caract-W_CaractAnt])):"|"

							END ELSE
								W_Sortie<i,1> = W_Sortie<i,1>:SPACE(23):"|"
							END
							i=i+1
						REPEAT
						i=i+1
					END

			 		i = i + 1
				 	IF Tab<j-1,2> = Tab<j,2> THEN
		        	    		W_Sortie<i,1> = "|----------+------+-------------------------+-------------------------+----------+-------------------------+-----------------------|"
	        	 		END ELSE
		        	    		W_Sortie<i,1> = "|----------+------+-------------------------+-------------------------+----------+-------------------------+-----------------------|"
		         		END

				i = i + 1
			      END

			      IF W_Ordre[1,1] # "E" AND Tab<j,1>[1,1] = "S" THEN

					READ ENR_CIVILAIDE FROM F.CIVILAIDE,Tab<j,4> ELSE ENR_CIVILAIDE = ""
					READ ENR_FICHEMEDAIDE FROM F.FICHEMEDAIDE,Tab<j,4> ELSE ENR_FICHEMEDAIDE  = ""
					READ ENR_SSIADELEMGEST FROM F.SSIADELEMGEST,Tab<j,4> ELSE ENR_SSIADELEMGEST = ""
					READ ENR_SSIADORGAFFIL FROM F.SSIADORGAFFIL,ENR_SSIADELEMGEST<3> ELSE ENR_SSIADORGAFFIL = ""
					* DIAGNOSTIC
					W_Diagnostic=""
					READ ENR_FICHEMEDAIDE FROM F.FICHEMEDAIDE,Tab<j,4> ELSE ENR_FICHEMEDAIDE = ""
					FOR indServ = 1 TO DCOUNT(ENR_FICHEMEDAIDE<4>,CHAR(253))

						*IF Tab<j,1>[1,1] = "E" AND Tab<j+1,1>[1,1] = "S" AND Tab<j,4> = Tab<j+1,4> THEN
						*	W_Date_Test = Tab<j+1,2>
						*END ELSE
						*	W_Date_Test = Tab<j,2>
						*END

						IF Tab<j,1>[1,1] = "E" THEN
							W_DateRef = W_FinPeriode
						END ELSE
							W_DateRef = Tab<j,2>
						END
					
						IF ENR_FICHEMEDAIDE<3,indServ> <= W_DateRef THEN
							W_Diagnostic=ENR_FICHEMEDAIDE<4,indServ>
							W_Diagnostic=CONVERT(";",",",W_Diagnostic)
							W_Diagnostic=CONVERT(CHAR(10):CHAR(13),",",W_Diagnostic)
							EXIT
						END
					NEXT indServ
					W_NomPrenomAide = ENR_CIVILAIDE<2> : " " :ENR_CIVILAIDE<3>
					W_AdresseAide = ENR_CIVILAIDE<5> : " " : ENR_CIVILAIDE<6> : " " : ENR_CIVILAIDE<7> : " " : ENR_CIVILAIDE<8>
					W_VilleAide = ENR_CIVILAIDE<10> : " " : ENR_CIVILAIDE<11>
					W_Caisse = ENR_SSIADORGAFFIL<1>
					IF ENR_SSIADELEMGEST<4> # "" AND ENR_SSIADELEMGEST<4> # "-1" THEN
		        			W_Secu = ENR_SSIADELEMGEST<8> : " " : ENR_SSIADELEMGEST<9>

				 	END ELSE
				        	W_Secu = ENR_CIVILAIDE<18> : " " : ENR_CIVILAIDE<19>
				 	END
					READ ENR_SSIADREGIME FROM F.SSIADREGIME,"1" ELSE ENR_SSIADREGIME = ""
					indReg = 1
					indSsReg = 1
					LOOP
					WHILE ENR_SSIADELEMGEST<1> # ENR_SSIADREGIME<1,indReg> AND ENR_SSIADREGIME<1,indReg> # ""
						indReg = indReg + 1
					REPEAT
					IF ENR_SSIADELEMGEST<1> = ENR_SSIADREGIME<1,indReg> THEN
						LOOP
						WHILE ENR_SSIADELEMGEST<2> # ENR_SSIADREGIME<3,indReg, indSsReg> AND ENR_SSIADREGIME<3,indReg, indSsReg> # ""
							indSsReg = indSsReg + 1
						REPEAT
						IF ENR_SSIADELEMGEST<2> = ENR_SSIADREGIME<3,indReg, indSsReg> THEN
							W_Sortie<indAffReg,IndiceRegime> =ENR_SSIADREGIME<1,indReg>:ENR_SSIADREGIME<3,indReg, indSsReg>
						END
					END

	        		 	W_Sortie<i,1> = "|" : OCONV(Tab<j,2>,"D4/") : SPACE(10-LEN(OCONV(Tab<j,2>,"D4/"))) : "|" : Tab<j,1> : SPACE(6-LEN(Tab<j,1>)) : "|" : W_NomPrenomAide[1,25] : SPACE(25-LEN(W_NomPrenomAide[1,25])) : "|" : W_AdresseAide[1,25] : SPACE(25-LEN(W_AdresseAide[1,25])) : "|" : OCONV(ENR_CIVILAIDE<20>,"D4/") : SPACE(10-LEN(OCONV(ENR_CIVILAIDE<20>,"D4/"))) : "|" : W_Secu : SPACE(25-LEN(W_Secu)) : "|"
				 	
					W_Len=LEN(W_Diagnostic)

					W_Caract=1
					IF W_Diagnostic <> "" THEN

						W_Stop="FAUX"
						LOOP
						UNTIL W_Caract>W_Len OR W_Stop="VRAI" DO
							IF MOD(W_Caract,23)=0 THEN
								W_Stop="VRAI"
							END
							W_Sortie<i,1> = W_Sortie<i,1>:W_Diagnostic[W_Caract,1]
							W_Caract=W_Caract+1

						REPEAT

						W_Sortie<i,1> = W_Sortie<i,1>:SPACE(23-LEN(W_Diagnostic[1,W_Caract])):"|"

					END ELSE
						W_Sortie<i,1> = W_Sortie<i,1>:SPACE(23):"|"
					END
					
					W_Sortie<indAffReg,IndiceRegime > = ENR_SSIADELEMGEST<1> :ENR_SSIADELEMGEST<2>
					IndiceRegime = IndiceRegime + 1
				 	i = i + 1
	    			 	W_Sortie<i,1> = "|          |      |"
				 	IF ENR_CIVILAIDE<4> # ENR_CIVILAIDE<2> THEN
						W_Sortie<i,1> = W_Sortie<i,1>  : "nee " : ENR_CIVILAIDE<4> : SPACE(21-LEN(ENR_CIVILAIDE<4>))
			 		END ELSE
						W_Sortie<i,1> = W_Sortie<i,1>  : "                         "
				 	END


					W_Sortie<i,1> = W_Sortie<i,1> : "|" : ENR_CIVILAIDE<9>[1,25] : SPACE(25-LEN(ENR_CIVILAIDE<9>[1,25])): "|          |":ENR_SSIADELEMGEST<5>[1,25] : SPACE(25-LEN(ENR_SSIADELEMGEST<5>[1,25])):"|"

					IF W_Diagnostic <> "" THEN

						W_CaractAnt=W_Caract

						W_Stop="FAUX"
						LOOP
						UNTIL W_Caract>W_Len OR W_Stop="VRAI" DO
							IF MOD(W_Caract,23)=0 THEN
								W_Stop="VRAI"
							END
							W_Sortie<i,1> = W_Sortie<i,1>:W_Diagnostic[W_Caract,1]
							W_Caract=W_Caract+1

						REPEAT

						W_Sortie<i,1> = W_Sortie<i,1>:SPACE(23-LEN(W_Diagnostic[W_CaractAnt,W_Caract-W_CaractAnt])):"|"

					END ELSE
						W_Sortie<i,1> = W_Sortie<i,1>:SPACE(23):"|"
					END

				 	i = i + 1
				 	
					W_Sortie<i,1> = "|          |      |                         |" : W_VilleAide[1,25] : SPACE(25-LEN(W_VilleAide[1,25])) :"|          |" : W_Caisse[1,25] : SPACE(25-LEN(W_Caisse[1,25])):"|"
					IF W_Diagnostic <> "" THEN

						W_CaractAnt=W_Caract

						W_Stop="FAUX"
						LOOP
						UNTIL W_Caract>W_Len OR W_Stop="VRAI" DO
							IF MOD(W_Caract,23)=0 THEN
								W_Stop="VRAI"
							END
							W_Sortie<i,1> = W_Sortie<i,1>:W_Diagnostic[W_Caract,1]
							W_Caract=W_Caract+1

						REPEAT

						W_Sortie<i,1> = W_Sortie<i,1>:SPACE(23-LEN(W_Diagnostic[W_CaractAnt,W_Caract-W_CaractAnt])):"|"

					END ELSE
						W_Sortie<i,1> = W_Sortie<i,1>:SPACE(23):"|"
					END

					i = i + 1

					IF W_Caract > W_Len THEN
						W_Sortie<i,1> = "|          |      |                         |                         |          |                         |                       |"
					END ELSE
						LOOP
						UNTIL W_Caract > W_Len DO
							W_Sortie<i,1> = "|          |      |                         |                         |          |                         |"
							IF W_Diagnostic <> "" THEN

								W_CaractAnt=W_Caract

								W_Stop="FAUX"
								LOOP
								UNTIL W_Caract>W_Len OR W_Stop="VRAI" DO
									IF MOD(W_Caract,23)=0 THEN
										W_Stop="VRAI"
									END
									W_Sortie<i,1> = W_Sortie<i,1>:W_Diagnostic[W_Caract,1]
									W_Caract=W_Caract+1

								REPEAT

								W_Sortie<i,1> = W_Sortie<i,1>:SPACE(23-LEN(W_Diagnostic[W_CaractAnt,W_Caract-W_CaractAnt])):"|"

							END ELSE
								W_Sortie<i,1> = W_Sortie<i,1>:SPACE(23):"|"
							END
							i=i+1
						REPEAT
						i=i-1
					END

	 				i = i + 1

				 	IF Tab<j-1,2> = Tab<j,2> THEN
	        		    		W_Sortie<i,1> = "|----------+------+-------------------------+-------------------------+----------+-------------------------+-----------------------|"
			         	END ELSE
	        		    		W_Sortie<i,1> = "|----------+------+-------------------------+-------------------------+----------+-------------------------+-----------------------|"
			         	END

				 i = i + 1
	      		END
		      END
		      j =j + 1
		REPEAT

*		* reparcours pour supprimer des cas qui ne servent pas date de dbut < dbut priode - christophe
*		W_NbSortie=DCOUNT(W_Sortie,CHAR(254))
*      	FOR iSortie = 2 TO W_NbSortie
*			*PRINT FIELD(W_Sortie<iSortie>,";",19)
*			*PRINT FIELD(W_Sortie<iSortie>,";",20)
*			*DEBUG
*	   	   IF ICONV(FIELD(W_Sortie<iSortie>,";",19),"D4/") < W_DebutPeriode AND FIELD(W_Sortie<iSortie>,";",20)= "" THEN
*			W_Sortie=DELETE(W_Sortie,iSortie)
*			W_NbSortie=W_NbSortie-1
*	   	   END
*		NEXT iSortie
	END
END
RETURN

410
***********************************************************************************
**                                                                               **
**                      	ENTETE ALPHABETIQUE                              **
**                                                                               **
***********************************************************************************

  	   		READ ENR_SSIADELEMGEST FROM F.SSIADELEMGEST,Tab<j,4> ELSE ENR_SSIADELEMGEST = ""
	   		READ ENR_CIVILAIDE FROM F.CIVILAIDE,Tab<j,4> ELSE ENR_CIVILAIDE = ""
	   		READ ENR_SSIADORGAFFIL FROM F.SSIADORGAFFIL,ENR_SSIADELEMGEST<3> ELSE ENR_SSIADORGAFFIL = ""
	   		READ ENR_FICHEMEDAIDE FROM F.FICHEMEDAIDE,Tab<j,4> ELSE ENR_FICHEMEDAIDE = ""
				W_Sortie<i,1> =  ENR_ASSOC<1>:"                     E X T R A I T    D U    R E G I S T R E    M E D I C A L    D U   ":W_Periode[1,10]:"   A U   ":W_Periode[12,10]
				i = i + 1
				W_Sortie<i,1> =  ENR_ASSOC<3>:" ":ENR_ASSOC<5>:" ":ENR_ASSOC<6>:"       -----------------------------------------------------------------------------------------"
				i = i + 1
				W_Sortie<i,1> =  ENR_ASSOC<7>
				i = i + 1
				W_Sortie<i,1> =  ENR_ASSOC<8>:" ":ENR_ASSOC<9>
				i = i + 1
				W_Sortie<i,1> =  "TEL : ":ENR_ASSOC<12>
				i = i + 1
				W_Sortie<i,1> = " "
				i = i + 1
				BEGIN CASE
					CASE W_Type[1,1]="V"
						READ ENR_TABLES FROM F.TABLES,"SERVICES" ELSE ENR_TABLES = ""
						FOR indServ = 1 TO DCOUNT(ENR_TABLES<2>,CHAR(253))
							IF ENR_TABLES<2,indServ> = W_Type[2,3] AND FIELD(ENR_TABLES<2,indServ>,CHAR(254),2) = "" THEN
								W_Sortie<i,1> = "Service : ":ENR_TABLES<3,indServ>
								i = i + 1
							END
						NEXT i
					CASE W_Type[1,1]="A"
						READ ENR_ACTIVITES FROM F.ACTIVITES,W_Type[2,3] ELSE ENR_ACTIVITES = ""
						W_Sortie<i,1> = "Activites : ": ENR_ACTIVITES<1>
						i = i + 1
					CASE 1
						W_Sortie<i,1> = ""
						i = i + 1
				END CASE
				BEGIN CASE
					CASE W_Select[1,1] = "R"
						READ ENR_RESPONSABLE FROM F.RESPONSABLE,W_Type[2,3] ELSE ENR_RESPONSABLE = ""
						W_Sortie<i,1> = "Responsable : ":ENR_RESPONSABLE<1>
						i = i + 1
					CASE W_Select[1,1] = "S"
						READ ENR_SECTEUR FROM F.SECTEUR,W_Select[2,3] ELSE ENR_SECTEUR = ""
						W_Sortie<i,1> = "Secteur : ":ENR_SECTEUR<1>
						i = i + 1
					CASE W_Select[1,1] = "C"
						READ ENR_COMMUNES FROM F.COMMUNES,W_Select[2,3] ELSE ENR_COMMUNES = ""
						W_Sortie<i,1> = "Communes : ":ENR_COMMUNES<1>
						i = i + 1
					CASE 1
						W_Sortie<i,1> = ""
						i = i + 1
				END CASE
				W_Sortie<i,1> =  "                        BENEFICIAIRE                                                         ASSURE"
				i = i + 1
				W_Sortie<i,1> =  "   NOM ET PRENOM             : " : ENR_CIVILAIDE<2> : " " : ENR_CIVILAIDE<3>: SPACE(58-LEN("   NOM ET PRENOM             : " : ENR_CIVILAIDE<2> : " " : ENR_CIVILAIDE<3>)) : "NOM ET PRENOM      : " : ENR_SSIADELEMGEST<5>
				i = i + 1
				W_Sortie<i,1> =  "   AGE DU MALADE             : ":OCONV(DATE(),"D4")[8,4]-OCONV(ENR_CIVILAIDE<20>,"D4")[8,4]:" ANS" : SPACE(58 - LEN("   AGE DU MALADE             : ":OCONV(DATE(),"D4")[8,4]-OCONV(ENR_CIVILAIDE<20>,"D4")[8,4]:" ANS")) : "LIEN DE PARENTE    : "
				BEGIN CASE
					CASE ENR_SSIADELEMGEST<4> = 0
						W_Sortie<i,1> = W_Sortie<i,1> : "Grand-parent"
					CASE ENR_SSIADELEMGEST<4> = 1
						W_Sortie<i,1> = W_Sortie<i,1> : "Parent"
					CASE ENR_SSIADELEMGEST<4> = 2
						W_Sortie<i,1> = W_Sortie<i,1> : "Conjoint"
					CASE ENR_SSIADELEMGEST<4> = 3
						W_Sortie<i,1> = W_Sortie<i,1> : "Enfant"
					CASE ENR_SSIADELEMGEST<4> = 4
						W_Sortie<i,1> = W_Sortie<i,1> : "Petit enfant"
				END CASE
				i = i + 1
				W_Sortie<i,1> =  "   N. IMMATRICULATION        : ":ENR_CIVILAIDE<18> : " " : ENR_CIVILAIDE<19> : SPACE(58-LEN("   N. IMMATRICULATION        : ":ENR_CIVILAIDE<18> : " " : ENR_CIVILAIDE<19>)) : "N. IMMATRICULATION : ": ENR_SSIADELEMGEST<8> : " " : ENR_SSIADELEMGEST<9>
				i = i + 1
				W_Sortie<i,1> =  "   ADRESSE                   : ":ENR_CIVILAIDE<5> : " " : ENR_CIVILAIDE<6> : " " : ENR_CIVILAIDE<7> : " " : ENR_CIVILAIDE<8>
				i = i + 1
				W_Sortie<i,1> =  "                               ":ENR_CIVILAIDE<9>
				i = i + 1
				W_Sortie<i,1> =  "                               ":ENR_CIVILAIDE<10> : " " : ENR_CIVILAIDE<11>
				i = i + 1
				W_Sortie<i,1> =  "   CAISSE DE PRISE EN CHARGE : ":ENR_SSIADORGAFFIL<1> : SPACE(93-LEN("   CAISSE DE PRISE EN CHARGE : ":ENR_SSIADORGAFFIL<1>))
				W_K=0
				FOR k = 1 TO DCOUNT(ENR_REGIME<1>,CHAR(253))
					IF ENR_SSIADELEMGEST<1> = ENR_REGIME<1,k> THEN
						W_K=k
						W_Sortie<i,1> = W_Sortie<i,1>:"REGIME      : ":ENR_SSIADELEMGEST<1>:" ":ENR_REGIME<2,k>
					END
				NEXT k
				i = i + 1
				W_Sortie<i,1> =  "                               ":ENR_SSIADORGAFFIL<3> : " " : ENR_SSIADORGAFFIL<4> : " " : ENR_SSIADORGAFFIL<5> : " " : ENR_SSIADORGAFFIL<6>: SPACE(93 - LEN("                               ":ENR_SSIADORGAFFIL<3> : " " : ENR_SSIADORGAFFIL<4> : " " : ENR_SSIADORGAFFIL<5> : " " : ENR_SSIADORGAFFIL<6>))

				FOR k = 1 TO DCOUNT(ENR_REGIME<3,W_K>,CHAR(252))
					IF ENR_SSIADELEMGEST<2> = ENR_REGIME<3,W_K,k> THEN
						W_Sortie<i,1> = W_Sortie<i,1>:"SOUS-REGIME : ":ENR_SSIADELEMGEST<2>:" ":ENR_REGIME<4,W_K,k>
					END
				NEXT k
				i = i + 1
			IF W_Printer = "MATRIC" THEN
				W_Sortie<i,1> =  "                               ":ENR_SSIADORGAFFIL<8>: " ":ENR_SSIADORGAFFIL<9>
				i = i + 1
				W_Sortie<i,1> = " "
				i = i + 1
				W_Sortie<i,1> =  " ----------------------------------------------------------------------------------------------------------------------------------"
				i = i + 1
				W_Sortie<i,1> =  "|  DATE  |  DATE  |                              | TRANSFERT EVENTUEL |      DIAGNOSTIC DETAILLE     |     TRAITEMENT EN COURS     |"
				i = i + 1
				W_Sortie<i,1> =  "|        |        |       MOTIF DE SORTIE        |(HOSPITALISATION...)|           MOTIVANT           |     (PRESCRIPTIONS DU       |"
				i = i + 1
				W_Sortie<i,1> =  "| ENTREE | SORTIE |                              |  PRECISER LE LIEU  |          L'ADMISSION         |      MEDECIN TRAITANT)      |"
				i = i + 1
				W_Sortie<i,1> =  "|--------+--------+------------------------------+--------------------+------------------------------+-----------------------------|"
				i = i + 1
			END ELSE
				W_Sortie<i,1> =  "                               ":ENR_SSIADORGAFFIL<8>: " ":ENR_SSIADORGAFFIL<9>
				i = i + 1
				W_Sortie<i,1> = " "
				i = i + 1
				W_Sortie<i,1> =  " ---------------------------------------------------------------------------------------------------------------------------------------------------------"
				i = i + 1
				W_Sortie<i,1> =  "|   DATE   |   DATE   |                                       | TRANSFERT EVENTUEL |          DIAGNOSTIC DETAILLE           |     TRAITEMENT EN COURS     |"
				i = i + 1
				W_Sortie<i,1> =  "|          |          |            MOTIF DE SORTIE            |(HOSPITALISATION...)|               MOTIVANT                 |     (PRESCRIPTIONS DU       |"
				i = i + 1
				W_Sortie<i,1> =  "|  ENTREE  |  SORTIE  |                                       |  PRECISER LE LIEU  |              L'ADMISSION               |      MEDECIN TRAITANT)      |"
				i = i + 1
				W_Sortie<i,1> =  "|----------+----------+---------------------------------------+--------------------+----------------------------------------+-----------------------------|"
				i = i + 1
			END
RETURN

420
***********************************************************************************
**                                                                               **
**                      PIED DE PAGE ALPHABETIQUE                                **
**                                                                               **
***********************************************************************************
IF W_Printer = "MATRIC" THEN
		      		W_Sortie<i,1> =  "|     INFIRMIERES     |  AIDES-SOIGNANTES   |    AUTRES SOINS     |      MATERIEL       |   AIDES-MENAGERES   |OBS. MEDECIN CONSEIL|"
				i = i + 1
		      		W_Sortie<i,1> =  "|---------------------+---------------------+---------------------+---------------------+---------------------+--------------------|"
				i = i + 1
		      		W_Sortie<i,1> =  "|PRECISER : TYPE      |PRECISER :           |PRECISER : TYPE      | (IL S'AGIT DU PETIT | (INTERVENTIONS A    |                    |"
				i = i + 1
			      	W_Sortie<i,1> =  "| O - SURVEILLANCE    | O - PARTICULIEREMENT| O - MASSO-KINESI.   | MATERIEL MEDICAL ET | CARACTERE SOCIAL    |                    |"
				i = i + 1
	      			W_Sortie<i,1> =  "| O - PIQURES         |     LONG OU         | O - PEDICURIE       | ACCESSOIRES)        | COMPLETANT LES SOINS|                    |"
			 	i = i + 1
			      	W_Sortie<i,1> =  "| O - PERFUSIONS      |     PLURIQUOTIDIEN  | O - ORTHOPHONIE     |                     | A DOMICILE)         |                    |"
				i = i + 1
		      		W_Sortie<i,1> =  "| O - PANSEMENTS      | O - QUOTIDIEN       |                     |                     |                     |                    |"
				i = i + 1
		      		W_Sortie<i,1> =  "| O - SONDAGES        | O - DISCONTINU      |        FREQUENCE    |                     |         FREQUENCE   |                    |"
				i = i + 1
		      		W_Sortie<i,1> =  "|                     |     (FREQUENCE)     | O - 1 A 2 / SEMAINE |                     | O - PLURIQUOTIDIENNE|                    |"
				i = i + 1
			      	W_Sortie<i,1> =  "|          FREQUENCE  |                     |     OU MOINS        |                     | O - QUOTIDIENNE     |                    |"
				i = i + 1
	      			W_Sortie<i,1> =  "| O - PLURIQUOTIDIENNE|                     |     (A PRECISER)    |                     | O - DISCONTINUE     |                    |"
				i = i + 1
			      	W_Sortie<i,1> =  "| O - QUOTIDIENNE     |                     |                     |                     |     (A PRECISER)    |                    |"
				i = i + 1
		      		W_Sortie<i,1> =  "| O - DISCONTINUE     |                     |                     |                     |                     |                    |"
				i = i + 1
	      			W_Sortie<i,1> =  "|                     |                     |                     |                     |                     |                    |"
				i = i + 1
			      	W_Sortie<i,1> =  " ----------------------------------------------------------------------------------------------------------------------------------"
				i = i + 1
END ELSE
		      		W_Sortie<i,1> =  "|       INFIRMIERES       |    AIDES-SOIGNANTES     |      AUTRES SOINS       |        MATERIEL         |     AIDES-MENAGERES     |  OBS. MEDECIN CONSEIL  |"
				i = i + 1
		      		W_Sortie<i,1> =  "|-------------------------+-------------------------+-------------------------+-------------------------+-------------------------+------------------------|"
				i = i + 1
		      		W_Sortie<i,1> =  "|  PRECISER : TYPE        |  PRECISER :             |  PRECISER : TYPE        |   (IL S'AGIT DU PETIT   |   (INTERVENTIONS A      |                        |"
				i = i + 1
			      	W_Sortie<i,1> =  "|   O - SURVEILLANCE      |   O - PARTICULIEREMENT  |   O - MASSO-KINESI.     |   MATERIEL MEDICAL ET   |   CARACTERE SOCIAL      |                        |"
				i = i + 1
	      			W_Sortie<i,1> =  "|   O - PIQURES           |       LONG OU           |   O - PEDICURIE         |   ACCESSOIRES)          |   COMPLETANT LES SOINS  |                        |"
			 	i = i + 1
			      	W_Sortie<i,1> =  "|   O - PERFUSIONS        |       PLURIQUOTIDIEN    |   O - ORTHOPHONIE       |                         |   A DOMICILE)           |                        |"
				i = i + 1
		      		W_Sortie<i,1> =  "|   O - PANSEMENTS        |   O - QUOTIDIEN         |                         |                         |                         |                        |"
				i = i + 1
		      		W_Sortie<i,1> =  "|   O - SONDAGES          |   O - DISCONTINU        |               FREQUENCE |                         |             FREQUENCE   |                        |"
				i = i + 1
		      		W_Sortie<i,1> =  "|                         |       (FREQUENCE)       |   O - 1 A 2 / SEMAINE   |                         |   O - PLURIQUOTIDIENNE  |                        |"
				i = i + 1
			      	W_Sortie<i,1> =  "|             FREQUENCE   |                         |       OU MOINS          |                         |   O - QUOTIDIENNE       |                        |"
				i = i + 1
	      			W_Sortie<i,1> =  "|   O - PLURIQUOTIDIENNE  |                         |       (A PRECISER)      |                         |   O - DISCONTINUE       |                        |"
				i = i + 1
			      	W_Sortie<i,1> =  "|   O - QUOTIDIENNE       |                         |                         |                         |       (A PRECISER)      |                        |"
				i = i + 1
		      		W_Sortie<i,1> =  "|   O - DISCONTINUE       |                         |                         |                         |                         |                        |"
				i = i + 1
	      			W_Sortie<i,1> =  "|                         |                         |                         |                         |                         |                        |"
				i = i + 1
			      	W_Sortie<i,1> =  " ----------------------------------------------------------------------------------------------------------------------------------------------------------"
				i = i + 1
END
RETURN

430
***********************************************************************************
**                                                                               **
**                             CORPS ALPHABETIQUE                                **
**                                                                               **
***********************************************************************************

IF Tab # "" THEN
	IF W_Printer = "LASER" THEN
		W_DiagTraitImprimer="FAUX"

		FOR j = 1 TO W_Max

			W_DiagTrait="FAUX"
			IF j = 1 THEN
				GOSUB 450
				GOSUB 410
				W_DiagTrait="VRAI"
			END ELSE
				IF Tab<j,4> # Tab<j - 1,4> THEN
					W_Sortie<i,1> = "|----------------------------------------------------------------------------------------------------------------------------------------------------------|"
	 				i = i + 1
					GOSUB 420
					IF Tab<j,4> # "" THEN
						W_DiagTraitImprimer="FAUX"
						GOSUB 450
						GOSUB 410
						W_DiagTrait="VRAI"
					END
				END
			END
			IF W_DiagTrait="VRAI" THEN
                        	* DIAGNOSTIC
				W_Diagnostic=""
				READ ENR_FICHEMEDAIDE FROM F.FICHEMEDAIDE,Tab<j,4> ELSE ENR_FICHEMEDAIDE = ""
				W_Date_Test = W_FinPeriode
				FOR indServ = DCOUNT(ENR_FICHEMEDAIDE<4>,CHAR(253)) TO 1 STEP -1

	    			    	IF ENR_FICHEMEDAIDE<3,indServ> <= W_Date_Test THEN
				       		W_Diagnostic=ENR_FICHEMEDAIDE<4,indServ>
						W_Diagnostic=CONVERT(";",",",W_Diagnostic)
				       		W_Diagnostic=CONVERT(CHAR(10):CHAR(13),",",W_Diagnostic)
                               			EXIT
                            		END
	      	        	NEXT indServ
				W_Traitement=""
				FOR indServ = DCOUNT(ENR_FICHEMEDAIDE<6>,CHAR(253)) TO 1 STEP -1
    				    IF ENR_FICHEMEDAIDE<5,indServ> < W_Date_Test THEN
					FOR SV = 1 TO DCOUNT(ENR_FICHEMEDAIDE<6,indServ>,CHAR(252))
						IF ENR_FICHEMEDAIDE<11,indServ,SV> # "" AND ENR_FICHEMEDAIDE<11,indServ,SV> < W_DebutPeriode THEN
							* ne prend pas en compte
						END ELSE
							IF SV # 1 THEN
				       				W_Traitement=W_Traitement:"/"
							END
			       				W_Traitement=W_Traitement:ENR_FICHEMEDAIDE<6,indServ,SV>
							IF ENR_FICHEMEDAIDE<7,indServ,SV> # "" THEN
			       					W_Traitement=W_Traitement:"-":ENR_FICHEMEDAIDE<7,indServ,SV>
							END
							IF ENR_FICHEMEDAIDE<8,indServ,SV> # "" THEN
				       				W_Traitement=W_Traitement:"-":ENR_FICHEMEDAIDE<8,indServ,SV>
							END
	 					END
					NEXT SV	
                	              	EXIT
                        	    END
	      	        	NEXT indServ

			END

			W_ImprimeDate="FAUX"

			IF Tab<j,2> = "" THEN
				W_Sortie<i,1> =  "|          |          |                              |                    |"
			END ELSE

				IF (INT(W_DebutPeriode) <= INT(Tab<j,2>) AND INT(W_FinPeriode) >= INT(Tab<j,2>)) OR (INT(W_DebutPeriode) >= INT(Tab<j,2>) AND Tab<j,1>= "EE") OR (INT(W_DebutPeriode) >= INT(Tab<j,2>) AND Tab<j,1>= "SA") THEN
					IF Tab<j,1>[1,1] = "E" THEN
						W_Sortie<i,1> =  "|" : OCONV(Tab<j,2>,"D4/") : SPACE(10-LEN(OCONV(Tab<j,2>,"D4/"))) : "|          |                                        |                    |"
	 				END ELSE
						W_Sortie<i,1> =  "|          |" : OCONV(Tab<j,2>,"D4/") : SPACE(10-LEN(OCONV(Tab<j,2>,"D4/"))) : "|" : Tab<j,3> : SPACE(40-LEN(Tab<j,3>)) : "|                    |"
					END
				END ELSE
					LOOP
					UNTIL Tab<j,4> = Tab<j+1,4> AND INT(W_DebutPeriode) <= INT(Tab<j,2>) AND INT(W_FinPeriode) >= INT(Tab<j,2>) OR Tab<j,4>="" OR Tab<j,4> # Tab<j+1,4> DO
						j=j+1
					REPEAT

					IF INT(W_DebutPeriode) <= INT(Tab<j,2>) AND INT(W_FinPeriode) >= INT(Tab<j,2>) THEN
						IF Tab<j,1>[1,1] = "E" THEN
							W_Sortie<i,1> =  "|" : OCONV(Tab<j,2>,"D4/") : SPACE(10-LEN(OCONV(Tab<j,2>,"D4/"))) : "|          |                                        |                    |"
	 					END ELSE
							W_Sortie<i,1> =  "|          |" : OCONV(Tab<j,2>,"D4/") : SPACE(10-LEN(OCONV(Tab<j,2>,"D4/"))) : "|" : Tab<j,3> : SPACE(40-LEN(Tab<j,3>)) : "|                    |"
						END
					END ELSE
						W_Sortie<i,1> =  "|          |          |                                        |                    |"
					END
				END
			END

IF W_Diagnostic <> "" OR W_Traitement <> "" THEN
	
	IF W_DiagTraitImprimer="FAUX" THEN
		W_DiagTraitImprimer="VRAI"
		W_LenDia=LEN(W_Diagnostic)
		W_LenTrait=LEN(W_Traitement)

		W_CaractDia=1
		W_Stop="FAUX"
		LOOP
		UNTIL W_CaractDia>W_LenDia OR W_Stop="VRAI" DO
			IF MOD(W_CaractDia,30) = 0 THEN
				W_Stop="VRAI"
			END
			W_Sortie<i,1> = W_Sortie<i,1>:W_Diagnostic[W_CaractDia,1]
			W_CaractDia=W_CaractDia+1
		REPEAT
		W_Sortie<i,1> = W_Sortie<i,1>:SPACE(30-LEN(W_Diagnostic[1,W_CaractDia])):"| "

		W_CaractTrait=1
		W_Stop="FAUX"
		LOOP
		UNTIL W_CaractTrait>W_LenTrait OR W_Stop="VRAI" DO
			IF MOD(W_CaractTrait,45) = 0 THEN
				W_Stop="VRAI"
			END
			W_Sortie<i,1> = W_Sortie<i,1>:W_Traitement[W_CaractTrait,1]
			W_CaractTrait=W_CaractTrait+1
		REPEAT
		W_Sortie<i,1> = W_Sortie<i,1>:SPACE(45-LEN(W_Traitement[1,W_CaractTrait])):"|"
		i=i+1
	END

*	IF Tab<j,4> = Tab<j+1,4> AND INT(W_DebutPeriode) <= INT(Tab<j,2>) AND INT(W_FinPeriode) >= INT(Tab<j,2>) OR Tab<j,4>="" OR Tab<j,4> # Tab<j+1,4> THEN
	IF Tab<j,4> = Tab<j+1,4> AND Tab<j,1># "EE" OR Tab<j,4>="" OR Tab<j,4> # Tab<j+1,4> THEN


		IF W_Sortie<i,1>="" THEN
			W_Sortie<i,1> =  "|          |          |                                        |                    |"
		END

		IF W_CaractDia > W_LenDia THEN
			W_Sortie<i,1> = W_Sortie<i,1>:"                              | "
		END

		W_Passe="FAUX"

		IF W_CaractDia > W_LenDia AND W_CaractTrait > W_LenTrait THEN
			W_Passe="VRAI"
		END

		IF W_CaractDia > W_LenDia AND W_CaractTrait > W_LenTrait OR Tab<j,4> = Tab<j+1,4> AND W_Passe="VRAI" THEN
			i=i+1
		END ELSE
		LOOP
		UNTIL W_CaractDia > W_LenDia AND W_CaractTrait > W_LenTrait OR Tab<j,4> = Tab<j+1,4> AND W_Passe="VRAI" DO

			IF W_CaractDia > W_LenDia OR Tab<j,2> = "" THEN
				IF W_Sortie<i,1>="" THEN
					W_Sortie<i,1> = "|          |          |                                        |                    |                              | "
				END
			END ELSE
				IF Tab<j,2> = "" OR W_ImprimeDate="VRAI" THEN
					W_Sortie<i,1> = "|          |          |                                        |                    |"
				END ELSE
					W_ImprimeDate="VRAI"
				END

				W_CaractAntDia=W_CaractDia
				W_Stop="FAUX"

				LOOP
				UNTIL W_CaractDia > W_LenDia OR W_Stop="VRAI" DO
					IF MOD(W_CaractDia,30) = 0 THEN
						W_Stop="VRAI"
					END

					W_Sortie<i,1> = W_Sortie<i,1>:W_Diagnostic[W_CaractDia,1]
					W_CaractDia=W_CaractDia+1
				REPEAT
				W_Sortie<i,1> = W_Sortie<i,1>:SPACE(30-LEN(W_Diagnostic[W_CaractAntDia,W_CaractDia-W_CaractAntDia])):"| "
			END

			W_CaractAntTrait=W_CaractTrait
			W_Stop="FAUX"

			LOOP
			UNTIL W_CaractTrait > W_LenTrait OR W_Stop="VRAI" DO
				IF MOD(W_CaractTrait,45) = 0 THEN
					W_Stop="VRAI"
				END

				W_Sortie<i,1> = W_Sortie<i,1>:W_Traitement[W_CaractTrait,1]
				W_CaractTrait=W_CaractTrait+1
			REPEAT
			W_Sortie<i,1> = W_Sortie<i,1>:SPACE(45-LEN(W_Traitement[W_CaractAntTrait,W_CaractTrait-W_CaractAntTrait])):"|"

			W_Passe="VRAI"

			i=i+1
		REPEAT
		END
	END
END ELSE
	W_Sortie<i,1> = W_Sortie<i,1>:SPACE(30):"| ":SPACE(45):"|"
	i = i + 1

END

		NEXT j

		W_Sortie<i,1> = "|----------------------------------------------------------------------------------------------------------------------------------------------------------|"
	 	i = i + 1

		GOSUB 420

	END ELSE

		W_DiagTraitImprimer="FAUX"
		FOR j = 1 TO W_Max
			W_DiagTrait="FAUX"
			IF j = 1 THEN
				GOSUB 450
				GOSUB 410
				W_DiagTrait="VRAI"
			END ELSE
				IF Tab<j,4> # Tab<j - 1,4> THEN

		 			W_Sortie<i,1> = "|----------------------------------------------------------------------------------------------------------------------------------|"
					i=i+1
					GOSUB 420
					IF Tab<j,4> # "" THEN
						W_DiagTraitImprimer="FAUX"
						GOSUB 450
						GOSUB 410
						W_DiagTrait="VRAI"
					END
				END
			END
			
			IF W_DiagTrait="VRAI" THEN
                        	* DIAGNOSTIC
				W_Diagnostic=""
				READ ENR_FICHEMEDAIDE FROM F.FICHEMEDAIDE,Tab<j,4> ELSE ENR_FICHEMEDAIDE = ""

				W_Date_Test = W_FinPeriode
				FOR indServ = DCOUNT(ENR_FICHEMEDAIDE<4>,CHAR(253)) TO 1 STEP -1

    			    		IF ENR_FICHEMEDAIDE<3,indServ> <= W_Date_Test THEN
			       			W_Diagnostic=ENR_FICHEMEDAIDE<4,indServ>
						W_Diagnostic=CONVERT(";",",",W_Diagnostic)
			       			W_Diagnostic=CONVERT(CHAR(10):CHAR(13),",",W_Diagnostic)
                               			EXIT
                            		END
	      	        	NEXT indServ
				W_Traitement=""
				FOR indServ = DCOUNT(ENR_FICHEMEDAIDE<6>,CHAR(253)) TO 1 STEP -1
    				    IF ENR_FICHEMEDAIDE<5,indServ> < W_Date_Test THEN
					FOR SV = 1 TO DCOUNT(ENR_FICHEMEDAIDE<6,indServ>,CHAR(252))
						IF ENR_FICHEMEDAIDE<11,indServ,SV> # "" AND ENR_FICHEMEDAIDE<11,indServ,SV> < W_DebutPeriode THEN
							* ne prend pas en compte
						END ELSE
							IF SV # 1 THEN
			       					W_Traitement=W_Traitement:"/"
							END
			       				W_Traitement=W_Traitement:ENR_FICHEMEDAIDE<6,indServ,SV>
							IF ENR_FICHEMEDAIDE<7,indServ,SV> # "" THEN
			       					W_Traitement=W_Traitement:"-":ENR_FICHEMEDAIDE<7,indServ,SV>
							END
							IF ENR_FICHEMEDAIDE<8,indServ,SV> # "" THEN
			       					W_Traitement=W_Traitement:"-":ENR_FICHEMEDAIDE<8,indServ,SV>
							END
						END
					NEXT SV	
                               		EXIT
                            	    END
	      	        	NEXT indServ
			END
			W_ImprimeDate="FAUX"

			IF Tab<j,2> = "" THEN
				W_Sortie<i,1> =  "|        |        |                              |                    |"
			END ELSE
				IF (INT(W_DebutPeriode) <= INT(Tab<j,2>) AND INT(W_FinPeriode) >= INT(Tab<j,2>)) OR (INT(W_DebutPeriode) >= INT(Tab<j,2>) AND Tab<j,1>= "EE") OR (INT(W_DebutPeriode) >= INT(Tab<j,2>) AND Tab<j,1>= "SA") THEN
					IF Tab<j,1>[1,1] = "E" THEN
						W_Sortie<i,1> =  "|" : OCONV(Tab<j,2>,"D2/") : SPACE(8-LEN(OCONV(Tab<j,2>,"D2/"))) : "|        |                              |                    |"
	 				END ELSE
   						IF LEN(Tab<j,3>) > 30 THEN
							Tab<j,3>=Tab<j,3>[1,30]
	   					END
						W_Sortie<i,1> =  "|        |" : OCONV(Tab<j,2>,"D2/") : SPACE(8-LEN(OCONV(Tab<j,2>,"D2/"))) : "|" : Tab<j,3> : SPACE(30-LEN(Tab<j,3>)) : "|                    |"
					END
				END ELSE
					LOOP
					UNTIL Tab<j,4> = Tab<j+1,4> AND INT(W_DebutPeriode) <= INT(Tab<j,2>) AND INT(W_FinPeriode) >= INT(Tab<j,2>) OR Tab<j,4>="" OR Tab<j,4> # Tab<j+1,4> DO
						j=j+1
					REPEAT
					IF INT(W_DebutPeriode) <= INT(Tab<j,2>) AND INT(W_FinPeriode) >= INT(Tab<j,2>) THEN
						IF Tab<j,1>[1,1] = "E" THEN
							W_Sortie<i,1> =  "|" : OCONV(Tab<j,2>,"D2/") : SPACE(8-LEN(OCONV(Tab<j,2>,"D2/"))) : "|        |                              |                    |"
		 				END ELSE
   							IF LEN(Tab<j,3>) > 30 THEN
								Tab<j,3>=Tab<j,3>[1,30]
   							END
							W_Sortie<i,1> =  "|        |" : OCONV(Tab<j,2>,"D2/") : SPACE(8-LEN(OCONV(Tab<j,2>,"D2/"))) : "|" : Tab<j,3> : SPACE(30-LEN(Tab<j,3>)) : "|                    |"
						END
					END ELSE
						W_Sortie<i,1> =  "|        |        |                              |                    |"
					END
				END
			END
		
IF W_Diagnostic <> "" OR W_Traitement <> "" THEN
	IF W_DiagTraitImprimer="FAUX" THEN
		W_DiagTraitImprimer="VRAI"
		W_LenDia=LEN(W_Diagnostic)
		W_LenTrait=LEN(W_Traitement)

		W_CaractDia=1
		W_Stop="FAUX"
		LOOP
		UNTIL W_CaractDia>W_LenDia OR W_Stop="VRAI" DO
			IF MOD(W_CaractDia,30) = 0 THEN
				W_Stop="VRAI"
			END
			W_Sortie<i,1> = W_Sortie<i,1>:W_Diagnostic[W_CaractDia,1]
			W_CaractDia=W_CaractDia+1
		REPEAT
		W_Sortie<i,1> = W_Sortie<i,1>:SPACE(30-LEN(W_Diagnostic[1,W_CaractDia])):"|"

		W_CaractTrait=1
		W_Stop="FAUX"
		LOOP
		UNTIL W_CaractTrait>W_LenTrait OR W_Stop="VRAI" DO
			IF MOD(W_CaractTrait,29) = 0 THEN
				W_Stop="VRAI"
			END
			W_Sortie<i,1> = W_Sortie<i,1>:W_Traitement[W_CaractTrait,1]
			W_CaractTrait=W_CaractTrait+1
		REPEAT
		W_Sortie<i,1> = W_Sortie<i,1>:SPACE(29-LEN(W_Traitement[1,W_CaractTrait])):"|"

		i=i+1
	END 

*	IF Tab<j,4> = Tab<j+1,4> AND INT(W_DebutPeriode) <= INT(Tab<j,2>) AND INT(W_FinPeriode) >= INT(Tab<j,2>) OR Tab<j,4>="" OR Tab<j,4> # Tab<j+1,4> THEN
	IF Tab<j,4> = Tab<j+1,4> AND Tab<j,1># "EE" OR Tab<j,4>="" OR Tab<j,4> # Tab<j+1,4> THEN
	
		IF W_Sortie<i,1>="" THEN
			W_Sortie<i,1> =  "|        |        |                              |                    |"
		END
		IF W_CaractDia > W_LenDia THEN
			W_Sortie<i,1> = W_Sortie<i,1>:"                              |"
		END

		W_Passe="FAUX"

		IF W_CaractDia > W_LenDia AND W_CaractTrait > W_LenTrait THEN
			W_Passe="VRAI"
		END
**************************
**********************
*********************
		IF W_CaractDia > W_LenDia AND W_CaractTrait > W_LenTrait OR Tab<j,4>=Tab<j+1,4> AND W_Passe="VRAI" THEN
			IF W_CaractDia > W_LenDia AND W_CaractTrait > W_LenTrait THEN
				W_Sortie<i,1> =  W_Sortie<i,1>:"                              |                             |"
			END

			i=i+1
		END ELSE

			LOOP
			UNTIL W_CaractDia > W_LenDia AND W_CaractTrait > W_LenTrait OR Tab<j,4>=Tab<j+1,4> AND W_Passe="VRAI" DO

				IF W_CaractDia > W_LenDia OR Tab<j,2> ="" THEN
					IF W_Sortie<i,1>="" THEN
						W_Sortie<i,1> =  "|        |        |                              |                    |                              |"
					END
				END ELSE
					IF Tab<j,2> ="" OR W_ImprimeDate="VRAI" THEN
						W_Sortie<i,1> =  "|        |        |                              |                    |"
					END ELSE
						W_ImprimeDate="VRAI"
					END
					W_CaractAntDia=W_CaractDia
					W_Stop="FAUX"

					LOOP
					UNTIL W_CaractDia > W_LenDia OR W_Stop="VRAI" DO
						IF MOD(W_CaractDia,30) = 0 THEN
							W_Stop="VRAI"
						END

						W_Sortie<i,1> = W_Sortie<i,1>:W_Diagnostic[W_CaractDia,1]
						W_CaractDia=W_CaractDia+1
					REPEAT
					W_Sortie<i,1> = W_Sortie<i,1>:SPACE(30-LEN(W_Diagnostic[W_CaractAntDia,W_CaractDia-W_CaractAntDia])):"|"
				END

				W_CaractAntTrait=W_CaractTrait
				W_Stop="FAUX"

				LOOP
				UNTIL W_CaractTrait > W_LenTrait OR W_Stop="VRAI" DO
					IF MOD(W_CaractTrait,29) = 0 THEN
						W_Stop="VRAI"
					END

					W_Sortie<i,1> = W_Sortie<i,1>:W_Traitement[W_CaractTrait,1]
					W_CaractTrait=W_CaractTrait+1
				REPEAT
				W_Sortie<i,1> = W_Sortie<i,1>:SPACE(29-LEN(W_Traitement[W_CaractAntTrait,W_CaractTrait-W_CaractAntTrait])):"|"
				W_Passe="VRAI"
				i=i+1
			REPEAT
		END
	END

END ELSE
	W_Sortie<i,1> = W_Sortie<i,1>:SPACE(30):"|":SPACE(29):"|"
	i=i+1
END

		NEXT j
		W_Sortie<i,1> = "|----------------------------------------------------------------------------------------------------------------------------------|"
		i=i+1
		GOSUB 420
	END
END ELSE
	W_Sortie<i,1> = "Pas d'aid correspondant  la slection"
	i =i + 1
END

RETURN

*********************************************************************
* RECHERCHE DU MOTIF DE SORTIE
440
   Tab<i,3>="INCONNU"
   FOR kMotif = 1 TO DCOUNT(ENR_MOTIFSORTIE<2>,CHAR(253))
	IF ENR_MOTIFSORTIE<2,kMotif> = W_CodeMotifTab THEN
	   IF ENR_MOTIFSORTIE<4,kMotif> <> "" THEN
		iMSSID=1
		LOOP
		WHILE ENR_MOTIFSORTIESID<2,iMSSID> # ENR_MOTIFSORTIE<4,kMotif> AND ENR_MOTIFSORTIESID<2,iMSSID> # "" DO
		   iMSSID=iMSSID+1
		REPEAT
		IF ENR_MOTIFSORTIESID<2,iMSSID> # "" THEN
		   Tab<i,3> = ENR_MOTIFSORTIESID<3,iMSSID>
		END ELSE
   		   * motif = inconnu
		   EXIT
		END
	   END ELSE
		* motif = inconnu
		EXIT
	   END
	END
   NEXT k
   IF LEN(Tab<i,3>) > 33 THEN
	Tab<i,3>=Tab<i,3>[1,33]
   END

RETURN

*********************************************************************
* RECHERCHE LA DATE DE DEBUT D'ACTIVITE
450

	READ ENR_ACTIVITESAIDE FROM F.ACTIVITESAIDE,Tab<j,4> ELSE ENR_ACTIVITESAIDE = ""
	W_CountAct=DCOUNT(ENR_ACTIVITESAIDE<1>,CHAR(253))
	FOR iAct=1 TO W_CountAct
		READ ENR_ACTIVITES FROM F.ACTIVITES,ENR_ACTIVITESAIDE<1,iAct> ELSE ENR_ACTIVITES = ""
		IF ENR_ACTIVITES<12>="S"  THEN
			IF (ENR_ACTIVITESAIDE<2,iAct> <= W_DebutPeriode AND ENR_ACTIVITESAIDE<3,iAct> # "" AND ENR_ACTIVITESAIDE<3,iAct> >= W_DebutPeriode) OR (ENR_ACTIVITESAIDE<2,iAct> <= W_DebutPeriode AND ENR_ACTIVITESAIDE<3,iAct> = "") THEN
				IF Tab<j,2> # ENR_ACTIVITESAIDE<2,iAct> THEN
					Tab=INSERT(Tab,j;"EE")
					*Tab<j,1>="EE"
					Tab<j,2>=ENR_ACTIVITESAIDE<2,iAct>
					Tab<j,3>=""
					Tab<j,4>=Tab<j+1,4>
					Tab<j,5>=Tab<j+1,5>
					Tab<j,6>=ENR_ACTIVITESAIDE<1,iAct>
					W_Max=W_Max+1
					EXIT
				END ELSE
					Tab<j,1>="EE"
				END
			END
		END
	NEXT iAct
RETURN
