EXECUTE "SET-THOUS ."
EXECUTE "SET-DEC ,"
EXECUTE "DATE.FORMAT"

* Modif Greg - 30/01/14 - Le PRMOUL est  utiliser cette pour les assos de l'Indre.
* J'ai modifi l'initialisation de la variable W_NumCoti pour appliquer un Mid sur 10 caractres.
* J'ai galement modifi les FIELD car les colonnes  prendre n'ont pas les mmes positions.

OPEN "","FUSION" TO F.FUSION ELSE PRINT "IMPOSSIBLE FUSION"
OPEN "","ELTSPARTEMP" TO F.ELTSPARTEMP ELSE PRINT "IMPOSSIBLE ELTSPARTEMP"

ENR_FUSION = ""
ENR_ELTSPARTEMP = ""
ENR_FICHIER=""

W_Rep=""
W_CLE=""
W_Req=""
W_Tab=""
W_Fini=""
W_Fichier="beneficiaireurssaf.csv"

* Modif Greg - 03/01/13 - Au cours de tests, je suis tomb sur des cas dont le numro de siret tait saisi
* avec des espaces dans Infologis. Je parcours donc tous ces cas afin d'enlever les espaces.
EXECUTE 'SELECT ELTSPARTEMP AVEC 4 = "[ ]"'
EXECUTE 'SAUVE-LISTE W_Req'
EXECUTE "LISTE W_Req" RETURNING MSGCODE

IF MSGCODE<1>#"209" THEN
	SELECT F.ELTSPARTEMP TO W_Req
	W_Fini="Faux"
	LOOP
		READNEXT W_CLE FROM W_Req ELSE W_Fini = "Vrai"
	WHILE W_Fini = "Faux"
		READ ENR_ELTSPARTEMP FROM F.ELTSPARTEMP, W_CLE THEN
			ENR_ELTSPARTEMP<4>=CONVERT(" ","",ENR_ELTSPARTEMP<4>)
			WRITE ENR_ELTSPARTEMP ON F.ELTSPARTEMP, W_CLE
		END
	REPEAT
END
EXECUTE 'EFFACER-LISTE W_Req'
W_Req=""
* Fin modif Greg - 03/01/13


READ ENR_FICHIER FROM F.FUSION, W_Fichier THEN

	W_CptLigne=1
	LOOP
		W_CptLigne=W_CptLigne+1

	WHILE ENR_FICHIER<W_CptLigne>#"" DO
		* Modif Greg - 03/01/13 - L'algo d'origine calculait des positions de dbut de chaine
		* et leur longueur, pour trouver les diffrentes donnes. Totalement inutile vu la complexit
		* de la chose, puisque les donnes sont spares par des ;. Il suffit donc d'utiliser la commande FIELD.
		W_NumSiret=FIELD(ENR_FICHIER<W_CptLigne>,";",7)
		W_NumCoti=FIELD(ENR_FICHIER<W_CptLigne>,";",5)[9,10]
		W_Nom=FIELD(ENR_FICHIER<W_CptLigne>,";",2)
		* Fin modif Greg - 03/01/13

		EXECUTE 'SELECT ELTSPARTEMP AVEC 4="':W_NumSiret:'"'
		EXECUTE 'SAUVE-LISTE W_Req'
		EXECUTE "LISTE W_Req" RETURNING MSGCODE
		
		W_Tab<1>="Nom prenom aide;Traitement effectue"
			
		IF MSGCODE<1>#"209" THEN
			SELECT F.ELTSPARTEMP TO W_Req
			W_Fini="Faux"
			LOOP
				READNEXT W_CLE FROM W_Req ELSE W_Fini = "Vrai"
			WHILE W_Fini = "Faux"
				READ ENR_ELTSPARTEMP FROM F.ELTSPARTEMP, W_CLE THEN
					ENR_ELTSPARTEMP<2>=W_NumCoti
					W_Tab<-1>=W_Nom:";OK"
					WRITE ENR_ELTSPARTEMP ON F.ELTSPARTEMP, W_CLE
				END ELSE
					W_Tab<-1>=W_Nom:";"
				END
			REPEAT
		END ELSE
			* Modif Greg - 03/01/13 - Le programme gnrait un rapport seulement lorsque le SELECT trouvait quelque chose.
			* Si le numro de siret n'tait pas trouv, on ne remontait pas l'info. C'est maintenant fait.
			W_Tab<-1>=W_Nom:";"
			* Fin modif Greg - 03/01/13
		END
		EXECUTE 'EFFACER-LISTE W_Req'
	REPEAT
	WRITE W_Tab ON F.FUSION, "ResultatTraitement_RenumUrssaf.csv"
END
PRINT "Traitement termin, le fichier ResultatTratiement.csv a ete genere dans le repertoire FUSION"
STOP