# Fonction PCODE ID = 860026233
REGISTRE ENTIER date_pivot
REGISTRE POINTEUR Num
REGISTRE POINTEUR Service
############################################################################
#
# Nom du fichier: DEDE9.src
# 
# Fonction:
#    Recupere la valeur associee a la clef dans une table externe
#    Pour les clefs commencant par 0,4 et 7 ajouter les 3 derniers chiffres de la clef a la valeur
#
# En entree :
#    Service    
#    Num        
#
# En sortie:
#    si OK      : Valeur table Ext + caracteres supplementairs dans certains cas
#    Erreur     : 0
#    Historique : NSA 22/01/04 Normalisation pointeurs
#		  NSA 26/03/2004 FO595 modif du test de retour de l'appel ` la table#
#
############################################################################

REGISTRE POINTEUR pt_Cle
REGISTRE POINTEUR pt_Cle2
REGISTRE POINTEUR pt_DebCle
REGISTRE POINTEUR pt_FinCle
REGISTRE POINTEUR pt_valeur
REGISTRE ENTIER   erreur
REGISTRE POINTEUR pt_res
REGISTRE POINTEUR pt_resul
REGISTRE ENTIER longueur

#
# Recuperation des arguments en entree
#

date_pivot = depilerENTIER()
Num = depilerPOINTEUR()
Service = depilerPOINTEUR()
pt_Cle     = "aaaaaaaaaaaaaaa"
pt_Cle2     = "bbbbbbbbb"
pt_FinCle     = "cccccccccccccccc"
pt_DebCle     = "ddddddd"
pt_valeur  = "eeeeeeeeeeeeeee"
pt_res     = "fffffffffffffff"
pt_resul   = "ggggggggggggggg"


#trace1("date_pivot: <%u>", date_pivot)  

#trace2("Num:        <%s>", Num,"")

#trace2("pt_Cle: <%s>", pt_Cle,"")

# Concatenation de Service et Num pour former la cle
#
erreur = i_format_str2(pt_Cle,"%s%s",Service,Num)
#trace2("pt_Cle: <%s>", pt_Cle,"")

# Lecture du premier  caracteres du numero 
i_get_sub_str( Num, 0, 0, pt_DebCle )

# Recherche dans la table externe, de la valeur correspondante a la cle	
SI ( !i_strcmp(pt_DebCle,"0")||!i_strcmp(pt_DebCle,"4")||!i_strcmp(pt_DebCle,"7"))
ALORS
        i_get_sub_str( Num, 1, 3, pt_FinCle )
        i_get_sub_str( pt_Cle, 0, 3, pt_Cle2 )
	i_strcpy(pt_valeur,i_get_tab_field( "Inter", date_pivot, pt_Cle2 ))
SINON
	i_strcpy(pt_valeur,i_get_tab_field( "Inter", date_pivot, pt_Cle ) )

FINSI  
  
#
SI( !i_strcmp(pt_valeur,g_inull ))
ALORS
#	trace2( "ERREUR: pt_Cle <%s> non trouvee dans la table externe Inter", pt_Cle,"" )
	i_strcpy(pt_res,"0")

	RETOUR pt_res
FINSI
#trace2("Valeur trouvee: <%s> : %s", pt_valeur, "")
#
# Recuperation de la valeur et ajout de caracteres a la fin de la valeur trouvee 
# dans le cas de num commencant par 0, 4 ou 7
SI ( !i_strcmp(pt_DebCle,"0")||!i_strcmp(pt_DebCle,"4")||!i_strcmp(pt_DebCle,"7"))
ALORS
	erreur = i_format_str2(pt_res,"%s%s",pt_valeur,pt_FinCle)
	        
SINON
	i_strcpy(pt_res,pt_valeur)


FINSI 

# Longueur de la chaine:
longueur=i_strlen(pt_res)

trace1("Longueur de la chaine passee: <%d>", longueur)

# Bourrage possible avec "F":
SI (longueur % 2)
ALORS
	trace("Nb octets impair, bourrage avec F")
	erreur=i_format_str2(pt_resul,"%s%s",pt_res,"F")
	longueur=longueur+1
FINSI
trace2("chaine apres bourrage = <%s>", pt_resul, "")

RETOUR pt_resul

