# Fonction PCODE ID = 860026233
REGISTRE ENTIER date_art
REGISTRE POINTEUR Table_Externe
REGISTRE POINTEUR cle
#FONCTION ENTIER  table_exp(POINTEUR cle,POINTEUR Table_Externe ,ENTIER date_art)

############################################################################
#
# Nom du fichier: table_exp_reg
# 
# Fonction:
#    Recupere la valeur correspondante a la cle (valeur reguliere)
#    trouvee dans la table externe Prefixe_Portabilite
#
# En entree :
#    cle
#    Table_Externe
#    date_art
#
# En sortie:
#    si OK      : pt_valeur
#    Erreur     : g_inull
#
############################################################################
# 14/09/2006 FO1965 core 
############################################################################

#------------------------------------------------------------------------------------

REGISTRE  ENTIER       nb_entree
REGISTRE  ENTIER       indice
REGISTRE  ENTIER       erreur
REGISTRE  ENTIER       res
REGISTRE  ENTIER       pos_sep
REGISTRE  ENTIER       caract
REGISTRE  ENTIER       longueur

REGISTRE  POINTEUR     pt_cle
REGISTRE  POINTEUR     pt_valeur
REGISTRE  POINTEUR     pt_clevaleur


date_art = depilerENTIER()
Table_Externe = depilerPOINTEUR()
cle = depilerPOINTEUR()
#-initialisation des variables

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

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

nb_entree=i_get_tab_nb_entries(Table_Externe,date_art)

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

# Pour chaque entree

SI(nb_entree==0)
ALORS
	trace("Pas de valeur dans la table")
	RETOUR 0
FINSI

indice=0

POINT BOUCLE_NB_ENTRY

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

SI(!i_strcmp(pt_clevaleur,g_inull))
ALORS
	#cle non trouve EOF table externe
	trace("EOF table externe")
	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("Erreur fonction i_recupererValeur")
	RETOUR 0
FINSI

longueur = i_strlen(pt_cle)

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

SI(erreur!=0)
ALORS
	trace("Erreur fonction i_recupererValeur")
	RETOUR 0
FINSI


SI ( i_strplcmp ( cle, pt_cle, 0, longueur) == 0 )
ALORS
	#trace2 ("valeur associee a <%s> : <%s>", pt_valeur, pt_resultat)
	RETOUR pt_valeur
FINSI

indice=indice+1
SI(indice<nb_entree)
ALORS
	SAUT BOUCLE_NB_ENTRY
	SINON
	trace("cle non trouvee dans la table externe")
	RETOUR 0
FINSI

