*********************************************************
*                                                    	*
*   Gnration des fichiers RESPONSABLE, SECTEUR,	*
*   SOUSSECTEUR, QUARTIER				*
*							*
* SEPTEMBRE 1999			Jrme RAVEAU   *
*							*
*********************************************************

	*********************************************************
	* INITIALISATION DES VARIABLES				*
	*********************************************************
	W_GESTEMPS=0
	W_SECTEURF=0

	* RECUPERATION DES PARAMETRES
	GOSUB 700

	* CREATION VOC
	GOSUB 800

	* VARIABLES
	W_REQVIDE="FAUX"
	W_VALSECT="01"
	W_NBSOUSSECT=0
	VIDE=""
	B1=" "
	ENR_RESPONSABLE=""
	ENR_SECTEUR=""
	ENR_SOUSSECTEUR=""
	ENR_QUARTIER=""
	ENR_RESP=""
	ENR_SECTEURANCIEN=""

	*********************************************************
	* OUVERTURE FICHIERS					*
	*********************************************************
	OPEN "","RESPONSABLE" TO F.RESPONSABLE ELSE STOP
	OPEN "","SECTEUR" TO F.SECTEUR ELSE STOP
	OPEN "","SOUSSECTEUR" TO F.SOUSSECTEUR ELSE STOP
	OPEN "","QUARTIER" TO F.QUARTIER ELSE STOP

	* GESTEMPS EXISTE
	IF W_GESTEMPS = 1 THEN
		OPEN "","RESP" TO F.RESP ELSE STOP
		OPEN "","SECTEURT" TO F.SECTEURANCIEN ELSE STOP
	END ELSE
		IF W_SECTEURF = 1 THEN
			OPEN "","SECTEURF" TO F.SECTEURANCIEN ELSE STOP

		END ELSE
			OPEN "","SECTEURG" TO F.SECTEURANCIEN ELSE STOP
		END
	END

	*********************************************************
	* RECAPITULATIF DES GOSUB				*
	*********************************************************
	* 100  --> CREATION ADMINISTRATIF
	* 200  --> EXECUTION REQUETE
	* 300  --> CREATION SECTEUR
	* 400  --> CREATION SOUSSECTEUR
	* 500  --> CREATION RESPONSABLE
	* 600  --> CONVERSION ADRESSE
	* 700  --> RECUPERATION DES PARAMETRES
	* 800  --> CREATION VOC
	* 900  --> SUPPRESSION VOC

	*********************************************************
	* EXECUTION REQUETE					*
	*********************************************************	
	GOSUB 200

	*********************************************************
	* PARCOURS DE LA REQUETE				*
	*********************************************************	
	LOOP
		READNEXT CLESECTEUR ELSE
			W_REQVIDE="VRAI"
		END
		UNTIL W_REQVIDE="VRAI" DO

		*********************************************************
		* Creation d'un secteur					*
		*********************************************************	
		GOSUB 300
			
		*********************************************************
		* Creation de sous secteur et quartier			*
		*********************************************************
		IF W_GESTEMPS = 1 THEN
			W_NBSOUSSECT=DCOUNT(ENR_SECTEURANCIEN<2>,CHAR(253))
			FOR I = 1 TO W_NBSOUSSECT
				GOSUB 400
			NEXT I
		END ELSE
			GOSUB 400
		END

		*********************************************************
		* Creation d'un responsable cas pas gestemps		*
		*********************************************************	
		IF W_GESTEMPS = 0 THEN 
			ENR_RESPONSABLE=""
			ENR_RESPONSABLE=REPLACE(ENR_RESPONSABLE,1;ENR_SECTEURANCIEN<2>)
			* CONVERSION ADRESSE
			GOSUB 600
			ENR_RESPONSABLE=REPLACE(ENR_RESPONSABLE,11;ENR_SECTEURANCIEN<7>)
			WRITE ENR_RESPONSABLE ON F.RESPONSABLE,"0":CLESECTEUR
		END

	REPEAT	
	
	*********************************************************
	* Creation d'un responsable cas gestemps		*
	*********************************************************	
	IF W_GESTEMPS = 1 THEN 	
		GOSUB 500	
	END

	*********************************************************
	* CREATION ADMINISTRATIF				*
	*********************************************************	
	GOSUB 100
	
	*********************************************************
	* SUPPRESSION VOC					*
	*********************************************************	
 	GOSUB 900

	STOP



*********************************************************
* CREATION ADMINISTRATIF				*
*********************************************************
100 *
	ENR_SECTEUR=""
	ENR_SOUSSECTEUR=""
	ENR_QUARTIER=""

	ENR_SECTEUR=REPLACE(ENR_SECTEUR,1;"ADMINISTRATIFS")
	ENR_SOUSSECTEUR=REPLACE(ENR_SOUSSECTEUR,1;"ADMINISTRATIFS")
	ENR_QUARTIER=REPLACE(ENR_QUARTIER,1;"ADMINISTRATIFS")
	ENR_QUARTIER=REPLACE(ENR_QUARTIER,2;"001001")

	WRITE ENR_SECTEUR ON F.SECTEUR,"999"
	WRITE ENR_SOUSSECTEUR ON F.SOUSSECTEUR,"99901"
	WRITE ENR_QUARTIER ON F.QUARTIER,"9990101"
RETURN


*********************************************************
* EXECUTION REQUETE					*
*********************************************************
200 *
	IF W_GESTEMPS = 1 THEN
		EXECUTE 'TSELECT SECTEURT'
	END ELSE
		IF W_SECTEURF = 1 THEN
			EXECUTE 'TSELECT SECTEURF'
		END ELSE
			EXECUTE 'TSELECT SECTEURG'	
		END
	END
RETURN


*********************************************************
* CREATION SECTEUR					*
*********************************************************
300 *
	ENR_SECTEUR=""

	READ ENR_SECTEURANCIEN FROM F.SECTEURANCIEN,CLESECTEUR ELSE STOP

	ENR_SECTEUR=REPLACE(ENR_SECTEUR,1;ENR_SECTEURANCIEN<1>)
	WRITE ENR_SECTEUR ON F.SECTEUR,"0":CLESECTEUR
RETURN


*********************************************************
* CREATION SOUSSECTEUR					*
*********************************************************
400 *
	ENR_SOUSSECTEUR=""
	ENR_QUARTIER=""

	IF W_GESTEMPS=0 THEN
		ENR_SOUSSECTEUR=REPLACE(ENR_SOUSSECTEUR,1;ENR_SECTEURANCIEN<1>)
		ENR_QUARTIER=REPLACE(ENR_QUARTIER,1;ENR_SECTEURANCIEN<1>)
	        ENR_QUARTIER=REPLACE(ENR_QUARTIER,2;"001001")
		W_VALSECT="01"

	END ELSE
		ENR_SOUSSECTEUR=REPLACE(ENR_SOUSSECTEUR,1;ENR_SECTEURANCIEN<3,I>)
		ENR_QUARTIER=REPLACE(ENR_QUARTIER,1;ENR_SECTEURANCIEN<3,I>)
	        ENR_QUARTIER=REPLACE(ENR_QUARTIER,2;"001001")

		IF I<10 THEN
			W_VALSECT="0":I
		END ELSE
			W_VALSECT=I
		END	
	END

	WRITE ENR_SOUSSECTEUR ON F.SOUSSECTEUR,"0":CLESECTEUR:W_VALSECT
	WRITE ENR_QUARTIER ON F.QUARTIER,"0":CLESECTEUR:W_VALSECT:"01"
RETURN


*********************************************************
* CREATION RESPONSABLE					*
*********************************************************
500 *
	W_REQVIDE="FAUX"

	EXECUTE 'TSELECT RESP'
	
	LOOP
		READNEXT CLERESPONSABLE ELSE
			W_REQVIDE="VRAI"
		END
		UNTIL W_REQVIDE="VRAI" DO

		READ ENR_RESP FROM F.RESP,CLERESPONSABLE ELSE STOP

		ENR_RESPONSABLE=""

                IF ENR_RESP<2>="" THEN
		   ENR_RESPONSABLE=REPLACE(ENR_RESPONSABLE,1;ENR_RESP<1>)
                END ELSE
  		   ENR_RESPONSABLE=REPLACE(ENR_RESPONSABLE,1;ENR_RESP<2>)
                END
		* CONVERSION ADRESSE
		GOSUB 600
		ENR_RESPONSABLE=REPLACE(ENR_RESPONSABLE,11;ENR_RESP<7>)

		WRITE ENR_RESPONSABLE ON F.RESPONSABLE,"0":CLERESPONSABLE

	REPEAT
RETURN


*********
* TRAVAIL DES ADRESSES
*********
600 *

IF W_GESTEMPS = 1 THEN
	ADRESSE1=EXTRACT(ENR_RESP,3)
	ADRESSE2=EXTRACT(ENR_RESP,4)
END ELSE
	ADRESSE1=EXTRACT(ENR_SECTEURANCIEN,3)
	ADRESSE2=EXTRACT(ENR_SECTEURANCIEN,4)
END

IF ADRESSE1 = VIDE OR ADRESSE1 = B1 THEN
   IF ADRESSE2 = VIDE OR ADRESSE2 = B1 THEN
      GOSUB 630
   END ELSE
      ADRESSE1=ADRESSE2
      ADRESSE2=VIDE
      GOSUB 610
      GOSUB 630
   END
END ELSE
   GOSUB 610
   IF ADRESSE2 <> VIDE OR ADRESSE2 <> B1 THEN GOSUB 620
   GOSUB 630
END
RETURN

*********
* ADRESSE1
**********
610 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
   ENR_RESPONSABLE=REPLACE(ENR_RESPONSABLE,2;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
   ENR_RESPONSABLE=REPLACE(ENR_RESPONSABLE,3;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 CHAMP="MAIRIE" OR CHAMP="Mairie" OR CHAMP="mairie" OR CHAMP="HOTEL" OR CHAMP="Hotel" OR CHAMP="hotel"
	 NATUREVOIE=" "
      CASE 1
         RANG=RANG-1
END CASE
IF NATUREVOIE <> VIDE THEN
   TROUVE="OUI"
   ENR_RESPONSABLE=REPLACE(ENR_RESPONSABLE,4;NATUREVOIE)
END
IF TROUVE = "OUI" THEN
   POS=INDEX(ADRESSE1,B1,RANG)
   IF CHAMP="HOTEL" OR CHAMP="Hotel" OR CHAMP="hotel" THEN
      CHAMP=ADRESSE1[LEN(ADRESSE1)]
   END ELSE
      CHAMP=ADRESSE1[POS+1,LEN(ADRESSE1)-POS]
   END
   
   ENR_RESPONSABLE=REPLACE(ENR_RESPONSABLE,5;CHAMP)
END ELSE
   IF ADRESSE2 = VIDE OR ADRESSE2 = B1 THEN
      ENR_RESPONSABLE=REPLACE(ENR_RESPONSABLE,6;ADRESSE1)
   END ELSE
      ENR_RESPONSABLE=REPLACE(ENR_RESPONSABLE,5;ADRESSE1)
   END
END
RETURN

**********
* ADRESSE2
**********
620 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)
ENR_RESPONSABLE=REPLACE(ENR_RESPONSABLE,6;ADRESSE2)
RETURN

**********
* CP ET VILLE
**********
630 *
IF W_GESTEMPS = 1 THEN
	CP=TRIM(EXTRACT(ENR_RESP,5))
	VILLE=TRIM(EXTRACT(ENR_RESP,6))
END ELSE
	CP=TRIM(EXTRACT(ENR_SECTEURANCIEN,5))
	VILLE=TRIM(EXTRACT(ENR_SECTEURANCIEN,6))
END

ENR_RESPONSABLE=REPLACE(ENR_RESPONSABLE,7;CP)
ENR_RESPONSABLE=REPLACE(ENR_RESPONSABLE,8;VILLE)

RETURN


*********************************************************
* RECUPERATION DES PARAMETRES				*
*********************************************************
700 *
	W_NBVALEUR=0
	ENR_PARAMASSO=""

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

	READ ENR_PARAMASSO FROM F.PARAMASSO,"1" ELSE STOP

	W_NBVALEUR=DCOUNT(ENR_PARAMASSO<1>,CHAR(253))	

	FOR I = 1 TO W_NBVALEUR

		IF ENR_PARAMASSO<1,I> = "GESTEMPS" THEN
			W_GESTEMPS=1
		END

		IF ENR_PARAMASSO<1,I> = "FACTURE" THEN
			W_SECTEURF=1
		END

	NEXT I

RETURN


*********************************************************
* CREATION VOC						*
*********************************************************
800 *
	W_SECTEUR=""
	OPEN "","VOC" TO F.VOC ELSE STOP
	
	IF W_GESTEMPS = 1 THEN
		W_SECTEUR ="SECTEURT"
                W_MODULE="GESTEMPS"
		ENR_VOC=""
		ENR_VOC=REPLACE(ENR_VOC,1;"F")
		ENR_VOC=REPLACE(ENR_VOC,2;"D:\TRANSFERT\":W_MODULE:"\RESP")
		ENR_VOC=REPLACE(ENR_VOC,3;"D:\TRANSFERT\":W_MODULE:"\D_RESP")
		WRITE ENR_VOC ON F.VOC,"RESP"

	END ELSE
		IF W_SECTEURF = 1 THEN
			W_SECTEUR ="SECTEURF"
                        W_MODULE="FACTURE"
		END ELSE
			W_SECTEUR ="SECTEURG"
                        W_MODULE="GARDE"
		END
	END

	ENR_VOC=""
	ENR_VOC=REPLACE(ENR_VOC,1;"F")
        ENR_VOC=REPLACE(ENR_VOC,2;"D:\TRANSFERT\":W_MODULE:"\SECTEUR")
        ENR_VOC=REPLACE(ENR_VOC,3;"D:\TRANSFERT\":W_MODULE:"\D_SECTEUR")

        WRITE ENR_VOC ON F.VOC,W_SECTEUR

RETURN


*********************************************************
* SUPPRESSION VOC					*
*********************************************************
900 *
	IF W_GESTEMPS = 1 THEN
		DELETE F.VOC,"RESP"
	END

	DELETE F.VOC,W_SECTEUR

RETURN