# Fonction PCODE ID = 660004265
REGISTRE POINTEUR pt_valeurIN

REGISTRE ENTIER taille
REGISTRE ENTIER indice
REGISTRE ENTIER puissance
REGISTRE POINTEUR pt_val
REGISTRE ENTIER total

pt_val = "pt_val"
total = 0
puissance = 1

pt_valeurIN = depilerPOINTEUR()

#recuperation taille champIN
taille = i_strlen(pt_valeurIN)

#test si champIN trop long
SI (taille > 8)
ALORS
  RETOUR -1
FINSI

POINT BOUCLE_PUISSANCE_MAX
SI indice < taille
ALORS
  puissance = puissance * 16
  indice = indice + 1
  SAUT BOUCLE_PUISSANCE_MAX
FINSI

#conversion
indice = -1

POINT BOUCLE_ASCIItoINT
indice = indice + 1
puissance = puissance / 16
SI (indice < taille)
ALORS
  i_get_sub_str(pt_valeurIN, indice, indice, pt_val)
  SI i_strcmp(pt_val,"0") == 0
  ALORS
    SAUT BOUCLE_ASCIItoINT
  FINSI

  SI i_strcmp(pt_val,"1") == 0
  ALORS
    total = total + (1 * puissance)
    SAUT BOUCLE_ASCIItoINT
  FINSI

  SI i_strcmp(pt_val,"2") == 0
  ALORS
    total = total + (2 * puissance)
    SAUT BOUCLE_ASCIItoINT
  FINSI

  SI i_strcmp(pt_val,"3") == 0
  ALORS
    total = total + (3 * puissance)
    SAUT BOUCLE_ASCIItoINT
  FINSI

  SI i_strcmp(pt_val,"4") == 0
  ALORS
    total = total + (4 * puissance)
    SAUT BOUCLE_ASCIItoINT
  FINSI

  SI i_strcmp(pt_val,"5") == 0
  ALORS
    total = total + (5 * puissance)
    SAUT BOUCLE_ASCIItoINT
  FINSI

  SI i_strcmp(pt_val,"6") == 0
  ALORS
    total = total + (6 * puissance)
    SAUT BOUCLE_ASCIItoINT
  FINSI

  SI i_strcmp(pt_val,"7") == 0
  ALORS
    total = total + (7 * puissance)
    SAUT BOUCLE_ASCIItoINT
  FINSI

  SI i_strcmp(pt_val,"8") == 0
  ALORS
    total = total + (8 * puissance)
    SAUT BOUCLE_ASCIItoINT
  FINSI

  SI i_strcmp(pt_val,"9") == 0
  ALORS
    total = total + (9 * puissance)
    SAUT BOUCLE_ASCIItoINT
  FINSI

  SI (i_strcmp(pt_val,"a") == 0) || (i_strcmp(pt_val,"A") == 0)
  ALORS
    total = total + (10 * puissance)
    SAUT BOUCLE_ASCIItoINT
  FINSI

  SI (i_strcmp(pt_val,"b") == 0) || (i_strcmp(pt_val,"B") == 0)
  ALORS
    total = total + (11 * puissance)
    SAUT BOUCLE_ASCIItoINT
  FINSI

  SI (i_strcmp(pt_val,"c") == 0) || (i_strcmp(pt_val,"C") == 0)
  ALORS
    total = total + (12 * puissance)
    SAUT BOUCLE_ASCIItoINT
  FINSI

  SI (i_strcmp(pt_val,"d") == 0) || (i_strcmp(pt_val,"D") == 0)
  ALORS
    total = total + (13 * puissance)
    SAUT BOUCLE_ASCIItoINT
  FINSI

  SI (i_strcmp(pt_val,"e") == 0) || (i_strcmp(pt_val,"E") == 0)
  ALORS
    total = total + (14 * puissance)
    SAUT BOUCLE_ASCIItoINT
  FINSI

  SI (i_strcmp(pt_val,"f") == 0) || (i_strcmp(pt_val,"F") == 0)
  ALORS
    total = total + (15 * puissance)
    SAUT BOUCLE_ASCIItoINT
  FINSI

  RETOUR -1

FINSI

RETOUR total
