# Fonction PCODE ID = 660004265
REGISTRE POINTEUR pt_shortIDcorres
REGISTRE ENTIER date_art
REGISTRE POINTEUR pt_Table_Externe
REGISTRE POINTEUR pt_param_cle

REGISTRE  ENTIER       nb_entree
REGISTRE  ENTIER       indice
REGISTRE  ENTIER       erreur
REGISTRE  ENTIER       res
REGISTRE  ENTIER       pos_sep
REGISTRE  ENTIER       caract
REGISTRE  POINTEUR     pt_cle
REGISTRE  POINTEUR     pt_valeur
REGISTRE  POINTEUR     pt_clevaleur

pt_shortIDcorres = depilerPOINTEUR()
date_art = depilerENTIER()
pt_Table_Externe = depilerPOINTEUR()
pt_param_cle = depilerPOINTEUR()
#-initialisation des variables

pt_cle="01234567890123456789-01234567890123456789"
pt_valeur="01234567890123456789"
pt_clevaleur="01234567890123456789-01234567890123456789;01234567890123456789"
indice=0

#-- recuperer le nombre d entree dans la table exterbe pt_Table_Externe

nb_entree=i_get_tab_nb_entries(pt_Table_Externe,date_art)

trace1("SMS-C nb entree de la table est :<%d>",nb_entree)

# Pour chaque entree

SI (nb_entree==0)
ALORS
  trace("SMS-C Zero entree dans la table")
  i_strcpy(pt_shortIDcorres,g_inull)
  RETOUR 0
FINSI

indice=0

POINT BOUCLE_NB_ENTRY

erreur=i_get_tab_one_entry (pt_Table_Externe,date_art,indice,pt_clevaleur)

SI (!i_strcmp(pt_clevaleur,g_inull))
ALORS
#   cle non trouve EOF table externe
  trace("SMS-C EOF table externe")
  i_strcpy(pt_shortIDcorres,g_inull)
  RETOUR 0
FINSI

# Appel a la fonction i_recuperValeur pour extraire la cle et la valeur

erreur=i_recupererValeur(pt_clevaleur,pt_cle,42,';')

SI (erreur!=0)
ALORS
  trace("SMS-C Erreur fonction i_recupererValeur")
  i_strcpy(pt_shortIDcorres,g_inull)
  RETOUR 0
FINSI

erreur=i_recupererValeur(pt_clevaleur,pt_valeur,21,';')

SI (erreur!=0)
ALORS
  trace("SMS-C Erreur fonction i_recupererValeur")
  i_strcpy(pt_shortIDcorres,g_inull)
  RETOUR 0
FINSI

#-- la cle pt_cle peut etre un interval ou une valeur
# pour distinguer l interval de la valeur on va tester si le caracter '-' existe dans la chaine
pos_sep=i_strlen(pt_cle)
pos_sep=pos_sep/2
caract=i_strtab(pt_cle,pos_sep)
SI (caract != '-')
ALORS
# Cas ou la cle est une valeur -> i_strcmp

  SI (!i_strcmp(pt_cle,pt_param_cle))
  ALORS
    trace("SMS-C cle trouvee dans la table externe, strcmp")
    i_strcpy(pt_shortIDcorres,pt_valeur)
    RETOUR 1
  FINSI
SINON
#   Cas ou la cle est un intervall -> i_tester_Intervalle
  res=i_tester_intervalle(pt_cle,pt_param_cle)
  SI (res==1)
  ALORS
    trace("SMS-C cle trouvee dans la table, i_teste_intervalle")
    i_strcpy(pt_shortIDcorres,pt_valeur)
    RETOUR 1
  FINSI
FINSI
indice=indice+1
SI (indice<nb_entree)
ALORS
  SAUT BOUCLE_NB_ENTRY
SINON
  trace("SMS-C cle non trouvee dans la table externe")
  i_strcpy(pt_shortIDcorres,g_inull)
  RETOUR 0
FINSI

