*****************************************************
*
* MOULINETTE DE TRANSFERT DES FIPAY 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
ENRVOC=""
ENRVOC=REPLACE(ENRVOC,1;"F")
CHEMIN="D:\TRANSFERT\":MODULE
ENRVOC=REPLACE(ENRVOC,2;CHEMIN:"\FIPAY")
ENRVOC=REPLACE(ENRVOC,3;CHEMIN:"\D_FIPAY")
WRITE ENRVOC ON F.VOC,"FIPAY"
ENRVOC=REPLACE(ENRVOC,2;CHEMIN:"\CUMULS")
ENRVOC=REPLACE(ENRVOC,3;CHEMIN:"\D_CUMULS")
WRITE ENRVOC ON F.VOC,"CUMULS"
ENRVOC=REPLACE(ENRVOC,2;CHEMIN:"\CONGES")
ENRVOC=REPLACE(ENRVOC,3;CHEMIN:"\D_CONGES")
WRITE ENRVOC ON F.VOC,"CONGES"
ENRVOC=REPLACE(ENRVOC,2;CHEMIN:"\GRILLES")
ENRVOC=REPLACE(ENRVOC,3;CHEMIN:"\D_GRILLES")
WRITE ENRVOC ON F.VOC,"GRILLES"
ENRVOC=REPLACE(ENRVOC,2;CHEMIN:"\MEDICAL")
ENRVOC=REPLACE(ENRVOC,3;CHEMIN:"\D_MEDICAL")
WRITE ENRVOC ON F.VOC,"MEDICAL"
ENRVOC=REPLACE(ENRVOC,2;CHEMIN:"\ETAT-PAIE")
ENRVOC=REPLACE(ENRVOC,3;CHEMIN:"\D_ETAT-PAIE")
WRITE ENRVOC ON F.VOC,"ETAT-PAIE"
OPEN "","PARAMASSO" TO F.PARAMASSO ELSE STOP
READ ENRPARAMASSO FROM F.PARAMASSO,"1" 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,6)
CONTRATPREV=EXTRACT(ENRPARAMASSO,7)
PAIEMENT.SALAIRES="1"
LOCOMOTION="4"
ANTENNE="001001"
PROFIL="001"
**********
* INITIALISATIONS
**********
VIDE=""
B1=" "
B2="  "
**********
* OUVERTURE DES FICHIERS
**********
OPEN "","FIPAY" TO F.FIPAY ELSE STOP
OPEN "","CUMULS" TO F.CUMULS ELSE STOP
OPEN "","GRILLES" TO F.GRILLES ELSE STOP
OPEN "","MEDICAL" TO F.MEDICAL ELSE STOP
OPEN "","CONGES" TO F.CONGES ELSE CONGES.MOIS="0"
OPEN "","TEMPAIDANT" TO F.TEMPAIDANT ELSE STOP
OPEN "","CIVILAIDANT" TO F.CIVILAIDANT ELSE STOP
OPEN "","RIBAIDANT" TO F.RIBAIDANT ELSE STOP
OPEN "","ABSENCESAIDANT" TO F.ABSENCESAIDANT ELSE STOP
OPEN "","CONTRAT" TO F.CONTRAT ELSE STOP
OPEN "","PAYS" TO F.PAYS ELSE STOP
OPEN "","PCS" TO F.PCS ELSE STOP
OPEN "","COMPTEUR" TO F.COMPTEUR ELSE STOP
OPEN "","GRILLESCC" TO F.GRILLESCC ELSE STOP
OPEN "","ERREURSMIGR" TO F.ERREURSMIGR ELSE STOP
OPEN "","PERIODESPAIE" TO F.PERIODESPAIE ELSE STOP
OPEN "","CONVENTIONCOL" TO F.CONVENTIONCOL ELSE STOP

OPEN "","ETAT-PAIE" TO F.ETATPAIE ELSE STOP
READ ENRETATPAIE FROM F.ETATPAIE,"1" ELSE STOP
W_CLOFIN="20":ENRETATPAIE<1>
IF W_CLOFIN[5,2] < 6 THEN
   W_CLODEB=W_CLOFIN[1,4]-1
   W_CLODEB=W_CLODEB:"06"
END ELSE
   W_CLODEB=W_CLOFIN[1,4]:"06"
END

READ ENRCONVENTIONCOL FROM F.CONVENTIONCOL,CCN ELSE STOP
PRIXPOINTCONVCOL=EXTRACT(ENRCONVENTIONCOL,8,1) * 10

**********
* RECUP DU COMPTEUR
**********
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
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 TRANSFIPAY")

READ ENRGRILLESCC FROM F.GRILLESCC,CCN:"002" ELSE ENRGRILLESCC=""
IF ENRGRILLESCC="" THEN
 GRILLECAFAD=CCN:"001"
END ELSE
 GRILLECAFAD=CCN:"002"
END
GRILLENONCAFAD=CCN:"001"
**********
* SELECTION DES FIPAY
**********
EXECUTE "TSELECT FIPAY"
10 READNEXT CODE.FIPAY ELSE
  ENRCOMPTEUR=REPLACE(ENRCOMPTEUR,8;COMPTEUR)
  WRITE ENRCOMPTEUR ON F.COMPTEUR,"999"
  DELETE F.VOC,"FIPAY"
  DELETE F.VOC,"CUMULS"
  DELETE F.VOC,"CONGES"
  DELETE F.VOC,"MEDICAL"
  WRITE ENRERREURSMIGR ON F.ERREURSMIGR,"1"
  STOP
END
READ ENRFIPAY FROM F.FIPAY,CODE.FIPAY ELSE GOTO 10
TNP=TRIM(EXTRACT(ENRFIPAY,1))
NIR.B1=TRIM(EXTRACT(ENRFIPAY,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(ENRFIPAY,30))
PASSAGE="0"
PASTEMPAIDANT="NON"
ACTIFAV="FAUX"
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
   ENRFIPAY=REPLACE(ENRFIPAY,60;CODE.CIVILAIDANT)
   WRITE ENRFIPAY ON F.FIPAY,CODE.FIPAY
   IF ACTIFAV = "FAUX" AND ENRFIPAY<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 ENRFIPAY<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
   ENRFIPAY=REPLACE(ENRFIPAY,60;CODE.CIVILAIDANT)
   WRITE ENRFIPAY ON F.FIPAY,CODE.FIPAY
      * 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

* VISITES MEDICALES
GOSUB 600

IF REGLT=3 THEN
   READ ENRRIBAIDANT FROM F.RIBAIDANT,CODE.CIVILAIDANT ELSE ENRRIBAIDANT=VIDE
   IF ENRRIBAIDANT=VIDE OR ENRRIBAIDANT<3>=VIDE THEN
      * BANQUE
      GOSUB 400
      ENRRIBAIDANT=REPLACE(ENRRIBAIDANT,8;"") 
      WRITE ENRRIBAIDANT ON F.RIBAIDANT,CODE.CIVILAIDANT      
   END ELSE
      IF ACTIFAV = "FAUX" AND ENRFIPAY<15> = "" THEN
         * BANQUE
         GOSUB 400
         ENRRIBAIDANT=REPLACE(ENRRIBAIDANT,8;"") 
         WRITE ENRRIBAIDANT ON F.RIBAIDANT,CODE.CIVILAIDANT
      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.FIPAY:" --> ":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.FIPAY:" --> ":CODE.CIVILAIDANT:" TROP DE CHAMP DANS TNP : ":TNP
   ENRERREURSMIGR=REPLACE(ENRERREURSMIGR,-1;LIBERREUR)
END
PATRO=TRIM(EXTRACT(ENRFIPAY,2))
ENRCIVILAIDANT=REPLACE(ENRCIVILAIDANT,4;PATRO)
DDN=TRIM(EXTRACT(ENRFIPAY,8))
ENRCIVILAIDANT=REPLACE(ENRCIVILAIDANT,26;DDN)
LIEU.NAIS=TRIM(EXTRACT(ENRFIPAY,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.FIPAY:" --> ":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(ENRFIPAY,10))
IF NATION="F" THEN
   ENRCIVILAIDANT=REPLACE(ENRCIVILAIDANT,19;"FRANCE")  
   ENRCIVILAIDANT=REPLACE(ENRCIVILAIDANT,20;"000000")
END ELSE
   LIBERREUR=CODE.FIPAY:" --> ":CODE.CIVILAIDANT:B1:TNP:" SALARIE ETRANGER, NATIONALITE A PRECISER "
   ENRERREURSMIGR=REPLACE(ENRERREURSMIGR,-1;LIBERREUR)
END
SITFAM=TRIM(EXTRACT(ENRFIPAY,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(ENRFIPAY,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(ENRFIPAY,52)
 IF SECTEUR="" THEN SECTEUR="01"
 SECTEUR="0":SECTEUR
 SOUSSECTEUR=EXTRACT(ENRFIPAY,53)
 IF SOUSSECTEUR="" THEN SOUSSECTEUR="01"
 SOUSSECTEUR=SECTEUR:SOUSSECTEUR
 QUARTIER=SOUSSECTEUR:"01"
END ELSE
 CODANAL=EXTRACT(ENRFIPAY,3)
 D=1
 LOOP
  CODANALANC=EXTRACT(ENRPARAMASSO,1,D)
  UNTIL CODANALANC=CODANAL OR CODANALANC="" DO
   D=D+1
 REPEAT
 IF CODANALANC=CODANAL THEN
  SECTEUR=EXTRACT(ENRPARAMASSO,2,D)
  SOUSSECTEUR=SECTEUR:"01"
  QUARTIER=SOUSSECTEUR:"01"
 END ELSE
  LIBERREUR=CODE.FIPAY:" --> ":CODE.CIVILAIDANT:B1:TNP:" SECTORISATION A PRECISER "
  ENRERREURSMIGR=REPLACE(ENRERREURSMIGR,-1;LIBERREUR)
  SECTEUR="001"
  SOUSSECTEUR="00101"
  QUARTIER="0010101"
 END
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(ENRFIPAY,4)
ADRESSE2=EXTRACT(ENRFIPAY,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(ENRFIPAY,6))
ENRCIVILAIDANT=REPLACE(ENRCIVILAIDANT,10;CP)
VILLE=TRIM(EXTRACT(ENRFIPAY,7))
ENRCIVILAIDANT=REPLACE(ENRCIVILAIDANT,11;VILLE)
RETURN
**********
* DONNEES BANCAIRES
**********
400 ENRRIBAIDANT=VIDE
BENEF=TRIM(EXTRACT(ENRFIPAY,31))
IF LEN(BENEF)>24 THEN BENEF=BENEF[1,24]
ENRRIBAIDANT=REPLACE(ENRRIBAIDANT,1;BENEF)
LIBBANQUE=TRIM(EXTRACT(ENRFIPAY,32))
ENRRIBAIDANT=REPLACE(ENRRIBAIDANT,2;LIBBANQUE)
CODEBANQUE=TRIM(EXTRACT(ENRFIPAY,34))
ENRRIBAIDANT=REPLACE(ENRRIBAIDANT,3;CODEBANQUE)
CODEGUICHET=TRIM(EXTRACT(ENRFIPAY,35))
ENRRIBAIDANT=REPLACE(ENRRIBAIDANT,4;CODEGUICHET)
NOCPTE=TRIM(EXTRACT(ENRFIPAY,33))
CLERIB=NOCPTE[13,2]
ENRRIBAIDANT=REPLACE(ENRRIBAIDANT,6;CLERIB)
NOCPTE=NOCPTE[1,11]
ENRRIBAIDANT=REPLACE(ENRRIBAIDANT,5;NOCPTE)
RETURN
**********
* CONTRAT DE TRAVAIL
**********
500 RANG=0
LOOP
   RANG=RANG+1
   ENTREE=EXTRACT(ENRFIPAY,49,RANG)
   UNTIL ENTREE=VIDE DO
   ENRCONTRAT=VIDE
   ENRCONTRAT=REPLACE(ENRCONTRAT,1;CCN)
   ASSOCCONTRAT=CODEACTIVITE[1,3]
   ENRCONTRAT=REPLACE(ENRCONTRAT,2;ASSOCCONTRAT)
   EMPLETABCONTRAT=ASSOCCONTRAT:"001"
   ENRCONTRAT=REPLACE(ENRCONTRAT,3;EMPLETABCONTRAT)
   TYPE=EXTRACT(ENRFIPAY,50,RANG)
   IF TYPE[1,1] = "I" THEN TYPE = "I" ELSE TYPE = "D"
   ENRCONTRAT=REPLACE(ENRCONTRAT,4;TYPE)
   IF TYPE="D" THEN
    ENRCONTRAT=REPLACE(ENRCONTRAT,62;"1 JOUR")
    ENRCONTRAT=REPLACE(ENRCONTRAT,9;"REMPLACEMENT")
   END
   CODE.ANAL=EXTRACT(ENRFIPAY,3)
   IF CODE.ANAL[6,1]="1" THEN
      TYPESALAIRE="M"
      FONCTION="A"
   END ELSE
      TYPESALAIRE="H"
      FONCTION="P"
   END
   ENRCONTRAT=REPLACE(ENRCONTRAT,5;TYPESALAIRE)
   ENRCONTRAT=REPLACE(ENRCONTRAT,6;FONCTION)
   ENRCONTRAT=REPLACE(ENRCONTRAT,7;ENTREE)
   SORTIE=EXTRACT(ENRFIPAY,51,RANG)
   ENRCONTRAT=REPLACE(ENRCONTRAT,8;SORTIE)
   NATURE=EXTRACT(ENRFIPAY,43)
   BEGIN CASE 
      CASE NATURE="S"
         NATURE="CES"
      CASE NATURE="C"
         NATURE="CEC"
      CASE NATURE="Q"
         NATURE="CQ"
      CASE NATURE="R"
         NATURE="CRE"
      CASE NATURE="E"
         NATURE="CIE"
      CASE 1
         NATURE=VIDE
   END CASE
   ENRCONTRAT=REPLACE(ENRCONTRAT,12;"0")
   ENRCONTRAT=REPLACE(ENRCONTRAT,13;NATURE)
   AVENANT="0"
   ENRCONTRAT=REPLACE(ENRCONTRAT,14;AVENANT)
   EFFET=ENTREE
   ENRCONTRAT=REPLACE(ENRCONTRAT,15;EFFET)
   QUALIF=EXTRACT(ENRFIPAY,18)
   ENRCONTRAT=REPLACE(ENRCONTRAT,16;QUALIF)
   ********* PCS
   CODEPCS=EXTRACT(ENRFIPAY,46)
   IF CODEPCS<>VIDE THEN
      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)
      ENRCONTRAT=REPLACE(ENRCONTRAT,17;CODEPCS)
      ENRCONTRAT=REPLACE(ENRCONTRAT,18;CATEGORIE.PCS)
      ENRCONTRAT=REPLACE(ENRCONTRAT,19;FONCTION.PCS)
   END
   IF CODE.ANAL[6,1]="0" THEN 
      IF EXTRACT(ENRFIPAY,47)="O" THEN GRILLE=GRILLECAFAD ELSE GRILLE=GRILLENONCAFAD
   END ELSE
      IF PASSAGE="0" THEN
         LIBERREUR=CODE.FIPAY:" --> ":CODE.CIVILAIDANT:B1:TNP:" GRILLE A RENSEIGNER"
         ENRERREURSMIGR=REPLACE(ENRERREURSMIGR,-1;LIBERREUR)
         GRILLE=""
         DEPART=""
         PASSAGE="1"
      END
   END
   ECHELON=EXTRACT(ENRFIPAY,20)
   COEFF=EXTRACT(ENRFIPAY,21)
   DUREE=EXTRACT(ENRFIPAY,23)
   IF DUREE="" THEN DUREE=0
   TAUXHORAIRE=0
   IF CODE.ANAL[6,1]="1" AND ECHELON#"100" THEN
    READ ENRGRILLES FROM F.GRILLES,ECHELON ELSE ENRGRILLES=""
    MONTANTSAL=EXTRACT(ENRGRILLES,1)
    IF MONTANTSAL#"" THEN
     IF DUREE#0 THEN TAUXHORAIRE=INT(MONTANTSAL*1000/DUREE+1/2)
    END
   END
   IF ECHELON="100" THEN 
      TAUXHORAIRE=INT(PRIXPOINTCONVCOL * COEFF / 169 + 1/2)
   END
   ENRCONTRAT=REPLACE(ENRCONTRAT,20;GRILLE)
   DEPART=EXTRACT(ENRFIPAY,16)
   ENRCONTRAT=REPLACE(ENRCONTRAT,21;DEPART)
   ENRCONTRAT=REPLACE(ENRCONTRAT,22;COEFF)
   ENRCONTRAT=REPLACE(ENRCONTRAT,23;TAUXHORAIRE)
   ENRCONTRAT=REPLACE(ENRCONTRAT,24;DUREE)
   FREQUENCE="3"
   ENRCONTRAT=REPLACE(ENRCONTRAT,25;FREQUENCE)
   STATUT=EXTRACT(ENRFIPAY,28)
   D=1
   LOOP
    STATUTANC=EXTRACT(ENRPARAMASSO,3,D)
    UNTIL STATUTANC=STATUT OR STATUTANC="" DO
     D=D+1
   REPEAT
   IF ENRCONTRAT<4>="D" AND TYPESALAIRE="H" AND FONCTION="P" AND NATURE=VIDE THEN
    ENRCONTRAT=REPLACE(ENRCONTRAT,26;"014")
   END ELSE
    IF STATUTANC=STATUT THEN
     PROFIL1CONTRAT=EXTRACT(ENRPARAMASSO,4,D)
     PROFIL2CONTRAT=EXTRACT(ENRPARAMASSO,5,D)
     ENRCONTRAT=REPLACE(ENRCONTRAT,26;PROFIL1CONTRAT)
     ENRCONTRAT=REPLACE(ENRCONTRAT,64;PROFIL2CONTRAT)
    END ELSE
     LIBERREUR=CODE.FIPAY:" --> ":CODE.CIVILAIDANT:B1:TNP:" PROFIL DE PAIE DANS CONTRAT A PRECISER "
     ENRERREURSMIGR=REPLACE(ENRERREURSMIGR,-1;LIBERREUR)
     ENRCONTRAT=REPLACE(ENRCONTRAT,26;PROFIL)
    END
   END
   IF REGLT="3" THEN
    ENRCONTRAT=REPLACE(ENRCONTRAT,27;"1")
   END ELSE
    ENRCONTRAT=REPLACE(ENRCONTRAT,27;"2")
   END
   ENRCONTRAT=REPLACE(ENRCONTRAT,28;PAIEMENT.SALAIRES)
   ENRCONTRAT=REPLACE(ENRCONTRAT,29;CONTRATPREV)
   BASE.CALCUL="B"
   ENRCONTRAT=REPLACE(ENRCONTRAT,30;BASE.CALCUL)                           
   ENRCONTRAT=REPLACE(ENRCONTRAT,32;"0")  
   ENRCONTRAT=REPLACE(ENRCONTRAT,33;"0")  
   ENRCONTRAT=REPLACE(ENRCONTRAT,36;CODEACTIVITE)
   IF CODE.ANAL[6,1]="1" THEN ENRCONTRAT=REPLACE(ENRCONTRAT,37;"10000")
   FOR K=38 TO 48
      ENRCONTRAT=REPLACE(ENRCONTRAT,K;"0")
   NEXT K
   ENRCONTRAT=REPLACE(ENRCONTRAT,63;W_CLOFIN)
   ENRCONTRAT=REPLACE(ENRCONTRAT,83;"0")
   *************** CALCUL DES CONGES (CONTRAT EN COURS)
   CONGES.MOIS1=CONGES.MOIS

      READ ENRCONGES FROM F.CONGES,CODE.FIPAY ELSE
         CONGES.MOIS1="1"
         GOTO 560
      END
      CP1=EXTRACT(ENRCONGES,1)
      CP2=EXTRACT(ENRCONGES,2)
      CP3=EXTRACT(ENRCONGES,3)
      CP5=EXTRACT(ENRCONGES,5)
      CP6=EXTRACT(ENRCONGES,6)
      CP7=EXTRACT(ENRCONGES,7)
      CP8=EXTRACT(ENRCONGES,8)
      CP9=EXTRACT(ENRCONGES,9)
      CP.CONSO=INT(CP2/100+1/2)
      ENRCONTRAT=REPLACE(ENRCONTRAT,38;CP.CONSO)
      IF CP1<>"0" AND CP2<>"0" THEN
         CP.RESTANT=INT(CP3/(CP1/CP2)+1/2)
      END ELSE
         CP.RESTANT="0"
      END
      ENRCONTRAT=REPLACE(ENRCONTRAT,39;CP.RESTANT)
      IF CP2<>"0" THEN
         CP.JOUROUVRABLEH=INT((CP1/CP2)*100+1/2)
      END ELSE
         CP.JOUROUVRABLEH="0"
      END
      ENRCONTRAT=REPLACE(ENRCONTRAT,42;CP.JOUROUVRABLEH)
      CP.ENCOURSJOURS=CP5
      ENRCONTRAT=REPLACE(ENRCONTRAT,43;INT(CP.JOUROUVRABLEH * TAUXHORAIRE / 1000 + 1/2))
      ENRCONTRAT=REPLACE(ENRCONTRAT,44;CP.ENCOURSJOURS)
      CP.ENCOURSHEURES=INT(CP6*10/100+1/2)
      ENRCONTRAT=REPLACE(ENRCONTRAT,45;CP.ENCOURSHEURES)

      W_TOTCLO=0
      FOR iClo=W_CLODEB TO W_CLOFIN
          IF iClo[5,2]=13 THEN
             iClo=iClo[1,4]+1
             iClo=iClo:"01"
          END
          W_DateIClo=iClo[3,4]
          READ ENRCUMULS FROM F.CUMULS,CODE.FIPAY:W_DateIClo ELSE ENRCUMULS = ""
          W_TOTCLO=W_TOTCLO+ENRCUMULS<71>
      NEXT iClo

      W_TOTCLO=INT(W_TOTCLO * 10 / 100 + 1/2)
      ENRCONTRAT=REPLACE(ENRCONTRAT,46;W_TOTCLO)

      CP.ANCACQUIS=INT(CP9/100+1/2)
      ENRCONTRAT=REPLACE(ENRCONTRAT,47;CP.ANCACQUIS) 
      IF CP7<>"0" THEN
         CP.ANCRESTANT=INT(CP8*(CP9/CP7)+1/2)
      END ELSE
         CP.ANCRESTANT="0"
      END
      ENRCONTRAT=REPLACE(ENRCONTRAT,48;CP.ANCRESTANT)
560 IF SORTIE#VIDE THEN
      MOTIF=EXTRACT(ENRFIPAY,55,RANG)
      IF MOTIF=VIDE THEN
         MOTIF="60"
      END ELSE
         IF TYPE="D" THEN
            MOTIF="31"
         END ELSE
            POS=INDEX(MOTIF,"LICENCIEMENT",1)
            IF POS<>"0" THEN
               MOTIF="20"
            END ELSE
               POS=INDEX(MOTIF,"RETRAITE",1)
               IF POS<>"0" THEN
                  MOTIF="39"
               END ELSE
                  POS=INDEX(MOTIF,"DEMISSION",1)
                  IF POS<>"0" THEN MOTIF="59" ELSE MOTIF="60"
               END
            END
         END
      END
      ENRCONTRAT=REPLACE(ENRCONTRAT,49;MOTIF)
      NOTIFICATION=SORTIE
      ENRCONTRAT=REPLACE(ENRCONTRAT,50;NOTIFICATION)
      DERNIERJOURW=SORTIE
      ENRCONTRAT=REPLACE(ENRCONTRAT,51;DERNIERJOURW)
      ENRCONTRAT=REPLACE(ENRCONTRAT,52;"1")
      DERNIERBULL=OCONV(SORTIE,"D4/")
      DERNIERBULLETIN=DERNIERBULL[7,4]:DERNIERBULL[4,2]
      ENRCONTRAT=REPLACE(ENRCONTRAT,58;DERNIERBULLETIN)      
   END
   ENRCONTRAT=REPLACE(ENRCONTRAT,31;CONGES.MOIS1)
   ENRCONTRAT=REPLACE(ENRCONTRAT,68;"0")
   ENRCONTRAT=REPLACE(ENRCONTRAT,82;"242")
   ENRCONTRAT=REPLACE(ENRCONTRAT,94;"0")
   WRITE ENRCONTRAT ON F.CONTRAT,CODE.CIVILAIDANT:CONTRAT
   CONTRAT=CONTRAT+1
   CONTRAT=CONTRAT "R0(%3)"
REPEAT
RETURN

**********
* GENERATION DES VISITES MEDICALES DANS ABSENCESAIDANT
**********
600 READ ENRMEDICAL FROM F.MEDICAL,CODE.FIPAY ELSE RETURN
DATEVM=EXTRACT(ENRMEDICAL,1)
IF DATEVM#"" THEN
 MOTIFVM=EXTRACT(ENRMEDICAL,2)
 GOSUB 700
END
D=1
LOOP
 DATEVM=EXTRACT(ENRMEDICAL,5,D)
 UNTIL DATEVM="" DO
  MOTIFVM=EXTRACT(ENRMEDICAL,4,D)
  GOSUB 700
  D=D+1
REPEAT
RETURN

**********
* MISE EN FORME ARTICLE DANS ABSENCESAIDANT
**********
700 ENRABSENCESAIDANT=""
ENRABSENCESAIDANT=REPLACE(ENRABSENCESAIDANT,2;DATEVM)
ENRABSENCESAIDANT=REPLACE(ENRABSENCESAIDANT,4;"09")
ENRABSENCESAIDANT=REPLACE(ENRABSENCESAIDANT,5;"00")
ENRABSENCESAIDANT=REPLACE(ENRABSENCESAIDANT,6;"12")
ENRABSENCESAIDANT=REPLACE(ENRABSENCESAIDANT,7;DATEVM+365)
ENRABSENCESAIDANT=REPLACE(ENRABSENCESAIDANT,8;CODEACTIVITE[1,3])
ENRABSENCESAIDANT=REPLACE(ENRABSENCESAIDANT,19;"1")
BEGIN CASE
 CASE MOTIFVM="E"
  MOTIFVM1="18"
 CASE MOTIFVM="R"
  MOTIFVM1="20"
 CASE MOTIFVM="C"
  MOTIFVM1="19"
 CASE 1
  MOTIFVM1="21"
END CASE
CLEABSENCESAIDANT=CODE.CIVILAIDANT:MOTIFVM1:DATEVM
WRITE ENRABSENCESAIDANT ON F.ABSENCESAIDANT,CLEABSENCESAIDANT
RETURN
