EXECUTE 'SET-DEC ,'
EXECUTE 'SET-THOUS .'
EXECUTE 'DATE.FORMAT'
OPEN "", "SSIADPROTOCOLE" TO F.SSIADPROTOCOLE ELSE STOP

PROCREAD PARAMETRES ELSE STOP
CodeAide = FIELD(PARAMETRES, "|",2)
CodeActivite = FIELD(PARAMETRES, "|",3)
AncDateFin = FIELD(PARAMETRES, "|",4)
NewDateFin = FIELD(PARAMETRES, "|",5)
AncDateDeb = FIELD(PARAMETRES, "|",6)
NewDateDeb = FIELD(PARAMETRES, "|",7)

* 1 trt date de fin
IF NewDateFin # "" THEN

  W_Temp = 'SELECT SSIADPROTOCOLE AVEC @ID = "':CodeAide:']"'

  IF CodeActivite # "" THEN
	W_Temp = W_Temp:' AND AVEC CodeActInterv = "':CodeActivite:'"'	
  END

    IF AncDateFin # "" THEN
	IF NewDateFin < AncDateFin THEN
		W_Temp = W_Temp :' AND AVEC 1 > "':NewDateFin:'" AND AVEC 1 <= "':AncDateFin:'"'
	END ELSE
		* Rien a faire
		W_Temp = ""
		GOTO 20
	END
    END ELSE
	
	W_Temp = W_Temp :' AND AVEC 1 > "':NewDateFin:'" OR = ""'
	
    END

  EXECUTE W_Temp
  PRINT W_Temp
  W_Fin = "F"
  LOOP
    READNEXT W_Cle ELSE W_Fin = "V"
  WHILE W_Fin = "F"
	READ ENR_SSIADPROTOCOLE FROM F.SSIADPROTOCOLE, W_Cle THEN
	
		GOSUB 100		

	END
  REPEAT

END

20
* 2 Trt date de dbut
IF NewDateDeb # "" THEN

  W_Temp = 'SELECT SSIADPROTOCOLE AVEC @ID = "':CodeAide:']"'

  IF CodeActivite # "" THEN
	W_Temp = W_Temp:' AND AVEC CodeActInterv = "':CodeActivite:'"'	
  END


   IF AncDateDeb = "" THEN
	W_Temp = W_Temp :' AND AVEC DateDebInterv < "':NewDateDeb:'"'
	W_Temp = W_Temp :' AND AVEC DateFinInterv >= "':NewDateDeb:'"'
   END ELSE
	IF AncDateDeb < NewDateFin THEN
		W_Temp = W_Temp :' AND AVEC DateDebInterv < "':NewDateDeb:'"'
		W_Temp = W_Temp :' AND AVEC DateDebInterv >= "':AncDateDeb:'"' 
	END ELSE
		* Rien a faire
		W_Temp = ""
		GOTO 30
	END
   END

    EXECUTE W_Temp
  PRINT W_Temp

  W_Fin = "F"
  LOOP
    READNEXT W_Cle ELSE W_Fin = "V"
  WHILE W_Fin = "F"
	READ ENR_SSIADPROTOCOLE FROM F.SSIADPROTOCOLE, W_Cle THEN
	
		GOSUB 200		

	END
  REPEAT
END

30

STOP

100
  IF ENR_SSIADPROTOCOLE<1> = "" OR ENR_SSIADPROTOCOLE<1> > NewDateFin THEN
    * On va rduire la validit du protocole en fonction de NewDateFin, et mme le supprimer s'il y a lieu :
    IF W_Cle[6,5] > NewDateFin THEN
	DELETE F.SSIADPROTOCOLE, W_Cle
	
    END ELSE
	ENR_SSIADPROTOCOLE<1> = NewDateFin
	WRITE ENR_SSIADPROTOCOLE ON F.SSIADPROTOCOLE, W_Cle
    END
  END
RETURN

200
   IF W_Cle[6,5] < NewDateDeb THEN
	DELETE F.SSIADPROTOCOLE, W_Cle
	IF ENR_SSIADPROTOCOLE<1> # "" AND ENR_SSIADPROTOCOLE<1> < NewDateDeb THEN
		* Rien d'autre que supprimer l'article		
	END ELSE
		* On recre un article :
		WRITE ENR_SSIADPROTOCOLE ON F.SSIADPROTOCOLE, CodeAide:NewDateDeb:W_Cle[11,11]
	END
   END
RETURN