DEFINITION NUMTAB_660004652 4
DEFINITION Multidistribution_Non_660004652 0
DEFINITION DISTRIBUTION_INCONNU_660004652 1
DEFINITION C_Article_660004652 "Tvpn40"
DEFINITION C_Tdpv_660004652 "Tdpvgsm"
DEFINITION TRAI_KO_660004652 -1
REGISTRE ENTIER TYPE_OC_660004652
REGISTRE ENTIER TYPE_TC_660004652
REGISTRE ENTIER TYPE_FCC_660004652
REGISTRE ENTIER TYPE_FCI_660004652
REGISTRE ENTIER TYPE_FC_660004652
REGISTRE ENTIER TYPE_IWC_660004652
REGISTRE ENTIER TYPE_RCF_660004652
REGISTRE ENTIER TYPE_VN_660004652
REGISTRE ENTIER Appel_Talk_Now_660004652
REGISTRE ENTIER erreur_660004652
REGISTRE ENTIER calltype_660004652
REGISTRE ENTIER adrcallednb_660004652
REGISTRE ENTIER typrout_660004652
REGISTRE ENTIER charactcall_660004652
REGISTRE ENTIER locationind_660004652
REGISTRE ENTIER origine_660004652
REGISTRE ENTIER adrtransnb_660004652
REGISTRE ENTIER VlrNb33_660004652
REGISTRE ENTIER MSISDN_660004652
REGISTRE ENTIER date_audit_660004652
REGISTRE ENTIER date_fin_660004652
REGISTRE ENTIER date_audit_gmt_660004652
REGISTRE ENTIER ICAR_ABS_660004652
REGISTRE ENTIER flag_rdt_660004652
REGISTRE ENTIER date_660004652
REGISTRE ENTIER code_errone_660004652
REGISTRE ENTIER EFFICACE_660004652
REGISTRE ENTIER type_660004652
REGISTRE ENTIER res_660004652
REGISTRE ENTIER longueur_660004652
REGISTRE ENTIER index_660004652
REGISTRE ENTIER index1_660004652
REGISTRE ENTIER car_660004652
REGISTRE ENTIER NB_UT_660004652
REGISTRE POINTEUR pt_1_660004652
REGISTRE POINTEUR pt_2_660004652
REGISTRE POINTEUR pt_deb_660004652
REGISTRE POINTEUR ptr_locationNb_660004652
REGISTRE POINTEUR ptr_LocUnikPC_660004652
######################################################################
# DISTRIBUTION	Tvpn40_dist.src
#	Article Tvpn40 
#
######################################################################
#	HISTORIQUE
# creation 24/11/05
#
# URS/PSA	27/01/06	Appel a aiguillage2, calcul Appel_Talk_Now
# 30/01/06 JLG evol spec SOF5 (inefficacite, TypeRout, GroupId, CalledGroupNb)
# 06/02/06 JLG FO 71
# 07/02/06 JLG FO 81
# 07/03/06 JLG date audit en heure metro + FO 57
# 20/03/06 JLG compteur redistribution
# 23/03/06 JLG FO 131 suppression ancienne ECC
# 29/03/06 JLG activation partie Stockage en Errone
# 19/04/06 FO 181 stockage en errone
# 12/05/06 PSA Appel fonction i_incr_redist_dist pour compteur redistribution
# 22/05/06 THEFAL G3R0CbME FO 222
# 12/07/06 THEFAL G3R0CbME FO 233
# 12/07/06 THEFAL G3R0CbME FO 239
# 01/09/06 JLG report FO CaME : 240, 242
# 11/12/06 PKH FO 375 fonction de prevalorisation non appele pour les types de cra 0x01
# 18/12/06 PKH FO 375 compl?ment correctif
# 09/08/07 Creation enveloppe optionnelle E_Redist2
# 31/01/08 BEA G1R6
# 04/04/08 PSA G1R7 : item VPN roaming
# 09/06/08 JLG G1R8 (MIPC) dm2 S1F8
# 26/09/08 JLG G1R8 (MIPC) QC220 evol spec  impact dans lIMSI ( V3t1.4)
# 01/12/08 PKH G2R1 lot3 tranche Z=7
# 11/08/09 PKH G2R3 QC425 modification interrogation table FILTRE_DISE_LOC
# 02/11/09 QC490
# 15/01/2010 PKH G2R6 Compatibilte Unik_PC vpn 
# 23/12/2010 - BEA - G3R1 lot4 Verification/Correction des variables (constantes, entiers, pointeurs)
# 29/02/2012 - JLG -G3R6 QC1005 modif alarme retour aiguillage
# 02/07/2014 - JLG -G5R1 QC1405, champ eec du DPV si g_ieec > 500
# 13/08/14 RHE G5R2 lot2 elimination des errones CMM, ne pas generer de V3t2 si tous les digits a 0
#####################################################################

# ftab_normal (table d'indices des automates) :

















####################

############################################################################
# Allocation memoire
############################################################################


pt_1_660004652		= "1111111111111111111111111111111111111111111111111111111111111111111111111"
pt_2_660004652		= "2222222222222222222222222222222222222222222222222222222222222222222222222"
# bien long pour un seul octet
i_strcpy(pt_2_660004652,"")

pt_deb_660004652		= "5555555555555555555555555555555555555555555555555555555555555555555555555"
# pt_deb a besoin de 2 octets seulement
i_strcpy(pt_deb_660004652,"")
ptr_locationNb_660004652 = "ptr_locationNb88888888888888888888888888888888888"
i_strcpy(ptr_locationNb_660004652,"")
ptr_LocUnikPC_660004652 = "ptr_LocUnikPC66666666666666666666666666666666666666666666666666666666666666666666"
i_strcpy(ptr_LocUnikPC_660004652,"")

EFFICACE_660004652 =1
type_660004652 = 0
Appel_Talk_Now_660004652 = 0






trace("[Tvpn40_dis] =========== debut Pcode DISTRIBUTION  =============")
# erreur = i_fdump_art(g_iartin)


##################################################################################
# Identification de la provenance de l'article
# flag_rdt : nb de passage en redistribution (lecture de l'enveloppe obligatoire)
##################################################################################
flag_rdt_660004652 = -1
flag_rdt_660004652 = i_LireRedistCpt()

SI (flag_rdt_660004652 == 0)
ALORS
	erreur_660004652 = i_add_opt( "E_Redistri2" )
FINSI
erreur_660004652 = i_set_attr_val_n( $E_Redistri2::EnvoiRedis, 0)


########################################################
# FE_0028 comptabilisation des CRAs issus de la redistribution
date_fin_660004652=i_get_art_field(g_iartin,$Tvpn40::dfin)
erreur_660004652= i_incr_redist_dist_660004265(date_fin_660004652)


############################################################################
# Variables fonctionnelles
############################################################################


########### Date_Audit
date_audit_gmt_660004652 = i_date_audit()
date_audit_660004652 = i_DHgetLocalTime(NUMTAB_660004652, 7, date_audit_gmt_660004652)
trace1("[Tvpn40_dis]   date_audit=0x%x",date_audit_660004652)

########### CallType
calltype_660004652 = 0
calltype_660004652 = i_get_art_field(g_iartin, $Tvpn40::CallType)

########### ICAR_ABS
date_660004652 =i_get_art_field(g_iartin,$Tvpn40::DATE)
ICAR_ABS_660004652 =i_date_platine(g_ieec,g_iartin,date_660004652)


########### VlrNb33
# La variable VlrNb33 peut prendre 3 valeurs
# -1 : VlrNb absent
# 0  : VlrNb present et ne commence pas par 33
# 1  : VlrNb present et commence par 33 
SI i_valid_field_n(g_iartin,$Tvpn40::VlrNb)
ALORS
	SI (g_iartin.VlrNb[0] == 3) && (g_iartin.VlrNb[1] == 3)
	ALORS
		VlrNb33_660004652 = 1
	SINON
		VlrNb33_660004652 = 0
	FINSI
SINON
	VlrNb33_660004652 = -1
FINSI


########### Autres variables
SI (i_valid_field_n(g_iartin, $Tvpn40::AdrTransNb))
ALORS
	adrtransnb_660004652 = i_get_art_field(g_iartin, $Tvpn40::AdrTransNb)
SINON
	adrtransnb_660004652 = -1
FINSI

adrcallednb_660004652 = i_get_art_field(g_iartin, $Tvpn40::AdrCalledNb)



#############################################
# Creation article Conv_URS (g_iartout9) #
# Sera utile pour VPN		       #
#############################################
erreur_660004652 = i_cree_art("Conv_URS",g_iartout9)


#############################################
# Suppression champ du T3ace avant dupplication
# Sera utile pour SecondaryMSISDN
#############################################
#SI (!i_valid_field_n(g_iartin, $Tvpn40::AddCallingNb))
#ALORS
#	erreur = i_supprChamp(g_iartin, "T4Sdmsisdn")
#	trace("[Tvpn40_dis] Suppression du T4Sdmsisdn ")
#FINSI


############################################################################
# Duplication Tdpv33 (g_iartout)
############################################################################
#Duplication article d entree vers DPV TLV

	SI (i_dup_art_tab( g_iartin, g_iartout, C_Tdpv_660004652))
	ALORS
		trace("ERREUR de duplication")
		code_errone_660004652 = 0xA0D0
		code_errone_660004652 = code_errone_660004652 + EFFICACE_660004652
		erreur_660004652 = i_PlvMessEmettre(6103,2,g_iartin,"",3,code_errone_660004652,C_Tdpv_660004652,0)
		SAUT DISTRI_ERR
	FINSI

#############################
# PORTABILITE
#############################

# realise para la fonction de distri


#############################
# PRE-VALORISATION
#############################
# neant

#############################
# NORMALISATION et TRONCATURE
#############################

############################################################################
# Mises au format DPV33, FO 1582
############################################################################

TYPE_OC_660004652 = 0
TYPE_TC_660004652 = 0
TYPE_FCC_660004652 = 0
TYPE_FCI_660004652 = 0
TYPE_FC_660004652 = 0
TYPE_IWC_660004652 = 0
TYPE_RCF_660004652 = 0
TYPE_VN_660004652 = 0

#G1R6
#GIR6 lot 3 VPN S7F3.doc retrait de (calltype == 0x3F)
#G1R8 lot 2 ajout 37 et 3D
SI calltype_660004652 == 0x01 || calltype_660004652 == 0x06 || calltype_660004652 == 0x07 || calltype_660004652 == 0x0A || calltype_660004652 == 0x19 || calltype_660004652 == 0x3B || calltype_660004652 == 0x3C || calltype_660004652 == 0x3E || calltype_660004652 == 0x37 || calltype_660004652 == 0x3D
ALORS
	TYPE_OC_660004652 = 1
FINSI

SI calltype_660004652 == 0x10
ALORS
	TYPE_TC_660004652 = 1
FINSI

typrout_660004652 = i_get_art_field(g_iartin, $Tvpn40::TypeRout)

SI calltype_660004652 == 0x14
ALORS
	SI typrout_660004652 == 0x08 || typrout_660004652 == 0x02
	ALORS
		TYPE_FCC_660004652 = 1
	SINON
		SI typrout_660004652 == 0x07
		ALORS
			TYPE_FCI_660004652 = 1
		FINSI
	FINSI
FINSI

SI TYPE_FCI_660004652 || TYPE_FCC_660004652
ALORS
	TYPE_FC_660004652 = 1
FINSI

SI calltype_660004652 == 0x0F
ALORS
	TYPE_IWC_660004652 = 1
FINSI

SI calltype_660004652 == 0x1A
ALORS
	TYPE_RCF_660004652 = 1
FINSI
#G1R6 lot 3 VPN S7F3.doc
SI calltype_660004652 == 0x3F
ALORS
	TYPE_VN_660004652 = 1
FINSI

trace("[Tvpn40_dis] Modif des champs Tdpvgsm")

########################## Modif des champs #############################

############ V3t1.1 type
# G1R6 lot 3 VPN S7F3.doc (TYPE_VN)
SI TYPE_OC_660004652 || TYPE_VN_660004652
ALORS
	type_660004652 = 0x00
SINON
	SI TYPE_IWC_660004652 || TYPE_TC_660004652
	ALORS
		type_660004652 = 0x01
	SINON
		SI TYPE_FCC_660004652 || TYPE_RCF_660004652
		ALORS
			type_660004652 = 0x02
		SINON
			SI TYPE_FCI_660004652
			ALORS
				type_660004652 = 0x06
			FINSI
		FINSI
	FINSI
FINSI
erreur_660004652 = i_set_art_field(g_iartout, $Tdpvgsm::type,type_660004652)


############ V3t1.2 tentite :  MSET :00:1

############ V3t1.3 idemet (1VAL:ax_idemet)

############ V3t1.4 IMSI (calculer plus bas)


############ V3t4 MSISDN (mis avant pour calculer V3t1.4)
#MSISDN		:-      :E      :NORM :msisdn:-:0

############ V3t1.4 IMSI
i_strcpy(pt_1_660004652," ")
erreur_660004652 = i_get_art_str(g_iartout, $Tdpvgsm::MSISDN, pt_1_660004652)

#G1R8 QC220 : suppression   dans la condition de TYPE_OC &&
#G2R1 lot3 tranche Z = 7

SI (i_strplcmp(pt_1_660004652, "33", 0, 2) == 0 && i_strplcmp(pt_1_660004652, "6", 2, 1) != 0 && i_strplcmp(pt_1_660004652, "7", 2, 1) != 0)
ALORS
	car_660004652=0x7
SINON
	car_660004652=0x9
FINSI

longueur_660004652 = g_iartout.IMSI!NELEM - 1
index_660004652 = 0

POINT BOUCLE2
SI index_660004652 < longueur_660004652
ALORS
        g_iartout.IMSI[index_660004652]= car_660004652
        index_660004652 = index_660004652 + 1
        SAUT BOUCLE2
FINSI

g_iartout.IMSI[index_660004652]= 0xF

############ V3t1.5 DATE   1VAL :DATE
erreur_660004652 = i_set_art_field(g_iartout, $Tdpvgsm::DATE,ICAR_ABS_660004652)

############ V3t1.6 DUREE 


############ V3t1.7 svcsup =FF


############ V3t1.8 tlserv FO 1571
############ G1R7 : tlserv peut etre calcule en fonction du V4t11.3 (optionnel)
############        on met a jour ce champ plus loin dans le code apres le calcul du V4t11.3



############ V3t1.9 support1
SI TYPE_OC_660004652 || TYPE_IWC_660004652 || TYPE_TC_660004652
ALORS
	erreur_660004652 = i_set_art_field(g_iartout, $Tdpvgsm::support1,0x00)
FINSI


############ V3t1.10 systype=00

############ V3t1.12 origine FO 1579
erreur_660004652 = i_get_art_str(g_iartout, $Tdpvgsm::MSISDN, pt_1_660004652)
i_get_sub_str(pt_1_660004652, 0, 1, pt_deb_660004652)
i_get_sub_str(pt_1_660004652, 2, 2, pt_2_660004652)

SI TYPE_OC_660004652 && (i_strcmp("33", pt_deb_660004652) == 0) && ((i_strcmp("1", pt_2_660004652) == 0) || (i_strcmp("2", pt_2_660004652) == 0) || (i_strcmp("3", pt_2_660004652) == 0) || (i_strcmp("4", pt_2_660004652) == 0) || (i_strcmp("5", pt_2_660004652) == 0))
ALORS
	erreur_660004652 = i_set_art_field(g_iartout, $Tdpvgsm::origine,0x02)
SINON
	SI i_valid_field_n(g_iartin, $Tvpn40::LocationInd)
	ALORS
		locationind_660004652 = i_get_art_field(g_iartin, $Tvpn40::LocationInd)
		SI locationind_660004652 == 0x00
		ALORS
			erreur_660004652 = i_set_art_field(g_iartout, $Tdpvgsm::origine,0x00)
		SINON
			SI locationind_660004652 == 0x02
			ALORS
				erreur_660004652 = i_set_art_field(g_iartout, $Tdpvgsm::origine,0x01)
			FINSI
		FINSI
	SINON
		erreur_660004652 = i_set_art_field(g_iartout, $Tdpvgsm::origine,0x00)
	FINSI
FINSI

############ V3T1.13 =00

############ V3T1.14 =00

############ V3T1.15 =01

#FO375 G3R0CcME 11/12/2006
SI type_660004652 == 0x01
   ALORS 
         erreur_660004652 = i_set_art_field(g_iartout,$Tdpvgsm::nbUT, 00000000)
SINON
#FO375 G3R0CcME 11/12/2006

# G3R0CbME FO 239
NB_UT_660004652 = preval_ut_660004265(g_iartout)

      SI (NB_UT_660004652 == -1 )
      ALORS
	         erreur_660004652 = i_stocke_art(g_iartin,0,PT_ERRONE,0)
	         trace("Fin traitement: erreur prevalorisation")
	    RETOUR TRAIT_OK
      SINON
	         SI (NB_UT_660004652 == -2 )
	         ALORS
		            trace("pas de prevalorisation : retour preval == -2")
	         SINON
		            trace1("Prevalorisation OK avec valeur : %d", NB_UT_660004652)
		            erreur_660004652 = i_set_art_field(g_iartout,$Tdpvgsm::nbUT, NB_UT_660004652)
	         FINSI
      FINSI
FINSI
############ V3T1.17 =FFFF

############ V3T1.18 portabilite
# realise par la fonction de distri

############ V3t2 idpart	:-      :-      :1VAL :idpartNorm
############ V3t3 local		:-      :-      :1VAL :localNorm
############ V3t4 MSISDN 	:-      :-      :1VAL :msisdnNorm

#G2R6 UnikPC
############ V3t6
SI (i_valid_field_n(g_iartin, $Tvpn40::LocationNb))
ALORS
	erreur_660004652 = i_get_art_str(g_iartin,$Tvpn40::LocationNb, ptr_locationNb_660004652)
	erreur_660004652 = i_format_str2 (ptr_LocUnikPC_660004652,"%s%s","Location_UnikPC_",ptr_locationNb_660004652)
	
	SI ( i_strcmp( i_get_tab_field("VariableContexte", ICAR_ABS_660004652, ptr_LocUnikPC_660004652),"Tous") == 0 )
	ALORS
		erreur_660004652=i_ajoutChamp(g_iartout,"T3t6","portOrigNet",0x01)
		erreur_660004652 = i_dup_chp_1val(g_iartin, g_iartout, $Tvpn40::LocationNb, $Tdpvgsm::portOrigNet)	
	FINSI
FINSI

#G2R6 UnikPC fin
############ V4t11.2 lstSVCIN plus bas


############ V4t11.3 SCPIN
# QC490
SI (VlrNb33_660004652 == 0)
ALORS
	erreur_660004652 = i_ajoutChamp(g_iartout, "T4t11.3","SCPIN",0)
	erreur_660004652 = i_cree_art("Conversion",g_iartout10)
	SI (i_valid_field_n(g_iartin, $Tvpn40::TransNb))
	ALORS
		erreur_660004652 = i_dup_chp_1val(g_iartin, g_iartout9, $Tvpn40::TransNb, $Conv_URS::NOS1_NUM)
		erreur_660004652 = i_set_art_field(g_iartout9, $Conv_URS::NOS1_INF, adrtransnb_660004652)
		erreur_660004652 = i_dup_chp_rnisGSM(g_iartout9, g_iartout10,$Conv_URS::NOS1,$Conversion::NDR,-$NORM:CMM_TRANS,0)
	SINON
		erreur_660004652 = i_dup_chp_1val(g_iartin, g_iartout9, $Tvpn40::CalledNb, $Conv_URS::NOS1_NUM)
		erreur_660004652 = i_set_art_field(g_iartout9, $Conv_URS::NOS1_INF, adrcallednb_660004652)
		erreur_660004652 = i_dup_chp_rnisGSM(g_iartout9, g_iartout10,$Conv_URS::NOS1,$Conversion::NDR,-$NORM:CMM_NDE,0)
	FINSI
	longueur_660004652 = i_get_art_field(g_iartout10, $Conversion::NDR - 1)
	SI (longueur_660004652 > 19)
	ALORS
		longueur_660004652 = 19
	FINSI
	erreur_660004652 = i_resize_tlv(g_iartout,"T4t11.3","SCPIN", longueur_660004652 * 8 )
	erreur_660004652 = i_memcpy_art_field_n(g_iartout, $Tdpvgsm::SCPIN, i_get_art_fieldptr(g_iartout10, $Conversion::NDR), longueur_660004652)
FINSI

############ V3t1.8 tlserv FO 1571
############ G1R7 : tlserv peut etre calcule en fonction du V4t11.3 (optionnel)
############        la MAJ de tlserv doit etre realisee ICI


########### Appel_Talk_Now
SI (i_valid_field_n(g_iartin, $Tvpn40::AdrTransNb)) && (i_valid_field_n(g_iartin, $Tvpn40::TransNb))
ALORS
	SI ((i_get_art_field(g_iartin, $Tvpn40::AdrTransNb) == 0x02)
	&& ((g_iartin.TransNb[0] == 6) && (g_iartin.TransNb[1] == 0))
	&& (type_660004652 == 0x00))
	ALORS
		Appel_Talk_Now_660004652 = 1
	FINSI
FINSI

SI (TYPE_FC_660004652 == 1) && (VlrNb33_660004652 == 0)
ALORS
	erreur_660004652 = i_get_art_str(g_iartout, $Tdpvgsm::SCPIN, pt_1_660004652)
        #G2R3 QC425 modification interrogation table FILTRE_DISE_LOC
	#SI (i_get_tab_field("FILTRE_DISE_LOC", date, pt_1) != g_inull)
	SI ( table_exp_reg_660004265(pt_1_660004652,"FILTRE_DISE_LOC",date_660004652) == 1)
	ALORS
		charactcall_660004652 = 0x03
	SINON
		charactcall_660004652 = 0x04
	FINSI
	SAUT FIN_CH1
FINSI

SI (Appel_Talk_Now_660004652 == 1)
ALORS
	charactcall_660004652 = 0x32
SINON
	charactcall_660004652 = i_get_art_field(g_iartin, $Tvpn40::CharactCall)
	SI charactcall_660004652 == 0x00
	ALORS
		charactcall_660004652 = 0x18
	SINON
		SI charactcall_660004652 == 0x01
		ALORS
			charactcall_660004652 = 0x11
		SINON
			SI charactcall_660004652 == 0x02
			ALORS
				charactcall_660004652 = 0x17
			SINON
				SI charactcall_660004652 == 0x10
				ALORS
					charactcall_660004652 = 0x19
				SINON
					SI charactcall_660004652 == 0x20
					ALORS
						charactcall_660004652 = 0x1A
					SINON
						SI charactcall_660004652 == 0x11
						ALORS
							charactcall_660004652 = 0x1B
						SINON
							SI charactcall_660004652 == 0x21
							ALORS
								charactcall_660004652 = 0x1C
							SINON
								SI charactcall_660004652 == 0x12
								ALORS
									charactcall_660004652 = 0x1D
								SINON
									SI charactcall_660004652 == 0x30
									ALORS
										charactcall_660004652 = 0x1E
									SINON
										SI charactcall_660004652 == 0x40
										ALORS
											charactcall_660004652 = 0x1F
										FINSI
									FINSI
								FINSI
							FINSI
						FINSI
					FINSI
				FINSI
			FINSI
		FINSI
	FINSI
FINSI

POINT FIN_CH1
erreur_660004652 = i_set_art_field(g_iartout, $Tdpvgsm::tlserv,charactcall_660004652)



############ V4t18.4 C_DestNum1
SI (VlrNb33_660004652 == 0)
ALORS
	erreur_660004652 = i_ajoutChamp(g_iartout, "T4t18.4","C_DestNum1",0)
	SI (i_valid_field_n(g_iartin, $Tvpn40::TransNb))
	ALORS
		erreur_660004652 = i_dup_chp_1val(g_iartin, g_iartout9, $Tvpn40::TransNb, $Conv_URS::NOS1_NUM)
		erreur_660004652 = i_set_art_field(g_iartout9, $Conv_URS::NOS1_INF, adrtransnb_660004652)
		erreur_660004652 = i_dup_chp_rnisGSM(g_iartout9, g_iartout,$Conv_URS::NOS1,$Tdpvgsm::C_DestNum1,-$NORM:CMM_TRANS,0)
	SINON
		erreur_660004652 = i_dup_chp_1val(g_iartin, g_iartout9, $Tvpn40::CalledNb, $Conv_URS::NOS1_NUM)
		erreur_660004652 = i_set_art_field(g_iartout9, $Conv_URS::NOS1_INF, adrcallednb_660004652)
		erreur_660004652 = i_dup_chp_rnisGSM(g_iartout9, g_iartout,$Conv_URS::NOS1,$Tdpvgsm::C_DestNum1,-$NORM:CMM_NDE,0)
	FINSI
FINSI


############ V4t18.5.1
SI (VlrNb33_660004652 == 0)
ALORS
	erreur_660004652 = i_set_art_field(g_iartout, $Tdpvgsm::C_Key1,0x37)
SINON
	erreur_660004652 = i_supprChamp(g_iartout,"T4t18.5")
FINSI 


############ V4T30.1 date audit
erreur_660004652 = i_set_art_field(g_iartout, $Tdpvgsm::timeInCE,date_audit_660004652)


############ V4T30.2 EEC
# QC1405
SI (g_ieec > 500)
ALORS
  erreur_660004652 = i_set_art_field(g_iartout, $Tdpvgsm::eec, g_ieec - 500)
SINON
  erreur_660004652 = i_set_art_field(g_iartout, $Tdpvgsm::eec, g_ieec)
FINSI
#/QC1405

############ T3t36 secondaryMSISDN	:-	:-	:1VAL :SdmsisdnNorm

############ G1R6: T4t43.3 transactionDesc	:-	:-	:1VAL :CorrelId
############ G1R6: T4t47.1 onlinePurUsFlag	:-	:-	:1VAL :CallType
############ G1R6: T4t48.4 carriedVolume	:-	:-	:1VAL :IMPayLdSize

############ V4T52.1 CallingLocation    :-	:-	:1VAL :MobCallerLoc
############ V4T52.2 calledLocation	:-	:-	:1VAL :MobCalledLoc

############ T4t53.1 callingGrpID	:-	:-	:1VAL :GroupId
SI (i_valid_field_n(g_iartin, $Tvpn40::GroupId))
ALORS
	index_660004652=0
	index1_660004652=0
	longueur_660004652 = i_get_art_fieldlength(g_iartin, $Tvpn40::GroupId)
	POINT BOUCLEGID
	SI g_iartin.GroupId[index_660004652]==0 && longueur_660004652 > 0
	ALORS
		index_660004652=index_660004652+1
		longueur_660004652= longueur_660004652 - 1
		SAUT BOUCLEGID
	SINON
		POINT BOUCLEGIDVAL
		SI longueur_660004652 > 0
		ALORS
			g_iartout.callingGrpID[index1_660004652]=g_iartin.GroupId[index_660004652]
			index1_660004652=index1_660004652+1
			index_660004652=index_660004652+1
			longueur_660004652= longueur_660004652 - 1
			SAUT BOUCLEGIDVAL
		SINON
			POINT BOUCLEGIDFIN
			SI index1_660004652 < 8
			ALORS
				g_iartout.callingGrpID[index1_660004652]= 0xF
				index1_660004652=index1_660004652 +1
				SAUT BOUCLEGIDFIN
			FINSI
		FINSI
	FINSI
# G3R0CbME FO 233
SINON
	erreur_660004652 = i_supprChamp(g_iartout, "T4t53.1")
FINSI


############ T4t53.2 callingSiteID	:-	:-	:1VAL :SiteId

############ T4t53.3 calledGrpID	:-	:-	:1VAL :CalledGroupNb
SI (i_valid_field_n(g_iartin, $Tvpn40::CalledGroupNb))
ALORS
	index_660004652=0
	index1_660004652=0
	longueur_660004652 = i_get_art_fieldlength(g_iartin, $Tvpn40::CalledGroupNb)
	POINT BOUCLEGND
	SI g_iartin.CalledGroupNb[index_660004652]==0 && longueur_660004652 > 0
	ALORS
		index_660004652=index_660004652+1
		longueur_660004652= longueur_660004652 - 1
		SAUT BOUCLEGND
	SINON
		POINT BOUCLEGNDVAL
		SI longueur_660004652 > 0
		ALORS
			g_iartout.calledGrpID[index1_660004652]=g_iartin.CalledGroupNb[index_660004652]
			index1_660004652=index1_660004652+1
			index_660004652=index_660004652+1
			longueur_660004652= longueur_660004652 - 1
			SAUT BOUCLEGNDVAL
		SINON
			POINT BOUCLEGNDFIN
			SI index1_660004652 < 8
			ALORS
				g_iartout.calledGrpID[index1_660004652]= 0xF
				index1_660004652=index1_660004652 +1
				SAUT BOUCLEGNDFIN
			FINSI
		FINSI
	FINSI
# G3R0CbME FO 233
SINON
	erreur_660004652 = i_supprChamp(g_iartout, "T4t53.3")
FINSI



############ T4t53.4 calledSiteID	:-	:-	:1VAL :CalledSiteId



############ V3t2 idpart  erreur = i_dup_chp_1val(AO1, AO2, NUM1, NUM2) 
#idpart		:-      :E      :NORM :idpart:-:0

############ V3t3 local FO 1580 local		:-      :-      :1VAL :localNorm:-:0

############ V3t11.2 lstSVCIN
SI (VlrNb33_660004652 == 0)
ALORS
	charactcall_660004652 = 0x37
	SAUT FIN_CH
FINSI

charactcall_660004652 = i_get_art_field(g_iartin, $Tvpn40::CharactCall)
SI charactcall_660004652 == 0x00
ALORS
	charactcall_660004652 = 0x22
	SAUT FIN_CH
FINSI
SI charactcall_660004652 == 0x01
ALORS
	charactcall_660004652 = 0x21
	SAUT FIN_CH
FINSI
SI charactcall_660004652 == 0x02
ALORS
	charactcall_660004652 = 0x20
	SAUT FIN_CH
FINSI
SI charactcall_660004652 == 0x10
ALORS
	charactcall_660004652 = 0x23
	SAUT FIN_CH
FINSI
SI charactcall_660004652 == 0x20
ALORS
	charactcall_660004652 = 0x24
	SAUT FIN_CH
FINSI
SI charactcall_660004652 == 0x11
ALORS
	charactcall_660004652 = 0x25
	SAUT FIN_CH
FINSI
SI charactcall_660004652 == 0x21
ALORS
	charactcall_660004652 = 0x26
	SAUT FIN_CH
FINSI
SI charactcall_660004652 == 0x12
ALORS
	charactcall_660004652 = 0x27
	SAUT FIN_CH
FINSI
SI charactcall_660004652 == 0x30
ALORS
	charactcall_660004652 = 0x28
	SAUT FIN_CH
FINSI
SI charactcall_660004652 == 0x40
ALORS
	charactcall_660004652 = 0x29
FINSI

POINT FIN_CH
g_iartout.lstSVCIN[0]= 0x0
g_iartout.lstSVCIN[1]= charactcall_660004652


############################################################################
# Elimines explicites en DIVERS 
############################################################################
# Neant

############################################################################
# Attente requete Table de Distribution
############################################################################
# !bREDIST signifie envoie et lecture requete OK
# bREDIST ==1 signifie Echec sur i_EnvoiReqConsTabDistDouble ou lecture requete impossible

#---------------------------------------------------------------------------
# DPV33
#---------------------------------------------------------------------------
# SAUT ECC_RJPGSM
#######################################
# Appel fonction distribution
#######################################

#G5R2 lot2 V3t2 idpart	: Ne pas generer si tous les digits sont a 0
SI i_valid_field_n(g_iartout, $Tdpvgsm::idpart)
	ALORS
	erreur_660004652 = i_get_art_str(g_iartout, $Tdpvgsm::idpart, pt_1_660004652)
	erreur_660004652 = i_adequation_chaine_expreg(pt_1_660004652, "^0*$")
	SI (erreur_660004652 == 0)
		ALORS
		erreur_660004652 = i_supprChamp(g_iartout,"T3t2")
	FINSI
FINSI

erreur_660004652 = aiguillage2_660004590 (g_iartin, g_iartout, DISTRIBUTION_INCONNU_660004652, Multidistribution_Non_660004652)
SI (erreur_660004652 == TRAI_KO_660004652)
ALORS
# QC1005
	trace("<<<__LINE__<<<__FILE__<<< Erreur retour fonction aiguillage2")
#	code_errone = 0xA0B0
#	code_errone = code_errone + EFFICACE
#	erreur = i_PlvMessEmettre(7500,2,g_iartin,"",3,code_errone,C_Article,type)
	SAUT DISTRI_ERR
FINSI
RETOUR TRAIT_OK


############################################################################
# Stockage en Errone
############################################################################
POINT DISTRI_ERR

trace( "Stockage en errone de distribution")
res_660004652 = i_make_art_rej(g_iartin, g_iartout8, 0)
res_660004652 = i_stocke_art( g_iartout8, 0, PT_ERRONE, 0)

RETOUR TRAIT_OK

#---------------------------------------FIN Tvpn40_dis.src-------------------
