*****************************************************
*
* MOULINETTE DE TRANSFERT DES GARDES VERS CIVILAIDANT
*
* PREVOIR DESC. NOM SUR ATT.2 DE CIVILAIDANT
*
* OCTOBRE 98                                  GILBERT
*****************************************************
EXECUTE 'DATE.FORMAT'
PROCREAD VARIABLES ELSE STOP
MODULE=FIELD(VARIABLES," ",2)
OPEN "","VOC" TO F.VOC ELSE STOP
OPEN "","PARAMASSO" TO F.PARAMASSO ELSE STOP
READ ENRPARAMASSO FROM F.PARAMASSO,"1" ELSE STOP
TYPEBASE=EXTRACT(ENRPARAMASSO,6)
ENRVOC=""
ENRVOC=REPLACE(ENRVOC,1;"F")
CHEMIN="D:\TRANSFERT\":MODULE
ENRVOC=REPLACE(ENRVOC,2;CHEMIN:"\GAD")
ENRVOC=REPLACE(ENRVOC,3;CHEMIN:"\D_GAD")
WRITE ENRVOC ON F.VOC,"GAD"
IF TYPEBASE="P" THEN
 ENRVOC=REPLACE(ENRVOC,2;CHEMIN:"\GAD/EMPLOI")
 ENRVOC=REPLACE(ENRVOC,3;CHEMIN:"\D_GAD/EMPLOI")
 WRITE ENRVOC ON F.VOC,"GAD/EMPLOI"
 ENRVOC=REPLACE(ENRVOC,2;CHEMIN:"\EMPLOI/GAD")
 ENRVOC=REPLACE(ENRVOC,3;CHEMIN:"\D_EMPLOI/GAD")
 WRITE ENRVOC ON F.VOC,"EMPLOI/GAD"
END ELSE
 ENRVOC=REPLACE(ENRVOC,2;CHEMIN:"\GAD-EMPLOI")
 ENRVOC=REPLACE(ENRVOC,3;CHEMIN:"\D_GAD-EMPLOI")
 WRITE ENRVOC ON F.VOC,"GAD-EMPLOI"
 ENRVOC=REPLACE(ENRVOC,2;CHEMIN:"\EMPLOI-GAD")
 ENRVOC=REPLACE(ENRVOC,3;CHEMIN:"\D_EMPLOI-GAD")
 WRITE ENRVOC ON F.VOC,"EMPLOI-GAD"
END
ENRVOC=REPLACE(ENRVOC,2;CHEMIN:"\GRILLES")
ENRVOC=REPLACE(ENRVOC,3;CHEMIN:"\D_GRILLES")
WRITE ENRVOC ON F.VOC,"GRILLES"
ENRVOC=REPLACE(ENRVOC,2;CHEMIN:"\EMPLOYEURS")
ENRVOC=REPLACE(ENRVOC,3;CHEMIN:"\D_EMPLOYEURS")
WRITE ENRVOC ON F.VOC,"EMPLOYEURS"
ENRVOC=REPLACE(ENRVOC,2;CHEMIN:"\CONGES")
ENRVOC=REPLACE(ENRVOC,3;CHEMIN:"\D_CONGES")
WRITE ENRVOC ON F.VOC,"CONGES"
OPEN "","TEMPAIDANT" TO F.TEMPAIDANT ELSE STOP
I=1
PRESENCEGESTEMPS=0
PRESENCEMODULE=0
J=0
LOOP
 COMPTE=EXTRACT(ENRPARAMASSO,1,I)
 UNTIL COMPTE="" DO
  IF COMPTE=MODULE THEN
   PRESENCEMODULE=1
   J=I
  END
  IF COMPTE="GESTEMPS" THEN PRESENCEGESTEMPS=1
  I=I+1
REPEAT
IF PRESENCEMODULE=0 THEN STOP
I=J
CODEACTIVITE=EXTRACT(ENRPARAMASSO,2,I):EXTRACT(ENRPARAMASSO,3,I)
CCN=EXTRACT(ENRPARAMASSO,4,I)
READ ENRPARAMASSO FROM F.PARAMASSO,MODULE ELSE STOP
CONGES.MOIS=EXTRACT(ENRPARAMASSO,4)
PAIEMENT.SALAIRES=EXTRACT(ENRPARAMASSO,5)
CONTRATPREV1=EXTRACT(ENRPARAMASSO,6)
CONTRATPREV2=EXTRACT(ENRPARAMASSO,7)
LOCOMOTION="4"
ANTENNE="001001"
**********
* INITIALISATIONS
**********
VIDE=""
B1=" "
B2="  "
**********
* OUVERTURE DES FICHIERS
**********
OPEN "","GAD" TO F.GAD ELSE STOP
IF TYPEBASE="P" THEN
 OPEN "","GAD/EMPLOI" TO F.GADEMPLOI ELSE STOP
 OPEN "","EMPLOI/GAD" TO F.EMPLOIGAD ELSE STOP
END ELSE
 OPEN "","GAD-EMPLOI" TO F.GADEMPLOI ELSE STOP
 OPEN "","EMPLOI-GAD" TO F.EMPLOIGAD ELSE STOP
END
OPEN "","CONGES" TO F.CONGES ELSE CONGES.MOIS="1"
OPEN "","GRILLES" TO F.GRILLES ELSE STOP
OPEN "","EMPLOYEURS" TO F.EMPLOYEURS ELSE STOP
OPEN "","ELTSPARTEMP" TO F.ELTSPARTEMP ELSE STOP
OPEN "","CIVILAIDANT" TO F.CIVILAIDANT ELSE STOP
OPEN "","RIBAIDANT" TO F.RIBAIDANT ELSE STOP
OPEN "","CONTRAT" TO F.CONTRAT ELSE STOP
OPEN "","PAYS" TO F.PAYS ELSE STOP
OPEN "","COMPTEUR" TO F.COMPTEUR ELSE STOP
OPEN "","GRILLESCC" TO F.GRILLESCC ELSE STOP
OPEN "","BLOCNOTAIDE" TO F.BLOCNOTAIDE ELSE STOP
OPEN "","ERREURSMIGR" TO F.ERREURSMIGR ELSE STOP
OPEN "","PCS" TO F.PCS ELSE STOP
OPEN "","PERIODESPAIE" TO F.PERIODESPAIE ELSE STOP
CODEPCS="5632"
READ ENRCATEGORIE.PCS FROM F.PCS,CODEPCS[1,2] ELSE ENRCATEGORIE.PCS=VIDE
CATEGORIE.PCS=EXTRACT(ENRCATEGORIE.PCS,1)
READ ENRFONCTION.PCS FROM F.PCS,CODEPCS ELSE ENRFONCTION.PCS=VIDE
FONCTION.PCS=EXTRACT(ENRFONCTION.PCS,1)
W_DateJour=OCONV(DATE(),"D4/")
W_DateJour=W_DateJour[7,4]:W_DateJour[4,2]
READ ENRPERIODESPAIE FROM F.PERIODESPAIE,"1" ELSE ENRPERIODESPAIE=W_DateJour

**********
* MONTEE EN TABLE DES GRILLES
**********
DIM GRILLES(99,4)
MAT GRILLES=""
EXECUTE "TSELECT GRILLES"
FINI="NON"
CPT.GRILLES="0"
LOOP
   READNEXT CODE.GRILLES ELSE FINI="OUI"
   UNTIL FINI="OUI" DO
      READ ENRGRILLES FROM F.GRILLES,CODE.GRILLES ELSE ENRGRILLES=VIDE
      CPT.GRILLES=CPT.GRILLES+1
      GRILLES(CPT.GRILLES,1)=CODE.GRILLES
      FOR K=2 TO 4
         GRILLES(CPT.GRILLES,K)=EXTRACT(ENRGRILLES,K)
      NEXT K
REPEAT
DIM GRILLESCC(20,2)
MAT GRILLESCC=""
EXECUTE 'TSELECT GRILLESCC = "02]"'
FINI="NON"
CPT.GRILLESCC="0"
LOOP
   READNEXT CODE.GRILLESCC ELSE FINI="OUI"
   UNTIL FINI="OUI" DO
      CPT.GRILLESCC=CPT.GRILLESCC+1
      READ ENRGRILLESCC FROM F.GRILLESCC,CODE.GRILLESCC ELSE ENRGRILLESCC=VIDE
      GRILLESCC(CPT.GRILLESCC,1)=CODE.GRILLESCC
      GRILLESCC(CPT.GRILLESCC,2)=EXTRACT(ENRGRILLESCC,4,1)
REPEAT
**********
* RECUP DU COMPTEUR
**********
READ ENRCOMPTEUR FROM F.COMPTEUR,"999" ELSE ENRCOMPTEUR=""
COMPTEUR=EXTRACT(ENRCOMPTEUR,8)
IF COMPTEUR="" THEN COMPTEUR=0
READ ENRERREURSMIGR FROM F.ERREURSMIGR,"1" ELSE ENRERREURSMIGR=""
ENRERREURSMIGR=REPLACE(ENRERREURSMIGR,-1;"PR1 TRANSGAD")
**********
* SELECTION DES GAD
**********
EXECUTE "TSELECT GAD"
10 READNEXT CODE.GAD ELSE
  ENRCOMPTEUR=REPLACE(ENRCOMPTEUR,8;COMPTEUR)
  WRITE ENRCOMPTEUR ON F.COMPTEUR,"999"
  DELETE F.VOC,"GAD"
  DELETE F.VOC,"GAD-EMPLOI"
  DELETE F.VOC,"EMPLOI-GAD"
  DELETE F.VOC,"GRILLES"
  DELETE F.VOC,"CONGES"
  DELETE F.VOC,"EMPLOYEURS"
  DELETE F.VOC,"GAD/EMPLOI"
  DELETE F.VOC,"EMPLOI/GAD"
  WRITE ENRERREURSMIGR ON F.ERREURSMIGR,"1"
  STOP
END
READ ENRGAD FROM F.GAD,CODE.GAD ELSE GOTO 10
TNP=TRIM(EXTRACT(ENRGAD,1))
NIR.B1=TRIM(EXTRACT(ENRGAD,9))
NIR15=NIR.B1[1,1]:NIR.B1[3,2]:NIR.B1[6,2]:NIR.B1[9,2]:NIR.B1[12,3]:NIR.B1[16,3]:NIR.B1[20,2]
CLE.NIR=NIR15[14,2]
NIR13=NIR15[1,13]
NIRINCOMPLET="NON"
IF NIR13[8,3]="000" OR NIR13[11,3]="000" THEN NIRINCOMPLET="OUI"
REGLT=TRIM(EXTRACT(ENRGAD,30))
IF REGLT="3" THEN REGLT="1" ELSE REGLT="2"
PRESENCERIB=EXTRACT(ENRGAD,33)
IF PAIEMENT.SALAIRES="1" THEN REGLT="1"
READ ENRGADEMPLOI FROM F.GADEMPLOI,CODE.GAD ELSE ENRGADEMPLOI=VIDE
IF PRESENCEGESTEMPS=0 THEN
 CODEEMPL=EXTRACT(ENRGADEMPLOI,1,1)
 IF CODEEMPL # "" THEN
  READ ENREMPLOYEURS FROM F.EMPLOYEURS,CODEEMPL ELSE CODEEMPL=EXTRACT(ENRGADEMPLOI,2,1)
 END
 IF CODEEMPL="" THEN
  LIBERREUR=CODE.GAD:" --> SECTEUR 001 PAR DEFAUT CAR PAS D'EMPLOYEUR"
  SECTEUR="001"
  SOUSSECTEUR=SECTEUR:"01"
  QUARTIER=SOUSSECTEUR:"01"
 END ELSE
  READ ENREMPLOYEURS FROM F.EMPLOYEURS,CODEEMPL ELSE GOTO 10
  SECTEUR=EXTRACT(ENREMPLOYEURS,30)
  SECTEUR="0":SECTEUR
  SOUSSECTEUR=SECTEUR:"01"
  QUARTIER=SOUSSECTEUR:"01"
 END
END
ACTIFAV="FAUX"
PASTEMPAIDANT="NON"
PASACTIFAVANT="OUI"
TRAITCONTRAT="NON"
IF NIRINCOMPLET="NON" THEN 
 READ ENRTEMPAIDANT FROM F.TEMPAIDANT,NIR13 THEN
   CODE.CIVILAIDANT=EXTRACT(ENRTEMPAIDANT,1)
   ACTIFAV=EXTRACT(ENRTEMPAIDANT,2)
   CONTRAT="001"
   LOOP
      READ ENRCONTRAT FROM F.CONTRAT,CODE.CIVILAIDANT:CONTRAT ELSE ENRCONTRAT=VIDE
      UNTIL ENRCONTRAT=VIDE DO
         CONTRAT=CONTRAT+1
         CONTRAT=CONTRAT "R0(%3)" 
   REPEAT
   TRAITCONTRAT="OUI"
   GOSUB 500
   ENRGAD=REPLACE(ENRGAD,60;CODE.CIVILAIDANT)
   WRITE ENRGAD ON F.GAD,CODE.GAD
   IF ACTIFAV = "FAUX" AND ENRGAD<15> = "" THEN
      PASACTIFAVANT="NON"
   END
 END ELSE
   PASTEMPAIDANT="OUI"
 END
END
IF NIRINCOMPLET="OUI" OR PASTEMPAIDANT="OUI" OR PASACTIFAVANT="NON" THEN
   IF PASACTIFAVANT="OUI" THEN
      ENRTEMPAIDANT=VIDE
      COMPTEUR=COMPTEUR+1
      CODE.CIVILAIDANT=COMPTEUR "R0(%5)"
      ENRTEMPAIDANT=REPLACE(ENRTEMPAIDANT,1;CODE.CIVILAIDANT)
      IF ENRGAD<15> = "" THEN
         ENRTEMPAIDANT=REPLACE(ENRTEMPAIDANT,2;"VRAI")
      END ELSE
         ENRTEMPAIDANT=REPLACE(ENRTEMPAIDANT,2;"FAUX")
      END
      WRITE ENRTEMPAIDANT ON F.TEMPAIDANT,NIR13
   END
   NOM=FIELD(TNP,B1,2)
   ENRCIVILAIDANT=VIDE
      * ETAT-CIVIL
   GOSUB 100
      * TRAVAIL DES ADRESSES
   GOSUB 200
   WRITE ENRCIVILAIDANT ON F.CIVILAIDANT,CODE.CIVILAIDANT
   ENRGAD=REPLACE(ENRGAD,60;CODE.CIVILAIDANT)
   WRITE ENRGAD ON F.GAD,CODE.GAD
      * BANQUE
*   GOSUB 400   
*   IF ENRRIBAIDANT#"" THEN
*    ENRRIBAIDANT=REPLACE(ENRRIBAIDANT,8;"")
*    WRITE ENRRIBAIDANT ON F.RIBAIDANT,CODE.CIVILAIDANT
*   END     
      * CONTRAT
   IF TRAITCONTRAT="NON" THEN
      CONTRAT="001"
      LOOP
         READ ENRCONTRAT FROM F.CONTRAT,CODE.CIVILAIDANT:CONTRAT ELSE ENRCONTRAT=VIDE
         UNTIL ENRCONTRAT=VIDE DO
            CONTRAT=CONTRAT+1
            CONTRAT=CONTRAT "R0(%3)" 
      REPEAT
      GOSUB 500
   END
END

*
IF REGLT=1 THEN
   READ ENRRIBAIDANT FROM F.RIBAIDANT,CODE.CIVILAIDANT ELSE ENRRIBAIDANT=VIDE
   IF ENRRIBAIDANT=VIDE OR ENRRIBAIDANT<3>=VIDE THEN
      * BANQUE
      GOSUB 400   
      IF ENRRIBAIDANT#"" THEN
         ENRRIBAIDANT=REPLACE(ENRRIBAIDANT,8;"")
         WRITE ENRRIBAIDANT ON F.RIBAIDANT,CODE.CIVILAIDANT
      END
   END ELSE
      IF ACTIFAV = "FAUX" AND ENRGAD<15> = "" THEN
         * BANQUE
         GOSUB 400   
         IF ENRRIBAIDANT#"" THEN
           ENRRIBAIDANT=REPLACE(ENRRIBAIDANT,8;"")
           WRITE ENRRIBAIDANT ON F.RIBAIDANT,CODE.CIVILAIDANT
         END
      END
   END
END ELSE
 IF PRESENCERIB#"" AND PRESENCERIB#" " THEN
   READ ENRRIBAIDANT FROM F.RIBAIDANT,CODE.CIVILAIDANT ELSE ENRRIBAIDANT=VIDE
   IF ENRRIBAIDANT=VIDE OR ENRRIBAIDANT<3>=VIDE THEN
      * BANQUE
      GOSUB 400   
      IF ENRRIBAIDANT#"" THEN
         ENRRIBAIDANT=REPLACE(ENRRIBAIDANT,8;"")
         WRITE ENRRIBAIDANT ON F.RIBAIDANT,CODE.CIVILAIDANT
      END
   END
 END
END
*

GOTO 10
**********
* ETAT-CIVIL
**********
100 ENRCIVILAIDANT=REPLACE(ENRCIVILAIDANT,2;NOM)
CLE.ATTENDU=97-MOD(NIR13,97)
IF CLE.ATTENDU <> CLE.NIR THEN
   LIBERREUR=CODE.GAD:" --> ":CODE.CIVILAIDANT:" PROBLEME DANS LE NIR , CLE = ":CLE.NIR:" ET CLE ATTENDU = ":CLE.ATTENDU
   ENRERREURSMIGR=REPLACE(ENRERREURSMIGR,-1;LIBERREUR)
END
ENRCIVILAIDANT=REPLACE(ENRCIVILAIDANT,17;NIR.B1[1,18])
ENRCIVILAIDANT=REPLACE(ENRCIVILAIDANT,18;CLE.NIR)
TITRE=FIELD(TNP,B1,1)
SEXE="F"
IF NIR13[1,1]=1 THEN
   SEXE="M"
   TITRE="MR"
END ELSE
   IF TITRE="MLE" OR TITRE="Mle" OR TITRE="MELLE" OR TITRE="MLLE" OR TITRE="Mlle" THEN TITRE="MLE" ELSE TITRE="MME"
END
ENRCIVILAIDANT=REPLACE(ENRCIVILAIDANT,1;TITRE)
ENRCIVILAIDANT=REPLACE(ENRCIVILAIDANT,16;SEXE)
PRENOM=FIELD(TNP,B1,3)
ENRCIVILAIDANT=REPLACE(ENRCIVILAIDANT,3;PRENOM)
TROPLONG=TRIM(FIELD(TNP,B1,4))
IF TROPLONG <> VIDE THEN
   PRENOM=PRENOM:B1:TROPLONG
   LIBERREUR=CODE.GAD:" --> ":CODE.CIVILAIDANT:" TROP DE CHAMP DANS TNP : ":TNP
   ENRERREURSMIGR=REPLACE(ENRERREURSMIGR,-1;LIBERREUR)
END
PATRO=TRIM(EXTRACT(ENRGAD,2))
ENRCIVILAIDANT=REPLACE(ENRCIVILAIDANT,4;PATRO)
DDN=TRIM(EXTRACT(ENRGAD,8))
ENRCIVILAIDANT=REPLACE(ENRCIVILAIDANT,26;DDN)
LIEU.NAIS=TRIM(EXTRACT(ENRGAD,38))
ENRCIVILAIDANT=REPLACE(ENRCIVILAIDANT,27;LIEU.NAIS)
DEPT.NAIS=NIR15[6,2]
ENRCIVILAIDANT=REPLACE(ENRCIVILAIDANT,28;DEPT.NAIS)
IF DEPT.NAIS <> "99" THEN
   CODE.PAYSNAIS="000000"
   LIBELLE.PAYSNAIS="FRANCE"
END ELSE
   CODE.PAYSNAIS="99":NIR15[8,3]:"0"
   READ LIBELLE.PAYSNAIS FROM F.PAYS,CODE.PAYSNAIS ELSE
      LIBERREUR=CODE.GAD:" --> ":CODE.CIVILAIDANT:" PROBLEME LIBELLE PAYS POUR ":CODE.PAYSNAIS
      ENRERREURSMIGR=REPLACE(ENRERREURSMIGR,-1;LIBERREUR)
   END
END
ENRCIVILAIDANT=REPLACE(ENRCIVILAIDANT,29;CODE.PAYSNAIS)
ENRCIVILAIDANT=REPLACE(ENRCIVILAIDANT,30;LIBELLE.PAYSNAIS)
NATION=TRIM(EXTRACT(ENRGAD,10))
IF NATION="F" THEN
   ENRCIVILAIDANT=REPLACE(ENRCIVILAIDANT,19;"FRANCE")  
   ENRCIVILAIDANT=REPLACE(ENRCIVILAIDANT,20;"000000")
END ELSE
   LIBERREUR=CODE.GAD:" --> ":CODE.CIVILAIDANT:B1:TNP:" SALARIE ETRANGER, NATIONALITE A PRECISER "
   ENRERREURSMIGR=REPLACE(ENRERREURSMIGR,-1;LIBERREUR)
END
SITFAM=TRIM(EXTRACT(ENRGAD,11))
IF SITFAM <> VIDE THEN
  BEGIN CASE
     CASE SITFAM="M"
        SITFAM="1"
     CASE SITFAM="V"
        SITFAM="3"
     CASE SITFAM="D"
        SITFAM="4"
     CASE 1
        SITFAM="2"
  END CASE
END ELSE
   SITFAM="2"
END
ENRCIVILAIDANT=REPLACE(ENRCIVILAIDANT,21;SITFAM)
TEL=TRIM(EXTRACT(ENRGAD,17))
TEL=TEL[1,2]:TEL[4,2]:TEL[7,2]:TEL[10,2]:TEL[13,2]
IF LEN(TEL)=10 THEN
   TEL=TEL[1,2]:B1:TEL[3,2]:B1:TEL[5,2]:B1:TEL[7,2]:B1:TEL[9,2]
END ELSE
   TEL=VIDE
END
ENRCIVILAIDANT=REPLACE(ENRCIVILAIDANT,12;TEL)
IF PRESENCEGESTEMPS=1 THEN
 SECTEUR=EXTRACT(ENRGAD,37)
 IF SECTEUR="" THEN SECTEUR="01"
 SECTEUR="0":SECTEUR
 SOUSSECTEUR=EXTRACT(ENRGAD,41)
 IF SOUSSECTEUR="" THEN SOUSSECTEUR="01"
 SOUSSECTEUR=SECTEUR:SOUSSECTEUR
 QUARTIER=SOUSSECTEUR:"01"
END
ENRCIVILAIDANT=REPLACE(ENRCIVILAIDANT,31;SECTEUR)
ENRCIVILAIDANT=REPLACE(ENRCIVILAIDANT,32;SOUSSECTEUR)
ENRCIVILAIDANT=REPLACE(ENRCIVILAIDANT,33;QUARTIER)
ENRCIVILAIDANT=REPLACE(ENRCIVILAIDANT,34;LOCOMOTION)
ENRCIVILAIDANT=REPLACE(ENRCIVILAIDANT,35;ANTENNE)
ENRCIVILAIDANT=REPLACE(ENRCIVILAIDANT,38;"")
ENRCIVILAIDANT=REPLACE(ENRCIVILAIDANT,39;"")
ENRCIVILAIDANT=REPLACE(ENRCIVILAIDANT,40;"")
RETURN
*********
* TRAVAIL DES ADRESSES
*********
200 ADRESSE1=EXTRACT(ENRGAD,4)
ADRESSE2=EXTRACT(ENRGAD,5)
IF ADRESSE1 = VIDE OR ADRESSE1 = B1 THEN
   IF ADRESSE2 = VIDE OR ADRESSE2 = B1 THEN
      GOSUB 230
   END ELSE
      ADRESSE1=ADRESSE2
      ADRESSE2=VIDE
      GOSUB 210
      GOSUB 230
   END
END ELSE
   GOSUB 210
   IF ADRESSE2 <> VIDE AND ADRESSE2 <> B1 THEN GOSUB 220
   GOSUB 230
END
RETURN
*********
* ADRESSE1
**********
210 RANG=1
TROUVE="NON"
NUMVOIE=VIDE
COMPL.NUMVOIE=VIDE
NATUREVOIE=VIDE
FIN=LEN(ADRESSE1)
FOR I=1 TO FIN
   CAR=ADRESSE1[I,1]
   IF CAR="," OR CAR='"' OR CAR="." OR CAR=";" OR CAR=":" THEN
      ADRESSE1=ADRESSE1[1,I-1]:B1:ADRESSE1[I+1,FIN-I]
   END
NEXT I
ADRESSE1=TRIM(ADRESSE1)
CHAMP=FIELD(ADRESSE1,B1,RANG)
IF CHAMP MATCH "0N" THEN
   TROUVE="OUI"
   NUMVOIE=CHAMP
   ENRCIVILAIDANT=REPLACE(ENRCIVILAIDANT,5;NUMVOIE)
   RANG=RANG+1
   CHAMP=FIELD(ADRESSE1,B1,RANG)
   BEGIN CASE
         CASE CHAMP="BIS" OR CHAMP="B"
            COMPL.NUMVOIE="Bis"
         CASE CHAMP="TER" OR CHAMP="T"
            COMPL.NUMVOIE="Ter"
         CASE CHAMP="QUATER" OR CHAMP="QUA" OR CHAMP="Q"
            COMPL.NUMVOIE="Quater"
         CASE CHAMP="CINQ" OR CHAMP="C"
            COMPL.NUMVOIE="Cinq"
         CASE 1
            RANG=RANG-1
   END CASE
   ENRCIVILAIDANT=REPLACE(ENRCIVILAIDANT,6;COMPL.NUMVOIE)
   RANG=RANG+1
END
CHAMP=FIELD(ADRESSE1,B1,RANG)
BEGIN CASE
      CASE CHAMP="ALLEE" OR CHAMP="ALL" OR CHAMP="Allee"
         NATUREVOIE="ALL"
      CASE CHAMP="AV" OR CHAMP="AVENUE" OR CHAMP="Avenue"
         NATUREVOIE="AV"
      CASE CHAMP="BAT" OR CHAMP="BATIMENT" OR CHAMP="Bat"
         NATUREVOIE="BAT"
      CASE CHAMP="BVD" OR CHAMP="BLD" OR CHAMP="BOULEVARD" OR CHAMP="Boulevard"
         NATUREVOIE="BD"
      CASE CHAMP="CHE" OR CHAMP="CHEM" OR CHAMP="CHEMIN" OR CHAMP="Ch" OR CHAMP="Chemin"
         NATUREVOIE="CHE"
      CASE CHAMP="CRS" OR CHAMP="COURS" OR CHAMP="Cours"
         NATUREVOIE="CRS"
      CASE CHAMP="FG" OR CHAMP="FAUBOURG" OR CHAMP="Faubourg"
         NATUREVOIE="FG"
      CASE CHAMP="IMP" OR CHAMP="IMPASSE" OR CHAMP="Impasse"
         NATUREVOIE="IMP"
      CASE CHAMP="PAS" OR CHAMP="PASSAGE" OR CHAMP="Passage"
         NATUREVOIE="PAS"
      CASE CHAMP="PL" OR CHAMP="PLACE" OR CHAMP="Place"
         NATUREVOIE="PL"
      CASE CHAMP="QUAI" OR CHAMP="Q" OR CHAMP="Quai"
         NATUREVOIE="QU"
      CASE CHAMP="ROUTE" OR CHAMP="RTE" OR CHAMP="Rte" OR CHAMP="Route"
         NATUREVOIE="RTE"
      CASE CHAMP="RUE" OR CHAMP="R" OR CHAMP="rue" OR CHAMP="Rue"
         NATUREVOIE="RUE"
      CASE CHAMP="SQUARE" OR CHAMP="SQ" OR CHAMP="Square"
         NATUREVOIE="SQ"
      CASE 1
         RANG=RANG-1
END CASE
IF NATUREVOIE <> VIDE THEN
   TROUVE="OUI"
   ENRCIVILAIDANT=REPLACE(ENRCIVILAIDANT,7;NATUREVOIE)
END
IF TROUVE = "OUI" THEN
   POS=INDEX(ADRESSE1,B1,RANG)
   CHAMP=ADRESSE1[POS+1,LEN(ADRESSE1)-POS]
   ENRCIVILAIDANT=REPLACE(ENRCIVILAIDANT,8;CHAMP)
END ELSE
   IF ADRESSE2 = VIDE OR ADRESSE2 = B1 THEN
      ENRCIVILAIDANT=REPLACE(ENRCIVILAIDANT,9;ADRESSE1)
   END ELSE
      ENRCIVILAIDANT=REPLACE(ENRCIVILAIDANT,8;ADRESSE1)
   END
END
RETURN
**********
* ADRESSE2
**********
220 FIN=LEN(ADRESSE2)
FOR I=1 TO FIN
   CAR=ADRESSE2[I,1]
   IF CAR="," OR CAR='"' OR CAR="." OR CAR=";" OR CAR=":" THEN
      ADRESSE2=ADRESSE2[1,I-1]:B1:ADRESSE2[I+1,FIN-I]
   END
NEXT I
ADRESSE2=TRIM(ADRESSE2)
ENRCIVILAIDANT=REPLACE(ENRCIVILAIDANT,9;ADRESSE2)
RETURN
**********
* CP ET VILLE
**********
230 CP=TRIM(EXTRACT(ENRGAD,6))
ENRCIVILAIDANT=REPLACE(ENRCIVILAIDANT,10;CP)
VILLE=TRIM(EXTRACT(ENRGAD,7))
ENRCIVILAIDANT=REPLACE(ENRCIVILAIDANT,11;VILLE)
RETURN
**********
* DONNEES BANCAIRES
**********
400 ENRRIBAIDANT=VIDE
BENEF=TRIM(EXTRACT(ENRGAD,31))
IF LEN(BENEF)>24 THEN BENEF=BENEF[1,24]
IF BENEF#"" THEN ENRRIBAIDANT=REPLACE(ENRRIBAIDANT,1;BENEF)
LIBBANQUE=TRIM(EXTRACT(ENRGAD,32))
IF LIBBANQUE#"" THEN ENRRIBAIDANT=REPLACE(ENRRIBAIDANT,2;LIBBANQUE)
CODEBANQUE=TRIM(EXTRACT(ENRGAD,34))
IF CODEBANQUE#"" THEN ENRRIBAIDANT=REPLACE(ENRRIBAIDANT,3;CODEBANQUE)
CODEGUICHET=TRIM(EXTRACT(ENRGAD,35))
IF CODEGUICHET#"" THEN ENRRIBAIDANT=REPLACE(ENRRIBAIDANT,4;CODEGUICHET)
NOCPTE=TRIM(EXTRACT(ENRGAD,33))
CLERIB=NOCPTE[13,2]
IF CLERIB#"" THEN ENRRIBAIDANT=REPLACE(ENRRIBAIDANT,6;CLERIB)
NOCPTE=NOCPTE[1,11]
IF NOCPTE#"" THEN ENRRIBAIDANT=REPLACE(ENRRIBAIDANT,5;NOCPTE)
RETURN
**********
* CONTRAT DE TRAVAIL
**********
********** HISTORIQUE *********
500 RANG.GADEMPL=0
LOOP
   RANG.GADEMPL=RANG.GADEMPL+1
   EMPL=EXTRACT(ENRGADEMPLOI,2,RANG.GADEMPL)
   UNTIL EMPL=VIDE DO
      READ ENREMPLOIGAD FROM F.EMPLOIGAD,EMPL ELSE ENREMPLOIGAD=VIDE
      CIVILAIDE=EXTRACT(ENREMPLOIGAD,12)
      RANG.EMPLGAD=1
      LOOP
         GAD=EXTRACT(ENREMPLOIGAD,6,RANG.EMPLGAD)
         UNTIL GAD=CODE.GAD OR GAD=VIDE DO
            RANG.EMPLGAD=RANG.EMPLGAD+1
      REPEAT
      IF GAD#VIDE THEN
         RANG.SV=1
         LOOP
            ENTREE=EXTRACT(ENREMPLOIGAD,7,RANG.EMPLGAD,RANG.SV)
            UNTIL ENTREE=VIDE DO
               ATT.SORTIE="8"
               ATT.TYPE="9"
               GOSUB 550
               RANG.SV=RANG.SV+1
         REPEAT
      END
REPEAT
********** EN COURS *********
RANG.GADEMPL=0
RANG.SV=1
LOOP
   RANG.GADEMPL=RANG.GADEMPL+1
   EMPL=EXTRACT(ENRGADEMPLOI,1,RANG.GADEMPL)
   UNTIL EMPL=VIDE DO
      READ ENREMPLOIGAD FROM F.EMPLOIGAD,EMPL ELSE ENREMPLOIGAD=VIDE
      CIVILAIDE=EXTRACT(ENREMPLOIGAD,12)
      RANG.EMPLGAD=1
      LOOP
         GAD=EXTRACT(ENREMPLOIGAD,1,RANG.EMPLGAD)
         UNTIL GAD=CODE.GAD OR GAD=VIDE DO
            RANG.EMPLGAD=RANG.EMPLGAD+1
      REPEAT
      IF GAD#VIDE THEN
         ENTREE=EXTRACT(ENREMPLOIGAD,4,RANG.EMPLGAD)
         FORFAITNUIT=EXTRACT(ENREMPLOIGAD,3,RANG.EMPLGAD)
         IF FORFAITNUIT#0 THEN
          READ ENRBLOCNOTAIDE FROM F.BLOCNOTAIDE,CIVILAIDE THEN
           NULL
          END ELSE
           FORFAITNUIT=FORFAITNUIT "R26,"
           ENRBLOCNOTAIDE<1>="FORFAIT NUIT ":FORFAITNUIT
           WRITE ENRBLOCNOTAIDE ON F.BLOCNOTAIDE,CIVILAIDE
          END
         END
         ATT.SORTIE="11"
         ATT.TYPE="10"
         GOSUB 550  
      END
REPEAT
RETURN
**********
* DONNEES DU CONTRAT
**********
550 ENRCONTRAT=""
ENRCONTRAT=REPLACE(ENRCONTRAT,1;CCN)
ASSOCCONTRAT=CODEACTIVITE[1,3]
ENRCONTRAT=REPLACE(ENRCONTRAT,2;ASSOCCONTRAT)
EMPLETABCONTRAT=CIVILAIDE
*EMPLETABCONTRAT=EMPLETABCONTRAT "R0(%6)"
ENRCONTRAT=REPLACE(ENRCONTRAT,3;EMPLETABCONTRAT)
TYPE=EXTRACT(ENREMPLOIGAD,ATT.TYPE,RANG.EMPLGAD,RANG.SV)
IF TYPE=VIDE THEN TYPE="D"
ENRCONTRAT=REPLACE(ENRCONTRAT,4;TYPE)
IF TYPE="D" THEN
 ENRCONTRAT=REPLACE(ENRCONTRAT,62;"1 JOUR")
 ENRCONTRAT=REPLACE(ENRCONTRAT,9;"REMPLACEMENT")
END
TYPESALAIRE="H"
ENRCONTRAT=REPLACE(ENRCONTRAT,5;TYPESALAIRE)
FONCTION="P"
ENRCONTRAT=REPLACE(ENRCONTRAT,6;FONCTION)
ENRCONTRAT=REPLACE(ENRCONTRAT,7;ENTREE)
SORTIE=EXTRACT(ENREMPLOIGAD,ATT.SORTIE,RANG.EMPLGAD,RANG.SV)
ENRCONTRAT=REPLACE(ENRCONTRAT,8;SORTIE)
AVENANT="0"
ENRCONTRAT=REPLACE(ENRCONTRAT,12;"0")
ENRCONTRAT=REPLACE(ENRCONTRAT,14;AVENANT)
ENRCONTRAT=REPLACE(ENRCONTRAT,15;ENTREE)
QUALIF=EXTRACT(ENRGAD,18)
ENRCONTRAT=REPLACE(ENRCONTRAT,16;QUALIF)
********* PCS
ENRCONTRAT=REPLACE(ENRCONTRAT,17;CODEPCS)
ENRCONTRAT=REPLACE(ENRCONTRAT,18;CATEGORIE.PCS)
ENRCONTRAT=REPLACE(ENRCONTRAT,19;FONCTION.PCS)
********* GRILLES
IF ATT.SORTIE="11" THEN
   CODE.GR=EXTRACT(ENREMPLOIGAD,2,RANG.EMPLGAD)
   K=1
   LOOP
      CODE.GRILLES=GRILLES(K,1)
      UNTIL CODE.GRILLES=CODE.GR OR CODE.GRILLES=VIDE DO
      K=K+1
   REPEAT
   IF CODE.GRILLES=CODE.GR THEN
      TAUX.HORAIRE=GRILLES(K,2)
      NIVEAU=GRILLES(K,3)
      ENRCONTRAT=REPLACE(ENRCONTRAT,22;NIVEAU)      
      QUALIF=GRILLES(K,4)
      ENRCONTRAT=REPLACE(ENRCONTRAT,16;QUALIF)
      L=1
      LOOP
         TAUX.HORAIRECC=GRILLESCC(L,2)
         UNTIL TAUX.HORAIRECC=TAUX.HORAIRE*10 OR TAUX.HORAIRECC=VIDE DO
         L=L+1
      REPEAT
      IF TAUX.HORAIRE*10=TAUX.HORAIRECC THEN
         ENRCONTRAT=REPLACE(ENRCONTRAT,20;GRILLESCC(L,1))
         ENRCONTRAT=REPLACE(ENRCONTRAT,21;ENTREE)
         ENRCONTRAT=REPLACE(ENRCONTRAT,23;TAUX.HORAIRECC)
      END ELSE
         ENRCONTRAT=REPLACE(ENRCONTRAT,23;TAUX.HORAIRE*10)
      END
   END
END
DUREE="0"
ENRCONTRAT=REPLACE(ENRCONTRAT,24;DUREE)
FREQUENCE="3"
ENRCONTRAT=REPLACE(ENRCONTRAT,25;FREQUENCE)
READ ENREMPLOYEURS FROM F.EMPLOYEURS,EMPL ELSE ENREMPLOYEURS=""
READ ENRELTSPARTEMP FROM F.ELTSPARTEMP,CIVILAIDE ELSE ENRELTSPARTEMP=""
PROFILCONTRAT=EXTRACT(ENRELTSPARTEMP,12)
IF PROFILCONTRAT="" THEN PROFILCONTRAT="001"
ENRCONTRAT=REPLACE(ENRCONTRAT,26;PROFILCONTRAT)
ENRCONTRAT=REPLACE(ENRCONTRAT,27;REGLT)
ENRCONTRAT=REPLACE(ENRCONTRAT,28;PAIEMENT.SALAIRES)
DATEADH=EXTRACT(ENREMPLOYEURS,37)
DATERAD=EXTRACT(ENREMPLOYEURS,38)
CONTRATPREV=""
IF SORTIE="" THEN
 IF DATEADH#"" THEN CONTRATPREV=CONTRATPREV2
END ELSE
 IF DATEADH#"" THEN
  IF DATEADH<SORTIE THEN CONTRATPREV=CONTRATPREV2
 END
END
ENRCONTRAT=REPLACE(ENRCONTRAT,29;CONTRATPREV)
BASE.CALCUL=EXTRACT(ENRGAD,39)
IF BASE.CALCUL#"F" THEN BASE.CALCUL="B"
ENRCONTRAT=REPLACE(ENRCONTRAT,30;BASE.CALCUL)
ENRCONTRAT=REPLACE(ENRCONTRAT,31;CONGES.MOIS)                            
ENRCONTRAT=REPLACE(ENRCONTRAT,32;"0")
ENRCONTRAT=REPLACE(ENRCONTRAT,33;"0")
ENRCONTRAT=REPLACE(ENRCONTRAT,36;CODEACTIVITE)
FOR K=38 TO 48
   ENRCONTRAT=REPLACE(ENRCONTRAT,K;"0")
NEXT K
W_PaieTrait=ENRPERIODESPAIE<1>-1
IF W_PaieTrait[5,2]="00" THEN
   W_PaieTrait=W_PaieTrait[1,4]-1
   ENRCONTRAT=REPLACE(ENRCONTRAT,63;W_PaieTrait:"12")
END ELSE
   ENRCONTRAT=REPLACE(ENRCONTRAT,63;W_PaieTrait)
END

ENRCONTRAT=REPLACE(ENRCONTRAT,83;"0")
ENRCONTRAT=REPLACE(ENRCONTRAT,85;"0")
ENRCONTRAT=REPLACE(ENRCONTRAT,86;"0")
ENRCONTRAT=REPLACE(ENRCONTRAT,94;"0")
*************** CALCUL DES CONGES **************
IF CONGES.MOIS=0 THEN
   READ ENRCONGES FROM F.CONGES,EMPL:CODE.GAD ELSE GOTO 560
   CP1=EXTRACT(ENRCONGES,1)
   CP2=EXTRACT(ENRCONGES,2)
   CP3=EXTRACT(ENRCONGES,3)
   CP4=EXTRACT(ENRCONGES,4)
   CP5=EXTRACT(ENRCONGES,5)
   CP6=EXTRACT(ENRCONGES,6)
   CP7=EXTRACT(ENRCONGES,7)
   CP.CONSO=INT(CP1/100+1/2)
   ENRCONTRAT=REPLACE(ENRCONTRAT,38;CP.CONSO)
   IF CP1<>"0" AND CP2<>"0" THEN
      CP.RESTANT=INT(CP3/(CP2/CP1)+1/2)
   END ELSE
      CP.RESTANT="0"
   END
   ENRCONTRAT=REPLACE(ENRCONTRAT,39;CP.RESTANT)
   IF CP1<>"0" THEN
      CP.JOUROUVRABLE=INT(CP2/CP1*100+1/2)
   END ELSE
      CP.JOUROUVRABLE="0"
   END
   ENRCONTRAT=REPLACE(ENRCONTRAT,43;CP.JOUROUVRABLE)
   VALHEURES=INT(CP.JOUROUVRABLE*100/TAUX.HORAIRE+1/2)
   ENRCONTRAT=REPLACE(ENRCONTRAT,42;VALHEURES)
   ENRCONTRAT=REPLACE(ENRCONTRAT,44;CP5)
   ENRCONTRAT=REPLACE(ENRCONTRAT,46;CP6)
   CP.ENCOURSH=INT(CP6*100/TAUX.HORAIRE+1/2)
   ENRCONTRAT=REPLACE(ENRCONTRAT,45;CP.ENCOURSH)
   ENRCONTRAT=REPLACE(ENRCONTRAT,85;CP4)
   ENRCONTRAT=REPLACE(ENRCONTRAT,86;CP7)
   ENRCONTRAT=REPLACE(ENRCONTRAT,94;"1")
END
560 IF SORTIE#VIDE THEN
   IF TYPE="D" THEN MOTIF="31" ELSE MOTIF="60"
   DERNIERBULL=OCONV(SORTIE,"D4/")
   DERNIERBULLETIN=DERNIERBULL[7,4]:DERNIERBULL[4,2]
   ENRCONTRAT=REPLACE(ENRCONTRAT,49;MOTIF)
   ENRCONTRAT=REPLACE(ENRCONTRAT,58;DERNIERBULLETIN)
   NOTIFICATION=SORTIE
   ENRCONTRAT=REPLACE(ENRCONTRAT,50;NOTIFICATION)
   DERNIERJOURW=SORTIE
   ENRCONTRAT=REPLACE(ENRCONTRAT,51;DERNIERJOURW)
   IF TYPE="D" THEN
    ENRCONTRAT=REPLACE(ENRCONTRAT,52;"1") 
   END ELSE
    ENRCONTRAT=REPLACE(ENRCONTRAT,52;"0")
   END
END
ENRCONTRAT=REPLACE(ENRCONTRAT,67;"O")
ENRCONTRAT=REPLACE(ENRCONTRAT,68;"0")
WRITE ENRCONTRAT ON F.CONTRAT,CODE.CIVILAIDANT:CONTRAT
CONTRAT=CONTRAT+1
CONTRAT=CONTRAT "R0(%3)"
RETURN
