# Fonction PCODE ID = 800009855
REGISTRE POINTEUR alphanum
REGISTRE ENTIER ic_champ
REGISTRE ARTOBJ artobj
############################################################################
#
# nom du fichier: affectation_tab.src
#       affecte element par element un champ de type tableau au format DCB (dont l indice est passe en entree), 
#	par des elements constituant la variable pointeur passe en entree.
#	Pour savoir quels elements alphanumeriques sont convertis, se reporter a la fonction conversion2.
#       La longueur de la variable pointeur ne doit pas depasser la taille maximale autorisee du champ.
#	Retourne le NB elements du tableau initialises.	
#	Retourne 0 si aucune affectation n a ete faite.
#
#	12/10/2011 RHE VerifPcode
#
############################################################################
	
REGISTRE POINTEUR pt_val
REGISTRE ENTIER erreur
REGISTRE ENTIER indice
REGISTRE ENTIER digit
REGISTRE ENTIER longueur


alphanum = depilerPOINTEUR()
ic_champ = depilerENTIER()
artobj = depilerARTOBJ()
pt_val="1234567890123456789012345"

# VerifPcode - RHE # 
i_strcpy(pt_val, "")

indice=0

trace("Appel affectation_tab")
trace2("chaine passee = <%s>", alphanum, "")

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

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(alphanum,"%s%s",alphanum,"F")
	longueur=longueur+1
FINSI
trace2("chaine apres bourrage = <%s>", alphanum, "")

POINT BOUCLE
	
	i_get_sub_str(alphanum,indice,indice,pt_val)
	digit=conversion2_800009855(pt_val)
	erreur=i_set_art_fieldtab(artobj,ic_champ,indice,digit)
	
	trace1("index <%d>",indice)
	trace2("chaine = <%s>",pt_val,"")
	trace1("DCB = <%d>", digit)
	
	indice=indice+1	
	
	
	SI (indice>=longueur)
	ALORS		
		SAUT TAILLE_MAX
	FINSI

SAUT BOUCLE

POINT TAILLE_MAX

trace1("Nb elements du tableau: <%d>",longueur)

RETOUR longueur


