************************************
* GESTION DU REGISTRE DU PERSONNEL *
*                                  *
* AVRIL 2001       STEPHANE HERVET *
************************************

* RECAPITULATIF DES GOSUBS

* OUVERTURE DES FICHIERS
EXECUTE "SET-THOUS ."
EXECUTE "SET-DEC ,"
EXECUTE "DATE.FORMAT"
OPEN "","CIVILAIDANT" TO F.CIVILAIDANT ELSE STOP
OPEN "","CONTRAT" TO F.CONTRAT ELSE STOP
OPEN "","ETRANGER" TO F.ETRANGER ELSE STOP
OPEN "","TABLES" TO F.TABLES ELSE STOP
OPEN "","TEMPO" TO F.TEMPO ELSE STOP

* RECUPERATION DES PARAMETRES
PROCREAD PARAMETRES ELSE STOP

W_ENTITE=FIELD(PARAMETRES," ",2)
W_PERIODEDEBUT=FIELD(PARAMETRES," ",3)
W_PERIODEFIN=FIELD(PARAMETRES," ",4)
W_SELECT=FIELD(PARAMETRES," ",5)
W_TRI=FIELD(PARAMETRES," ",6)


*W_RANGENTITE=INDEX(PARAMETRES," ",1)
*W_ENTITE=PARAMETRES[W_RANGENTITE+1,3]
*W_RANGMOISPERIODE=INDEX(PARAMETRES," ",2)
*W_PERIODEDEBUT=PARAMETRES[W_RANGMOISPERIODE+1,5]
*W_RANGMOISPERIODE=INDEX(PARAMETRES," ",3)
*W_PERIODEFIN=PARAMETRES[W_RANGMOISPERIODE+1,5]
*W_RANGSELECT=INDEX(PARAMETRES," ",4)
*W_SELECT=PARAMETRES[W_RANGSELECT+1,1]
*W_RANGTRI=INDEX(PARAMETRES," ",5)
*W_TRI=PARAMETRES[W_RANGTRI+1,1]

* INITIALISE LES VARIABLES
ENR_TEMPO=""
W_AIDANT=""
W_NUMCONTRAT=""
W_NBLIGNE=1
W_NEXTLIGNE=1
W_LISTEAIDANT=""
REGISTREPERSONNEL=""

* LECTURE FICHIER TABLES -> TITRESSEJOUR
READ ENR_TABLES FROM F.TABLES,"TITRESSEJOUR" ELSE ENR_TABLES=""

* EXECUTION DE LA REQUETE DE SELECTION

* TEST CRITERE SELECTION
* A=ACTIF , D=DEBUT , F=FIN
IF W_SELECT="A" THEN 
    * TEST CRITERE DE TRI
    * A=ALPHA , D=DATE ENTREE
    IF W_TRI="A" THEN EXECUTE 'SSELECT CONTRAT AVEC 1 <> "02" AND AVEC 2 = "':W_ENTITE:'" AND AVEC 7 <= "':W_PERIODEFIN:'" AND AVEC 8 >= "':W_PERIODEDEBUT:'" OR = "" AND AVEC 65 <> "O" PAR NomAidantContrat PAR PrenomAidantContrat'
    IF W_TRI="D" THEN EXECUTE 'SSELECT CONTRAT AVEC 1 <> "02" AND AVEC 2 = "':W_ENTITE:'" AND AVEC 7 <= "':W_PERIODEFIN:'" AND AVEC 8 >= "':W_PERIODEDEBUT:'" OR = "" AND AVEC 65 <> "O" PAR 7 PAR NomAidantContrat PAR PrenomAidantContrat'
END
IF W_SELECT="D" THEN 
    * TEST CRITERE DE TRI
    * A=ALPHA , D=DATE ENTREE
    IF W_TRI="A" THEN EXECUTE 'SSELECT CONTRAT AVEC 1 <> "02" AND AVEC 2 = "':W_ENTITE:'" AND AVEC 7 <= "':W_PERIODEFIN:'" AND AVEC 7 >= "':W_PERIODEDEBUT:'" AND AVEC 65 <> "O" PAR NomAidantContrat PAR PrenomAidantContrat'
    IF W_TRI="D" THEN EXECUTE 'SSELECT CONTRAT AVEC 1 <> "02" AND AVEC 2 = "':W_ENTITE:'" AND AVEC 7 <= "':W_PERIODEFIN:'" AND AVEC 7 >= "':W_PERIODEDEBUT:'" AND AVEC 65 <> "O" PAR 7 PAR NomAidantContrat PAR PrenomAidantContrat'
END
IF W_SELECT="F" THEN 
    * TEST CRITERE DE TRI
    * A=ALPHA , D=DATE ENTREE
    IF W_TRI="A" THEN EXECUTE 'SSELECT CONTRAT AVEC 1 <> "02" AND AVEC 2 = "':W_ENTITE:'" AND AVEC 8 <= "':W_PERIODEFIN:'" AND AVEC 8 >= "':W_PERIODEDEBUT:'" AND AVEC 65 <> "O" PAR NomAidantContrat PAR PrenomAidantContrat'
    IF W_TRI="D" THEN EXECUTE 'SSELECT CONTRAT AVEC 1 <> "02" AND AVEC 2 = "':W_ENTITE:'" AND AVEC 8 <= "':W_PERIODEFIN:'" AND AVEC 8 >= "':W_PERIODEDEBUT:'" AND AVEC 65 <> "O" PAR 7 PAR NomAidantContrat PAR PrenomAidantContrat'
END

EXECUTE "SAUVE-LISTE REGISTREPERSONNEL"
EXECUTE "LISTE REGISTREPERSONNEL" CAPTURING MSG RETURNING MSGCODE

* SI REQUETE VIDE ALORS QUITTE PRG
IF MSGCODE<1>=209 THEN 
    WRITE ENR_TEMPO ON F.TEMPO,"REGISTREPERSONNEL"
    STOP
END

SELECT F.CONTRAT TO REGISTREPERSONNEL

* TRAITEMENT DES INFORMATIONS SELECTIONNEES
W_FINI=0
LOOP
     READNEXT W_CLECONTRAT FROM REGISTREPERSONNEL ELSE W_FINI=1
     UNTIL W_FINI=1 DO

     IF W_AIDANT="" THEN W_AIDANT=W_CLECONTRAT[1,5]
     IF W_LISTEAIDANT="" THEN W_LISTEAIDANT<1>=W_CLECONTRAT[1,5]
     
     * REGARDE SI RUPTURE AIDANT
     IF W_AIDANT<>W_CLECONTRAT[1,5] THEN
	 IF INDEX(W_LISTEAIDANT,W_CLECONTRAT[1,5],1)=0 OR W_TRI="A" THEN
	   * STOCKE NOUVEAU CODE AIDANT
	   GOSUB 11 								  ;* RECUPERATION IDENTITE AIDANT

	   * GESTION LECTURE CONTRAT
           W_NUMCONTRAT="001"

	   GOSUB 20								  ;* LECTURE CONTRAT SUCCESSIFS

	   W_AIDANT=W_CLECONTRAT[1,5]
	   W_LISTEAIDANT<1,-1>=W_CLECONTRAT[1,5]
 	 END
     END

REPEAT

* STOCKE NOUVEAU CODE AIDANT
GOSUB 11 									  ;* RECUPERATION IDENTITE AIDANT

* GESTION LECTURE CONTRAT
W_NUMCONTRAT="001"

GOSUB 20								  	  ;* LECTURE CONTRAT SUCCESSIFS

* ECRITURE DANS TEMPO
WRITE ENR_TEMPO ON F.TEMPO,"REGISTREPERSONNEL"

STOP

************************************
* RECUPERATION IDENTITE AIDANT 

11 *

   IF W_NEXTLIGNE>W_NBLIGNE THEN W_NBLIGNE=W_NEXTLIGNE

   * LECTURE CIVILAIDANT
   READ ENR_CIVILAIDANT FROM F.CIVILAIDANT,W_AIDANT ELSE ENR_CIVILAIDANT=""
   
   W_NOM=""
   W_NOM=ENR_CIVILAIDANT<2>:" ":ENR_CIVILAIDANT<3>
   W_NOM=W_NOM[1,27]
   ENR_CIVILAIDANT<19>=ENR_CIVILAIDANT<19>[1,26]


   ENR_TEMPO<W_NBLIGNE,1>=W_AIDANT 						  ;* CODE AIDANT
   ENR_TEMPO<W_NBLIGNE,2>=W_NOM "L#27" 	 					  ;* NOM + PRENOM
   ENR_TEMPO<W_NBLIGNE,3>=OCONV(ENR_CIVILAIDANT<26>,"D4/")			  ;* DDN

   ENR_TEMPO<W_NBLIGNE,4>=ENR_CIVILAIDANT<16>

   IF ENR_CIVILAIDANT<19>="FRANCE" THEN						  ;* NATIONALITE + PAYS
       
       ENR_TEMPO<W_NBLIGNE,5>=ENR_CIVILAIDANT<19> "L#26"

       * STOCKE NUMERO LIGNE SUIVANTE
       W_NEXTLIGNE=W_NBLIGNE
   END ELSE
       
       ENR_TEMPO<W_NBLIGNE,5>=ENR_CIVILAIDANT<19> "L#26"
       * LECTURE ETRANGER
       READ ENR_ETRANGER FROM F.ETRANGER,W_AIDANT ELSE ENR_ETRANGER=""

       * RECHERCHE TYPE DE TITRE DE SEJOUR
       I=1
       LOOP
	    UNTIL ENR_TABLES<2,I>=ENR_ETRANGER<1> OR ENR_TABLES<2,I>="" DO
	    I=I+1
       REPEAT

       * MISE EN FORME ATT 1 A 5 
       IF ENR_TEMPO<W_NBLIGNE+1,1>="" THEN ENR_TEMPO<W_NBLIGNE+1,1>=SPACE(5)
       IF ENR_TEMPO<W_NBLIGNE+1,2>="" THEN ENR_TEMPO<W_NBLIGNE+1,2>=SPACE(27)
       IF ENR_TEMPO<W_NBLIGNE+1,3>="" THEN ENR_TEMPO<W_NBLIGNE+1,3>=SPACE(10)
       IF ENR_TEMPO<W_NBLIGNE+1,4>="" THEN ENR_TEMPO<W_NBLIGNE+1,4>=SPACE(1)
       IF ENR_TEMPO<W_NBLIGNE+1,6>="" THEN ENR_TEMPO<W_NBLIGNE+1,6>=SPACE(10)     
       IF ENR_TEMPO<W_NBLIGNE+1,7>="" THEN ENR_TEMPO<W_NBLIGNE+1,7>=SPACE(4)	
       IF ENR_TEMPO<W_NBLIGNE+1,8>="" THEN ENR_TEMPO<W_NBLIGNE+1,8>=SPACE(10)
       ENR_TEMPO<W_NBLIGNE+1,5>=ENR_TABLES<3,I>[1,26] "L#26"

       * MISE EN FORME ATT 1 A 5 
       IF ENR_TEMPO<W_NBLIGNE+2,1>="" THEN ENR_TEMPO<W_NBLIGNE+2,1>=SPACE(5)
       IF ENR_TEMPO<W_NBLIGNE+2,2>="" THEN ENR_TEMPO<W_NBLIGNE+2,2>=SPACE(27)
       IF ENR_TEMPO<W_NBLIGNE+2,3>="" THEN ENR_TEMPO<W_NBLIGNE+2,3>=SPACE(10)
       IF ENR_TEMPO<W_NBLIGNE+2,4>="" THEN ENR_TEMPO<W_NBLIGNE+2,4>=SPACE(1)
       IF ENR_TEMPO<W_NBLIGNE+2,6>="" THEN ENR_TEMPO<W_NBLIGNE+2,6>=SPACE(10)     
       IF ENR_TEMPO<W_NBLIGNE+2,7>="" THEN ENR_TEMPO<W_NBLIGNE+2,7>=SPACE(4)	
       IF ENR_TEMPO<W_NBLIGNE+2,8>="" THEN ENR_TEMPO<W_NBLIGNE+2,8>=SPACE(10)
       ENR_TEMPO<W_NBLIGNE+2,5>=ENR_ETRANGER<3>[1,26] "L#26"

       * STOCKE NUMERO LIGNE SUIVANTE
       W_NEXTLIGNE=W_NBLIGNE+2
   END

RETURN

************************************
* GESTION LECTURE CONTRATS AIDANT

20 * 


   W_NUMCONTRAT="001"

   * LECTURE CONTRAT SUCCESSIFS
   LOOP 
	READ ENR_CONTRAT FROM F.CONTRAT,W_AIDANT:W_NUMCONTRAT ELSE ENR_CONTRAT=""
   UNTIL INT(W_NUMCONTRAT) > INT(ENR_CIVILAIDANT<41>) DO

	IF ENR_CONTRAT # "" THEN
		* TEST SI CONTRAT CORRESPOND AUX CHOIX SELECTIONNES
*		IF INT(ENR_CONTRAT<7>)<=INT(W_PERIODEFIN) AND ENR_CONTRAT<1><>"02" AND ENR_CONTRAT<65><>"O" AND ENR_CONTRAT<2>=W_ENTITE THEN 
		IF ENR_CONTRAT<1><>"02" AND ENR_CONTRAT<65><>"O" AND ENR_CONTRAT<2>=W_ENTITE THEN 
		    * MISE EN FORME ATT 1 A 5 
		    IF ENR_TEMPO<W_NBLIGNE,1>="" THEN ENR_TEMPO<W_NBLIGNE,1>=SPACE(5)
		    IF ENR_TEMPO<W_NBLIGNE,2>="" THEN ENR_TEMPO<W_NBLIGNE,2>=SPACE(27)
		    IF ENR_TEMPO<W_NBLIGNE,3>="" THEN ENR_TEMPO<W_NBLIGNE,3>=SPACE(10)
		    IF ENR_TEMPO<W_NBLIGNE,4>="" THEN ENR_TEMPO<W_NBLIGNE,4>=SPACE(1)
		    IF ENR_TEMPO<W_NBLIGNE,5>="" THEN ENR_TEMPO<W_NBLIGNE,5>=SPACE(26)

		    * TRAITEMENT
		    ENR_TEMPO<W_NBLIGNE,6>=OCONV(ENR_CONTRAT<7>,"D4/")				  ;* DATE DEBUT CONTRAT
		    IF ENR_CONTRAT<4>="I" THEN
			 ENR_TEMPO<W_NBLIGNE,7>="CDI" 						  ;* TYPE CONTRAT
		    END ELSE
			 ENR_TEMPO<W_NBLIGNE,7>="CDD"
		    END
		    IF ENR_CONTRAT<8><>"" THEN							  ;* DATE FIN CONTRAT
   	        	ENR_TEMPO<W_NBLIGNE,8>=OCONV(ENR_CONTRAT<8>,"D4/")
		    END ELSE	
   	        	ENR_TEMPO<W_NBLIGNE,8>=SPACE(10)  
		    END

	            W_NBAVENANT=DCOUNT(ENR_CONTRAT<16>,CHAR(253))

		    * RECUPERATION QUALIF PRO
		    IF INT(ENR_CONTRAT<8>)<INT(W_PERIODEDEBUT) THEN 
			ENR_TEMPO<W_NBLIGNE,9>=ENR_CONTRAT<16,W_NBAVENANT>[1,24]
		    END ELSE
			* RECHERCHE AVENANT EN COURS 
			FOR J=1 TO W_NBAVENANT STEP -1
			    IF INT(ENR_CONTRAT<15,J>)<=INT(W_PERIODEFIN) THEN EXIT
			NEXT J
			ENR_TEMPO<W_NBLIGNE,9>=ENR_CONTRAT<16,J>[1,24]
		    END
	
		    W_NBLIGNE=W_NBLIGNE+1
		END
	END

	W_NUMCONTRAT=W_NUMCONTRAT+1 "R%3"
   REPEAT

RETURN
