**********************************************************************
*
* MOULINETTE PERMETTANT DE GERER LE SOLDE NEGATIF
* DANS LE FICHIER DIFAIDANT
* Mikael                             Juin 2006
**********************************************************************

*Ouverture des fichiers

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

OPEN "","DIFAIDANT" TO F.DIFAIDANT ELSE STOP

**************************************************************************
*Initialisation des variables
**************************************************************************
	W_Fini = ""
	W_Req = ""
	I = 0
	W_Cpt = 0
	W_RESULTAT=""
	W_TEMP2=""
	W_TEMP3=""	
**************************************************************************
* PROGRAMME
**************************************************************************
	W_Req = 'SELECT DIFAIDANT'
	EXECUTE W_Req

	EXECUTE 'SAUVE-LISTE W_RESULTAT' 
	EXECUTE "LISTE W_RESULTAT" RETURNING W_MSG

	IF W_MSG<1>#"209" THEN
		SELECT F.DIFAIDANT TO W_RESULTAT
		W_Fini="FAUX"
		LOOP
			READNEXT W_Cle FROM W_RESULTAT ELSE W_Fini="VRAI"
		WHILE W_Fini="FAUX" DO
			READ ENR_DIFAIDANT FROM F.DIFAIDANT,W_Cle ELSE ENR_DIFAIDANT = ""

			ENR_DIFAIDANT<2,1>=CONVERT(".",",",ENR_DIFAIDANT<2,1>)
			ENR_DIFAIDANT<3,1>=CONVERT(".",",",ENR_DIFAIDANT<3,1>)
			ENR_DIFAIDANT<2,1>=INT(ENR_DIFAIDANT<2,1>)
			ENR_DIFAIDANT<3,1>=INT(ENR_DIFAIDANT<3,1>)

			W_TEMP2=INT(ENR_DIFAIDANT<2,1>)
			W_TEMP3=INT(ENR_DIFAIDANT<3,1>)
			IF W_TEMP2= "" THEN W_TEMP2 = 0
			IF W_TEMP3= "" THEN W_TEMP3 = 0
			ENR_DIFAIDANT<4,1>  = W_TEMP2 - W_TEMP3
			W_Cpt = DCOUNT(ENR_DIFAIDANT<4>,CHAR(253))
			FOR I = 2 TO W_Cpt
				ENR_DIFAIDANT<2,I>=CONVERT(".",",",ENR_DIFAIDANT<2,I>)
				ENR_DIFAIDANT<3,I>=CONVERT(".",",",ENR_DIFAIDANT<3,I>)
				ENR_DIFAIDANT<2,I>=INT(ENR_DIFAIDANT<2,I>)
				ENR_DIFAIDANT<3,I>=INT(ENR_DIFAIDANT<3,I>)
				W_TEMP2=INT(ENR_DIFAIDANT<2,I>)
				W_TEMP3=INT(ENR_DIFAIDANT<3,I>)
				IF W_TEMP2= "" THEN W_TEMP2 = 0
				IF W_TEMP3= "" THEN W_TEMP3 = 0			
				ENR_DIFAIDANT<4,I>= ENR_DIFAIDANT<4,I-1> + W_TEMP2 - W_TEMP3
			NEXT I
			WRITE ENR_DIFAIDANT ON F.DIFAIDANT,W_Cle
		REPEAT
	END
STOP
