# Fonction PCODE ID = 860026233
REGISTRE POINTEUR Num
REGISTRE ENTIER date

# Nom du fichier: CodeOperateur.src
#
# Fonction:
#    Recupere le code operateur en fonction de la date et du numero demande
#
# En entree :
#    DATE
#    Numero Demande
#
# En sortie:
#    si OK      : Code operateur
#    si NOK     : 0
#
#	FO49 : on prend les 9 derniers caracteres du NUM pour appel a la table
#	FO55 : utilisation de i_EnvoiReqConsTabDistDouble
############################################################################

REGISTRE POINTEUR pt_Code
REGISTRE POINTEUR pt_Buffer
REGISTRE ENTIER   erreur
REGISTRE ENTIER   res
REGISTRE ENTIER   inst45s
REGISTRE ENTIER   L_Num

Num = depilerPOINTEUR()
date = depilerENTIER()
# Recuperation des arguments en entree
#

# Initialisation des variables

pt_Buffer="123456789012345"
pt_Code ="111111111112345"

####################################################
# Recherche instance 45S
#####################################################
inst45s = i_LireInstanceECC("45S")
trace1("inst45s=<%d>",inst45s)

############################################################################
# Envoi requetes Table de Distribution
############################################################################

# Correction PSA G1R2C3 : on prend les 9 derniers digits du demande
# A revoir : probleme de surnumerotation
#i_get_sub_str(Num,1,i_strlen(Num)-1,Num)
i_get_sub_str(Num,-9,-1,Num)
L_Num = i_conv_ascii_dcb(Num, pt_Buffer)
#erreur = i_EnvoiReqConsTabDist(6, date, pt_Buffer, L_Num,0,1)
erreur = i_EnvoiReqConsTabDistDouble(6, 6, date, pt_Buffer, L_Num,L_Num,1,0,1)
SI (erreur != 0)
 ALORS
       trace("Erreur i_EnvoiReqConsTabDist")

        RETOUR 0
FINSI
############################################################################
# Attente requetes Table de Distribution
############################################################################


erreur = i_LireReqConsTabDist()
SI ( erreur != 0 )
ALORS
   trace1( "Erreur i_LireReqConsTabDist: <%d>", erreur)
   RETOUR 0
FINSI
############################################################################
# Lecture du Code Operateur
############################################################################
res = i_LireInfoECC( inst45s, 0 )

#G2R1Cj_PLUS_FO1406	SI (res > 0)
SI (res != 0)
ALORS
	erreur = i_LireChaineInfo( res, 0, 5, pt_Code )
	trace2( " - Resultat de i_LireChaineInfo : <%s>", pt_Code, "" )
SINON
	trace("pas trouve dans le referentiel 45s")
	RETOUR 0
FINSI

RETOUR pt_Code
