# Fonction PCODE ID = 660004265
REGISTRE POINTEUR ptr_valeur

REGISTRE ENTIER erreur
REGISTRE ENTIER index
REGISTRE ENTIER longueur
REGISTRE ENTIER b_DTMF
REGISTRE ENTIER indice
REGISTRE ENTIER position
REGISTRE ENTIER res

REGISTRE POINTEUR ptr_valeur1
REGISTRE POINTEUR ptr_valeur2
REGISTRE POINTEUR ptr_motif
REGISTRE POINTEUR ptr_BUF1
REGISTRE POINTEUR ptr_BUF2
REGISTRE POINTEUR ptr_BUF3
REGISTRE POINTEUR ptr_zero
#QC1240
ptr_valeur1 = "ptr_valeur1_99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999"
ptr_valeur2 = "ptr_valeur2_22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222"
ptr_motif = "ptr_motif777777777777"
ptr_BUF1 = "ptr_BUF18888888888888"
ptr_BUF2 = "ptr_BUF26666666666666"
ptr_BUF3 = "ptr_BUF35555555555555"
ptr_zero  = "ptr_zero444444444444"

i_strcpy(ptr_valeur1," ")
i_strcpy(ptr_motif," ")
i_strcpy(ptr_BUF1," ")
i_strcpy(ptr_BUF2," ")
i_strcpy(ptr_BUF3," ")
i_strcpy(ptr_zero," ")

ptr_valeur = depilerPOINTEUR()

trace2("<<<__LINE__<<<__FILE__<<< -------Avant normalisation = %s------------",ptr_valeur,"")
index = 0
i_strcpy(ptr_valeur1,ptr_valeur)
i_get_sub_str (ptr_valeur1,index,index+3,ptr_motif)
SI (i_strcmp("tel:",ptr_motif)==0 || i_strcmp("sip:",ptr_motif)==0)
ALORS
  trace ("suppression de tel: ou sip:")
  i_get_sub_str(ptr_valeur1,4,-1,ptr_valeur1)
  longueur = i_strlen(ptr_valeur1)
FINSI

#Detection du caractere +
index = 0
i_get_sub_str (ptr_valeur1,index,index,ptr_motif)
SI (i_strcmp("+",ptr_motif)==0)
ALORS
  trace ("suppression +")
  i_get_sub_str(ptr_valeur1,1,-1,ptr_valeur1)
  longueur = i_strlen(ptr_valeur1)
FINSI

#detection des caracteres DTMF
i_get_sub_str (ptr_valeur1,0,0,ptr_BUF1)
i_get_sub_str (ptr_valeur1,0,1,ptr_BUF2)

SI ( i_strcmp("*#", ptr_BUF2) == 0)
ALORS
  b_DTMF=2
  trace ("<<<__LINE__<<<__FILE__<<< presence des caracteres DTMF *#")
SINON
  SI ( i_strcmp("*", ptr_BUF1) == 0) || ( i_strcmp("#", ptr_BUF1) == 0)
  ALORS
    b_DTMF=1
    trace ("<<<__LINE__<<<__FILE__<<< presence du caractere DTMF * ou #")
  FINSI
FINSI

#presence  DTMF *#---*
SI (b_DTMF == 2)
ALORS
  indice = 1
  POINT DEB_BOUCLE1
  indice = indice + 1
  SI (indice < longueur)
  ALORS
    i_get_sub_str(ptr_valeur1, indice, indice, ptr_BUF3)
    SI i_strcmp(ptr_BUF3,"*") == 0 || i_strcmp(ptr_BUF3,"#") == 0
    ALORS
      indice = indice + 1
      SAUT FIN_BOUCLE_COMMUN
    SINON
      SAUT DEB_BOUCLE1
    FINSI
  FINSI
FINSI

#presence DTMF  *---* ou #---#

SI (b_DTMF == 1)
ALORS
  indice  = 0
  POINT DEB_BOUCLE2
  indice = indice + 1
  SI (indice < longueur)
  ALORS
    i_get_sub_str(ptr_valeur1, indice, indice, ptr_BUF3)
    SI i_strcmp(ptr_BUF3,"*") == 0 || i_strcmp(ptr_BUF3,"#") == 0
    ALORS
      indice = indice + 1
      SAUT FIN_BOUCLE_COMMUN
    SINON
      SAUT DEB_BOUCLE2
    FINSI
  FINSI
FINSI

POINT FIN_BOUCLE_COMMUN

SI (b_DTMF == 1 || b_DTMF == 2)
ALORS
#Suppression des sequences DTMF
  i_get_sub_str(ptr_valeur1,indice,-1,ptr_valeur1)
  longueur=i_strlen(ptr_valeur1)
FINSI

#Detection des prefixes 00
index = 0
i_get_sub_str (ptr_valeur1,index,index+1,ptr_motif)
trace2("------cas 00 ptr_motif=%s---------",ptr_motif,"")
SI (i_strcmp("00",ptr_motif)==0)
ALORS
  trace ("<<<__LINE__<<<__FILE__<<< suppression de 00")
  i_get_sub_str(ptr_valeur1,2,-1,ptr_valeur1)
  longueur = i_strlen(ptr_valeur1)
FINSI

#---------------------------------------------------------------
#recherche du caractere @ pour supprimer les suffixes eventuels
#---------------------------------------------------------------

index = 0
longueur=i_strlen(ptr_valeur1)

position = RECHERCHE_CARACTERE_660004265 (ptr_valeur1,"@")
trace1("---------position=%d----------",position)
SI (position < 0)
ALORS
  #pas de caractere '@' trouve dans ptr_calling
  trace ("pas de caractere @ dans callingPartAddr")

SINON
  #suppression des suffixes apres @
  i_get_sub_str(ptr_valeur1,0,position - 1,ptr_valeur1)
  longueur=i_strlen(ptr_valeur1)
FINSI

SI (longueur <= 6)
ALORS
  #Numero court on ajoute 33
  trace2("----cas numero = %s------",ptr_valeur1,"")
  erreur=i_format_str2(ptr_valeur2,"%s%s","33",ptr_valeur1)

  trace2("<<<__LINE__<<<__FILE__<<< ------------- ajout de 33 cas  court = %s--------",ptr_valeur2,"")
  SAUT SORTIE_ptr_valeur2
SINON
  trace2("----non court = %s -----------",ptr_valeur1,"")
  i_get_sub_str(ptr_valeur1, 0, 0, ptr_zero)
  trace2("------------ptr_zero=%s---------",ptr_zero,"")
  SI (i_strcmp("0",ptr_zero)==0 && longueur == 10)
  ALORS
    i_get_sub_str (ptr_valeur1,1,-1,ptr_valeur1)
    erreur = i_format_str2(ptr_valeur2,"%s%s","33",ptr_valeur1)
    trace2("<<<__LINE__<<<__FILE__<<< -----cas  non court ajout 33 = %s--------", ptr_valeur2,"")
    SAUT SORTIE_ptr_valeur2
  FINSI
FINSI

#QC978
#RETOUR ptr_valeur1
i_strcpy(ptr_valeur2, ptr_valeur1)

POINT SORTIE_ptr_valeur2

# verification si ptr_valeur2 est numerique (pour le telephone)
indice = 0
longueur=i_strlen(ptr_valeur2)

#QC1000
i_replace_str(ptr_valeur2, "*#", "BC", ptr_valeur2)
#/QC1000

POINT DEB_VERIF
SI (indice < longueur)
ALORS
  res = i_strtab( ptr_valeur2, indice )
  SI (res >= 0x30 && res <= 0x39 || res >= 0x41 && res <= 0x46 || res >= 0x61 && res <= 0x66)
  ALORS
    # le caractere est numerique (pour le telephone) on retournera ptr_valeur2 a la fin du test
    indice = indice + 1
    SAUT DEB_VERIF
  SINON
    # le caractere n'est pas numerique (pour le telephone) on retournera ptr_valeur1 = " " + ptr_valeur2
    SAUT DEB_CONV
  FINSI
FINSI
trace2("<<<__LINE__<<<__FILE__<<  retour fonction ptr_valeur2=<%s>",ptr_valeur2,"")
RETOUR ptr_valeur2

POINT DEB_CONV
i_strcpy(ptr_valeur1, " ")
erreur = i_format_str2( ptr_valeur1, "%s%s", " ", ptr_valeur2 )
trace2("<<<__LINE__<<<__FILE__<<  retour fonction ptr_valeur1=<%s>",ptr_valeur1,"")
RETOUR ptr_valeur1


