********************************************
* TRAITEMENT DES VIREMENTS D'OPPOSITION    *
* 										   *
* VANESS                   	 MARS 2015     *
********************************************

************
* FICHIERS *
************
EXECUTE "SET-THOUS ."
EXECUTE "SET-DEC ,"
EXECUTE "DATE.FORMAT"
OPEN "","ACTIVITES" TO F.ACTIVITES ELSE STOP
OPEN "","ASSOCIATION" TO F.ASSOCIATION ELSE STOP
OPEN "","CIVILAIDANT" TO F.CIVILAIDANT ELSE STOP
OPEN "","CONTRAT" TO F.CONTRAT ELSE STOP
OPEN "","OPPOSITION" TO F.OPPOSITION ELSE STOP
OPEN "","TEMPO" TO F.TEMPO ELSE STOP
OPEN "","OPPOSITIONVIREMENT" TO F.OPPOSITIONVIREMENT ELSE STOP

******************************
* Recuperation des arguments *
******************************
PROCREAD ARGUMENTS ELSE PRINT "PROCREAD"

W_REQUETEACT=FIELD(ARGUMENTS,"|",2)
W_REQUETEDETAIL=FIELD(ARGUMENTS,"|",3)
W_CODASSOC=FIELD(ARGUMENTS,"|",4)
W_USER=FIELD(ARGUMENTS,"|",5)
****************************
* Procdures               *
****************************
*   100  -->  Remplissage tableau listage
*   200  -->  Recherche code
*   300  -->  Selection apuration
*   400  -->  Remplir donnes virement
*   500  -->  Gestion Requete DetailCalcul
*   600  -->  Activites Presentes
*   700  -->  MAJ requete act select

****************************
* Initialisation           *
****************************
	
	W_Monnaie = "E"

	ENR_TEMPO=""
	W_RequeteActSelect=""
	
	ENR_FICHIEROPPO=""
	W_RequeteOppo = ""
	
	GOSUB 700
	
	IPOSITION=0
	
	READ ENR_ASSOCIATION FROM F.ASSOCIATION,W_CODASSOC ELSE STOP
	
	EXECUTE W_REQUETEDETAIL
	EXECUTE 'SAUVE-LISTE W_RequeteOppo'
	EXECUTE "LISTE W_RequeteOppo" RETURNING MSGCODE	
	
	IF MSGCODE<1>#209 THEN
	
		W_PositionTableau=0

		SELECT F.OPPOSITION TO W_RequeteOppo
		
		GOSUB 500
		
		WRITE ENR_FICHIEROPPO ON F.OPPOSITIONVIREMENT,W_CodeFichier:'.xml'
	
	
		ENR_RAPPORT=""
		ENR_RAPPORT<1>=W_NbrVirements
		ENR_RAPPORT<2>=W_CumulTotal
		ENR_RAPPORT<3>=W_CodeFichier
		WRITE ENR_RAPPORT ON F.TEMPO,"RAPPORTOPPO":W_USER
		
	END ELSE
		ENR_TEMPO<1>="NEANT"
    END
	
	WRITE ENR_TEMPO ON F.TEMPO,"VIREMOPPO":W_USER
	
STOP

*******************************
* REMPLISSAGE TABLEAU LISTAGE *
*******************************
100

    IPOSITION=IPOSITION+1
	
    ENR_TEMPO<IPOSITION>=W_CLEPRINC[1,5]:SPACE(1):(ENR_CIVILAIDANT<2>:" ":ENR_CIVILAIDANT<3>)[1,30] "L#37"
	
	* libell oppo
	ENR_TEMPO<IPOSITION>=ENR_TEMPO<IPOSITION>:" ":ENR_OPPOSITION<1>[1,60] "L#60"
    
    *Montant  payer
    ENR_TEMPO<IPOSITION>=ENR_TEMPO<IPOSITION>:" ":W_Cumul "R%15"
	
RETURN

******************
* RECHERCHE CODE *
******************
200

    READ ENR_FICHIEROPPO FROM F.OPPOSITIONVIREMENT,RechercheCode:'.xml' THEN
    	RechercheCode = RechercheCode + 1
        GOSUB 200
    END
    
RETURN

***********************
* SELECTION APURATION *
***********************
300

    W_REQUETEVIR = ""
	
    W_Date=OCONV(@DATE,"D4/")
    W_Date=W_Date[7,4]:W_Date[4,2]
    W_Mois=(W_Date[5,2] - 2) "R%2"
	
    IF W_Mois="00" THEN
		W_Date=(W_Date[1,4]-1):"12"
    END ELSE
		IF W_Mois="-1" THEN
			W_Date=(W_Date[1,4]-1):"11"
		END ELSE
			W_Date=W_Date[1,4]:W_Mois
		END
    END
	
    EXECUTE 'SSELECT OPPOSITIONVIREMENT AVEC @ID < "':W_Date:"]":'"'
    EXECUTE 'SAUVE-LISTE W_REQUETEVIR'
    EXECUTE "LISTE W_REQUETEVIR" RETURNING MSGCODE	
	
    IF MSGCODE<1>#209 THEN
	
		SELECT F.OPPOSITIONVIREMENT TO W_REQUETEVIR
		
		W_FINIVIR="FAUX"
		LOOP
			READNEXT W_CLEVIR FROM W_REQUETEVIR ELSE W_FINIVIR="VRAI"
		WHILE W_FINIVIR="FAUX" DO
			DELETE F.OPPOSITIONVIREMENT,W_CLEVIR
		REPEAT
		
    END
	
RETURN

********************************
* REPLISSAGE DONNEES VIREMENTS *
********************************
400 

**    W_NbrVirements = W_NbrVirements + 1
    
    IF W_NbrVirements = 0 THEN
		* PURGE
		GOSUB 300  
		
    	W_DateRec = OCONV(@DATE,"D4/")
    	W_DateRec=W_DateRec[7,4]:W_DateRec[4,2]:W_DateRec[1,2]
    	W_CodeFichier = W_DateRec:W_CODASSOC
    	RechercheCode = W_CodeFichier:"1"
    	GOSUB 200
    	W_CodeFichier=RechercheCode
		
        ENR_FICHIEROPPO=""
		W_IndNbAidants=0
		W_IndMontant=0
		IF W_RequeteActSelect<1,2> <> "" THEN
			W_Iban=W_RequeteActSelect<1,2>
		END ELSE
			W_Iban=ENR_ASSOCIATION<15>
		END
		IF W_RequeteActSelect<1,3> <> "" THEN
			W_Bic=W_RequeteActSelect<1,3>
		END ELSE
			W_Bic=ENR_ASSOCIATION<16>
		END
		
		W_DATEEM = OCONV(@DATE,"D4/")
		W_DATEXML=W_DATEEM[7,4]:'-':W_DATEEM[4,2]:'-':W_DATEEM[1,2]
		W_HREXML=TIMEDATE()[1,8]
		
		* modif vanessa 14/05/14 - DA 14026
		W_DATEEM = OCONV(DATE(),"D4/")
		W_DATEReqdExctnDt=W_DATEEM[7,4]:'-':W_DATEEM[4,2]:'-':W_DATEEM[1,2]
		
		ENR_FICHIEROPPO<-1>='<?xml version="1.0" encoding="UTF-8" standalone="no" ?>'
		* Modif Greg - 27/04/12 - Modification de la balise suivante suite  test du fichier par Crdit Agricole
		ENR_FICHIEROPPO<-1>='<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03 pain.001.001.03.xsd ">'
		* Modif Greg - 27/04/12 - Ajout de la balise suivante suite  test du fichier par Crdit Agricole
		ENR_FICHIEROPPO<-1>='<CstmrCdtTrfInitn>'
		ENR_FICHIEROPPO<-1>='<GrpHdr>'
		ENR_FICHIEROPPO<-1>='<MsgId>':W_CodeFichier:'</MsgId>'
		ENR_FICHIEROPPO<-1>='<CreDtTm>':W_DATEXML:'T':W_HREXML:'</CreDtTm>'
		ENR_FICHIEROPPO<-1>='<NbOfTxs>0</NbOfTxs>'
		W_IndNbAidants=DCOUNT(ENR_FICHIEROPPO,CHAR(254))
		ENR_FICHIEROPPO<-1>='<CtrlSum>0.00</CtrlSum>'
		W_IndMontant=DCOUNT(ENR_FICHIEROPPO,CHAR(254))
		ENR_FICHIEROPPO<-1>='<InitgPty>'
		W_TXTACONVERTIR=ENR_ASSOCIATION<1>
		GOSUB 9999991
		ENR_FICHIEROPPO<-1>='<Nm>':W_TXTACONVERTIR:'</Nm>'
		ENR_FICHIEROPPO<-1>='</InitgPty>'
		ENR_FICHIEROPPO<-1>='</GrpHdr>'
		ENR_FICHIEROPPO<-1>='<PmtInf>'
		ENR_FICHIEROPPO<-1>='<PmtInfId>Opposition salaire ':W_CodeFichier:'</PmtInfId>'
		ENR_FICHIEROPPO<-1>='<PmtMtd>TRF</PmtMtd>'
		ENR_FICHIEROPPO<-1>='<PmtTpInf>'
		ENR_FICHIEROPPO<-1>='<SvcLvl>'
		ENR_FICHIEROPPO<-1>='<Cd>SEPA</Cd>'
		ENR_FICHIEROPPO<-1>='</SvcLvl>'
		ENR_FICHIEROPPO<-1>='</PmtTpInf>'
		* modif vanessa 14/05/14 - DA 14026
		ENR_FICHIEROPPO<-1>='<ReqdExctnDt>':W_DATEReqdExctnDt:'</ReqdExctnDt>'
		ENR_FICHIEROPPO<-1>='<Dbtr>'
		W_TXTACONVERTIR=ENR_ASSOCIATION<1>
		GOSUB 9999991
		ENR_FICHIEROPPO<-1>='<Nm>':W_TXTACONVERTIR:'</Nm>'
		ENR_FICHIEROPPO<-1>='</Dbtr>'
		ENR_FICHIEROPPO<-1>='<DbtrAcct>'
		ENR_FICHIEROPPO<-1>='<Id>'
		ENR_FICHIEROPPO<-1>='<IBAN>':W_Iban:'</IBAN>'
		ENR_FICHIEROPPO<-1>='</Id>'
		ENR_FICHIEROPPO<-1>='</DbtrAcct>'
		ENR_FICHIEROPPO<-1>='<DbtrAgt>'
		ENR_FICHIEROPPO<-1>='<FinInstnId>'
		ENR_FICHIEROPPO<-1>='<BIC>':W_Bic:'</BIC>'
		ENR_FICHIEROPPO<-1>='</FinInstnId>'
		ENR_FICHIEROPPO<-1>='</DbtrAgt>'		
    END
	
    *Destinataire
	W_NbrVirements = W_NbrVirements + 1
	*Mikael le 12/05/2015 suite au ticket 9368 gestion du libelle  35 caractres
	W_LibelleDest = ENR_OPPOSITION<16>[1,35]
	W_TXTACONVERTIR=W_LibelleDest
	GOSUB 9999991
	W_LibelleDest=W_TXTACONVERTIR
	
	W_IbanAidant=ENR_OPPOSITION<25>
	W_BicAidant=ENR_OPPOSITION<26>
	
	ENR_FICHIEROPPO<-1>='<CdtTrfTxInf>'
	ENR_FICHIEROPPO<-1>='<PmtId>'
	ENR_FICHIEROPPO<-1>='<EndToEndId>':W_LibelleDest:'</EndToEndId>'
	ENR_FICHIEROPPO<-1>='</PmtId>'
	ENR_FICHIEROPPO<-1>='<Amt>'
	EXECUTE "SET-DEC ."
	ENR_FICHIEROPPO<-1>='<InstdAmt Ccy="EUR">':W_Cumul "MR2":'</InstdAmt>'
	EXECUTE "SET-DEC ,"
	ENR_FICHIEROPPO<-1>='</Amt>'
	ENR_FICHIEROPPO<-1>='<CdtrAgt>'
	ENR_FICHIEROPPO<-1>='<FinInstnId>'
	ENR_FICHIEROPPO<-1>='<BIC>':W_BicAidant:'</BIC>'
	ENR_FICHIEROPPO<-1>='</FinInstnId>'
	ENR_FICHIEROPPO<-1>='</CdtrAgt>'
	ENR_FICHIEROPPO<-1>='<Cdtr>'
	W_TXTACONVERTIR=ENR_OPPOSITION<24>
	GOSUB 9999991
	ENR_FICHIEROPPO<-1>='<Nm>':W_TXTACONVERTIR:'</Nm>'
	ENR_FICHIEROPPO<-1>='</Cdtr>'
	ENR_FICHIEROPPO<-1>='<CdtrAcct>'
	ENR_FICHIEROPPO<-1>='<Id>'
	ENR_FICHIEROPPO<-1>='<IBAN>':W_IbanAidant:'</IBAN>'
	ENR_FICHIEROPPO<-1>='</Id>'
	ENR_FICHIEROPPO<-1>='</CdtrAcct>'
	ENR_FICHIEROPPO<-1>='<RmtInf>'
	
	W_LibelleDest = 'Opposition salaire ':ENR_CIVILAIDANT<1>:' ':ENR_CIVILAIDANT<2>:' ':ENR_CIVILAIDANT<3>
	W_TXTACONVERTIR=W_LibelleDest
	GOSUB 9999991
	W_LibelleDest=W_TXTACONVERTIR
	
	ENR_FICHIEROPPO<-1>='<Ustrd>':W_LibelleDest:'</Ustrd>'
	ENR_FICHIEROPPO<-1>='</RmtInf>'
	ENR_FICHIEROPPO<-1>='</CdtTrfTxInf>'
	
	W_CumulTotal = W_CumulTotal+W_Cumul

	
RETURN

********************************
* GESTION REQUETE DETAILCALCUL *
********************************
500

    W_Cumul = 0
    W_CumulPage = 0
    W_CumulTotal = 0
    W_NbrVirements = 0
    
	W_CLEPRINC=""
	W_FINIPRINC="FAUX"
	
	LOOP
		READNEXT W_CLEPRINC FROM W_RequeteOppo ELSE W_FINIPRINC="VRAI"
	WHILE W_FINIPRINC="FAUX" DO
			
		W_Cumul=0
		READ ENR_CIVILAIDANT FROM F.CIVILAIDANT,W_CLEPRINC[1,5] ELSE PRINT "CIVILAIDANT"
		READ ENR_CONTRAT FROM F.CONTRAT,W_CLEPRINC[1,8] ELSE PRINT "CONTRAT 2"
		GOSUB 600
		IF ActivitesPresentes = "VRAI" THEN
			READ ENR_OPPOSITION FROM F.OPPOSITION, W_CLEPRINC THEN
				FOR jOppo = 1 TO DCOUNT(ENR_OPPOSITION<20>,CHAR(253))
					IF ENR_OPPOSITION<21,jOppo> = "" THEN
						W_Cumul = W_Cumul + ENR_OPPOSITION<20,jOppo>
						ENR_OPPOSITION<21,jOppo> = DATE()
						WRITE ENR_OPPOSITION ON F.OPPOSITION, W_CLEPRINC
					END
				NEXT jOppo
			END
		END
		
		GOSUB 400

		GOSUB 100			
        
	REPEAT
	
    *Total
	IF ENR_FICHIEROPPO<1>#"" THEN
		ENR_FICHIEROPPO<W_IndNbAidants>='<NbOfTxs>':W_NbrVirements:'</NbOfTxs>'
		EXECUTE "SET-DEC ."
		ENR_FICHIEROPPO<W_IndMontant>='<CtrlSum>':W_CumulTotal "MR2":'</CtrlSum>'
		EXECUTE "SET-DEC ,"
		
		ENR_FICHIEROPPO<-1>='</PmtInf>'
		* Modif Greg - 27/04/12 - Ajout de la balise suivante suite  test du fichier par Crdit Agricole
		ENR_FICHIEROPPO<-1>='</CstmrCdtTrfInitn>'
		ENR_FICHIEROPPO<-1>='</Document>'
	END
	
RETURN

***********************
* ACTIVITES PRESENTES *
***********************
600

    W_TROUVE="FAUX"
    ActivitesPresentes = "FAUX"
    W_LONGCONT=DCOUNT(ENR_CONTRAT<36>,CHAR(253))    
    W_LONGREQ=DCOUNT(W_RequeteActSelect,CHAR(254))
    
    FOR IREQ = 1 TO W_LONGREQ
	
        FOR JCONT = 1 TO W_LONGCONT
        	IF W_RequeteActSelect<IREQ,1> = ENR_CONTRAT<36,JCONT> THEN
                ActivitesPresentes = "VRAI"
				W_TROUVE="VRAI"
				EXIT
			END
        NEXT JCONT
		
		IF W_TROUVE="VRAI" THEN
			EXIT
		END
		
    NEXT IREQ
    
RETURN

******************************
* MAJ DE LA REQUETE ACTIVITE *
******************************
700

    W_RequeteAct = ""
	
    EXECUTE W_REQUETEACT
    EXECUTE 'SAUVE-LISTE W_RequeteAct'
    EXECUTE "LISTE W_RequeteAct" RETURNING MSGCODE	
	
    IF MSGCODE<1>#209 THEN
	
		IPOSITION=0
		SELECT F.ACTIVITES TO W_RequeteAct
		
		W_FINIACTIV="FAUX"
		LOOP
			READNEXT W_CLEACTIV FROM W_RequeteAct ELSE W_FINIACTIV="VRAI"
		WHILE W_FINIACTIV="FAUX" DO
			READ ENR_ACTIVITES FROM F.ACTIVITES,W_CLEACTIV ELSE STOP
			IPOSITION=IPOSITION+1
			W_RequeteActSelect<IPOSITION,1>=W_CLEACTIV
			W_RequeteActSelect<IPOSITION,2>=ENR_ACTIVITES<3>
			W_RequeteActSelect<IPOSITION,3>=ENR_ACTIVITES<4>
			W_RequeteActSelect<IPOSITION,4>=ENR_ACTIVITES<12>
		REPEAT
		
    END
	
RETURN

**********
* 9999991 -> GESTION DES MISES EN FORME (adapt  partir du PR DADSNAC)
**********
9999991
FOR Z = 1 TO LEN(W_TXTACONVERTIR)
   IF SEQ(W_TXTACONVERTIR[Z,1]) = 34 THEN
      IF Z=1 THEN
         W_TXTACONVERTIR = W_TXTACONVERTIR[2,999] 		 
      END ELSE
         W_TXTACONVERTIR = W_TXTACONVERTIR[1,Z-1]:W_TXTACONVERTIR[Z+1,999]
         Z=Z-1
      END
   END
* A
   IF SEQ(W_TXTACONVERTIR[Z,1]) >= 192 AND SEQ(W_TXTACONVERTIR[Z,1]) <= 198 THEN W_TXTACONVERTIR = W_TXTACONVERTIR[1,Z-1]:"A":W_TXTACONVERTIR[Z+1,999]
   IF SEQ(W_TXTACONVERTIR[Z,1]) >= 224 AND SEQ(W_TXTACONVERTIR[Z,1]) <= 230 THEN W_TXTACONVERTIR = W_TXTACONVERTIR[1,Z-1]:"A":W_TXTACONVERTIR[Z+1,999]
* C
   IF SEQ(W_TXTACONVERTIR[Z,1]) = 199 THEN W_TXTACONVERTIR = W_TXTACONVERTIR[1,Z-1]:"C":W_TXTACONVERTIR[Z+1,999]
   IF SEQ(W_TXTACONVERTIR[Z,1]) = 231 THEN W_TXTACONVERTIR = W_TXTACONVERTIR[1,Z-1]:"C":W_TXTACONVERTIR[Z+1,999]
* E
   IF SEQ(W_TXTACONVERTIR[Z,1]) >= 200 AND SEQ(W_TXTACONVERTIR[Z,1]) <= 203 THEN W_TXTACONVERTIR = W_TXTACONVERTIR[1,Z-1]:"E":W_TXTACONVERTIR[Z+1,999]
   IF SEQ(W_TXTACONVERTIR[Z,1]) >= 232 AND SEQ(W_TXTACONVERTIR[Z,1]) <= 235 THEN W_TXTACONVERTIR = W_TXTACONVERTIR[1,Z-1]:"E":W_TXTACONVERTIR[Z+1,999]
* I
   IF SEQ(W_TXTACONVERTIR[Z,1]) >= 204 AND SEQ(W_TXTACONVERTIR[Z,1]) <= 207 THEN W_TXTACONVERTIR = W_TXTACONVERTIR[1,Z-1]:"I":W_TXTACONVERTIR[Z+1,999]
   IF SEQ(W_TXTACONVERTIR[Z,1]) >= 236 AND SEQ(W_TXTACONVERTIR[Z,1]) <= 239 THEN W_TXTACONVERTIR = W_TXTACONVERTIR[1,Z-1]:"I":W_TXTACONVERTIR[Z+1,999]
* O
   IF SEQ(W_TXTACONVERTIR[Z,1]) >= 210 AND SEQ(W_TXTACONVERTIR[Z,1]) <= 214 THEN W_TXTACONVERTIR = W_TXTACONVERTIR[1,Z-1]:"O":W_TXTACONVERTIR[Z+1,999]
   IF SEQ(W_TXTACONVERTIR[Z,1]) >= 242 AND SEQ(W_TXTACONVERTIR[Z,1]) <= 246 THEN W_TXTACONVERTIR = W_TXTACONVERTIR[1,Z-1]:"O":W_TXTACONVERTIR[Z+1,999]
* U
   IF SEQ(W_TXTACONVERTIR[Z,1]) >= 217 AND SEQ(W_TXTACONVERTIR[Z,1]) <= 220 THEN W_TXTACONVERTIR = W_TXTACONVERTIR[1,Z-1]:"U":W_TXTACONVERTIR[Z+1,999]
   IF SEQ(W_TXTACONVERTIR[Z,1]) >= 249 AND SEQ(W_TXTACONVERTIR[Z,1]) <= 252 THEN W_TXTACONVERTIR = W_TXTACONVERTIR[1,Z-1]:"U":W_TXTACONVERTIR[Z+1,999]
* Y
   IF SEQ(W_TXTACONVERTIR[Z,1]) = 221 THEN W_TXTACONVERTIR = W_TXTACONVERTIR[1,Z-1]:"Y":W_TXTACONVERTIR[Z+1,999]		
   IF SEQ(W_TXTACONVERTIR[Z,1]) = 253 THEN W_TXTACONVERTIR = W_TXTACONVERTIR[1,Z-1]:"Y":W_TXTACONVERTIR[Z+1,999]		
	* Si pas espace
   IF SEQ(W_TXTACONVERTIR[Z,1]) # 32 THEN
		* Si pas chiffre
      IF SEQ(W_TXTACONVERTIR[Z,1]) < 48 OR SEQ(W_TXTACONVERTIR[Z,1]) > 57 THEN
			* Si pas lettre majuscule
         IF SEQ(W_TXTACONVERTIR[Z,1]) < 65 OR SEQ(W_TXTACONVERTIR[Z,1]) > 90 THEN
				* Si pas lettre minuscule
            IF SEQ(W_TXTACONVERTIR[Z,1]) < 97 OR SEQ(W_TXTACONVERTIR[Z,1]) > 122 THEN
				* Si pas / - ? : ( ) . , ' +
				IF SEQ(W_TXTACONVERTIR[Z,1]) # 47 AND SEQ(W_TXTACONVERTIR[Z,1]) # 45 AND SEQ(W_TXTACONVERTIR[Z,1]) # 63 AND SEQ(W_TXTACONVERTIR[Z,1]) # 58 AND SEQ(W_TXTACONVERTIR[Z,1]) # 40 AND SEQ(W_TXTACONVERTIR[Z,1]) # 41 AND SEQ(W_TXTACONVERTIR[Z,1]) # 46 AND SEQ(W_TXTACONVERTIR[Z,1]) # 44 AND SEQ(W_TXTACONVERTIR[Z,1]) # 39 AND SEQ(W_TXTACONVERTIR[Z,1]) # 43 THEN
					W_TXTACONVERTIR = W_TXTACONVERTIR[1,Z-1]:W_TXTACONVERTIR[Z+1,999]
					Z = Z - 1
				END
            END
         END
      END
   END ELSE
   * Gestion des double-espaces.
      IF SEQ(W_TXTACONVERTIR[Z+1,1]) = 32 THEN
         W_TXTACONVERTIR = W_TXTACONVERTIR[1,Z-1]:W_TXTACONVERTIR[Z+1,999]
         Z=Z-1
      END
      IF SEQ(W_TXTACONVERTIR[Z-1,1]) = 45 THEN 
         W_TXTACONVERTIR = W_TXTACONVERTIR[1,Z-1]:W_TXTACONVERTIR[Z+1,999]
         Z=Z-1
      END
   END
NEXT Z
* Vrifie que le premier et dernier caractres sont bien des dans [A-Z], [a-z] ou [0-9], le cas chant on efface.    
LOOP
   WHILE ((SEQ(W_TXTACONVERTIR[1,1]) < 48 OR SEQ(W_TXTACONVERTIR[1,1]) > 57) AND (SEQ(W_TXTACONVERTIR[1,1]) < 65 OR SEQ(W_TXTACONVERTIR[1,1]) > 90) AND (SEQ(W_TXTACONVERTIR[1,1]) < 97 OR SEQ(W_TXTACONVERTIR[1,1]) > 122))
      IF W_TXTACONVERTIR = "" THEN EXIT
      W_TXTACONVERTIR = W_TXTACONVERTIR[2,LEN(W_TXTACONVERTIR)-1]       
REPEAT
LOOP    
   WHILE ((SEQ(W_TXTACONVERTIR[LEN(W_TXTACONVERTIR),1]) < 48 OR SEQ(W_TXTACONVERTIR[LEN(W_TXTACONVERTIR),1]) > 57) AND (SEQ(W_TXTACONVERTIR[LEN(W_TXTACONVERTIR),1]) < 65 OR SEQ(W_TXTACONVERTIR[LEN(W_TXTACONVERTIR),1]) > 90) AND (SEQ(W_TXTACONVERTIR[LEN(W_TXTACONVERTIR),1]) < 97 OR SEQ(W_TXTACONVERTIR[LEN(W_TXTACONVERTIR),1]) > 122)) DO
      IF W_TXTACONVERTIR = "" THEN EXIT
      W_TXTACONVERTIR = W_TXTACONVERTIR[1,LEN(W_TXTACONVERTIR)-1]        
REPEAT
RETURN