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

############################################################################
#
# Nom du fichier: table_exp_reg
# 
# Fonction:
#    Recupere la valeur correspondante ? 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  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


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

nb_entree=i_get_tab_nb_entries(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("Zero entree 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

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

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

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

                 #RETOUR 1
                  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

