# Fonction PCODE ID = 660004265
REGISTRE ENTIER ichamp
REGISTRE ARTOBJ artin
REGISTRE POINTEUR pt_adrIPin

REGISTRE  ENTIER  erreur
REGISTRE  ENTIER  XXVal
REGISTRE  ENTIER  YYVal
REGISTRE  ENTIER  indice
REGISTRE  ENTIER  length

REGISTRE  POINTEUR  pt_XYpart
REGISTRE  POINTEUR  pt_XXpart
REGISTRE  POINTEUR  pt_YYpart
REGISTRE  POINTEUR  pt_adrIPin_hex

ichamp = depilerENTIER()
artin = depilerARTOBJ()
pt_adrIPin = depilerPOINTEUR()

pt_adrIPin_hex ="012345678012345678012345678012345678012345678012345678012345678012345678"
pt_XYpart = "xxyy0"
pt_XXpart = "xx0"
pt_YYpart = "yy0"

XXVal = 0
YYVal = 0
indice = 0

erreur = i_ConvertirChaine(pt_adrIPin,i_strlen(pt_adrIPin),3,pt_adrIPin_hex,i_strlen(pt_adrIPin),1)
i_get_sub_str(pt_adrIPin_hex,0,i_strlen(pt_adrIPin)/2-1,pt_adrIPin_hex)

POINT BOUCLE_FMTIPV6

XXVal = 0
YYVal = 0
# 19/02/09 DRE G2R2 lot1 QC335 initialisation du pointeur pt_XYpart
i_strcpy(pt_XYpart,"")

erreur =i_recupererValeur(pt_adrIPin_hex ,pt_XYpart, 6, ':')

# 19/02/09 DRE G2R2 lot1 QC335 ajout d'une condition sur la longueur pour envoi en erreur
#SI (erreur !=0)
SI (erreur !=0 && i_strlen(pt_adrIPin_hex) > 0)
ALORS
  trace("Erreur retour fct recupererValeur  FormatIPV6_Hex")
  RETOUR 1
FINSI

length = i_strlen(pt_XYpart)

SI (length ==4)
ALORS
  i_get_sub_str(pt_XYpart,0,1,pt_XXpart)
  i_get_sub_str(pt_XYpart,2,3,pt_YYpart)
  XXVal = toHEXInteger_660004265(pt_XXpart)
  YYVal = toHEXInteger_660004265(pt_YYpart)
SINON
  SI (length ==3)
  ALORS
    i_get_sub_str(pt_XYpart,0,0,pt_XXpart)
    i_get_sub_str(pt_XYpart,1,2,pt_YYpart)
    XXVal = toHEXInteger_660004265(pt_XXpart)
    YYVal = toHEXInteger_660004265(pt_YYpart)
  SINON
    SI (length ==2)
    ALORS
      i_get_sub_str(pt_XYpart,0,1,pt_YYpart)
      XXVal = 0
      YYVal = toHEXInteger_660004265(pt_YYpart)
    SINON
      SI (length ==1)
      ALORS
        i_get_sub_str(pt_XYpart,0,0,pt_YYpart)
        XXVal = 0
        YYVal = toHEXInteger_660004265(pt_YYpart)
      FINSI
    FINSI
  FINSI
FINSI
erreur = i_set_art_fieldtab(artin, ichamp,indice,XXVal)
erreur = i_set_art_fieldtab(artin, ichamp,indice+1,YYVal)
indice = indice + 2
SI (indice <16)
ALORS
  SAUT BOUCLE_FMTIPV6
FINSI

RETOUR 0

