DEFINITION SEUIL_780042446 3000
DEFINITION CPT_3G_780042446 1504  
DEFINITION MODULE_TRAIT_780042446 0x5000
DEFINITION ERR_SEM_780042446 0x040
DEFINITION ERR_DATE_780042446 0x060
DEFINITION ERR_SYNTAX_780042446 0x070
DEFINITION ERR_CROISE_780042446 0x0F0
REGISTRE ENTIER erreur_780042446
REGISTRE ENTIER nbPulse_780042446
REGISTRE ENTIER gsmBrSrv_780042446
REGISTRE ENTIER present_780042446
REGISTRE ENTIER IMSI_present_780042446
REGISTRE ENTIER MSISDN_present_780042446
REGISTRE ENTIER gsmTlSrv_780042446
REGISTRE ENTIER NumCpt_780042446
REGISTRE ENTIER code_rejet_780042446
REGISTRE ENTIER EFFICACE_780042446
REGISTRE ENTIER MODULE_780042446
REGISTRE ENTIER ERREUR_780042446
REGISTRE ENTIER val_duree_780042446
####################################################################
#	Torig_nss9_tr.src			Appel Sortant MET NSS9
####################################################################
#       article CRA MET ASN1 => type DPV TLV = 00
#
#	AE 25/08/05	Creation
# URS/RHE     : 27/08/2007 G1R5 : Test sur le champ DUREE <= 18 heures
# 18/01/11 - BEA - G3R1 lot4 Verification/Correction des variables (constantes, entiers, pointeurs)
####################################################################

# FE 54 ##
# /FE 54 ##


# FE 54 ##
# /FE 54 ##



# Initialisations
NumCpt_780042446 = 1501
# FE 54 ##
EFFICACE_780042446 = 1
MODULE_780042446 = MODULE_TRAIT_780042446
ERREUR_780042446 = 0
code_rejet_780042446 = 0
# /FE 54 ##
val_duree_780042446 = 0

trace("Torig_nss9 : Debut Traitement")
#####################################################################
# Controle syntaxique de l'article
#####################################################################

#
# Test de la prisence du champ DATE
#
present_780042446 = i_valid_field_n( g_iartin, $Torig_nss9::DATE)
SI (present_780042446 == 0) 
ALORS
	trace("Torig_nss9 : Le champ DATE n'est pas present dans l'article")
# FE 54 ##
	ERREUR_780042446 = ERR_SYNTAX_780042446
	code_rejet_780042446 = MODULE_780042446 + ERREUR_780042446 + EFFICACE_780042446
# /FE 54 ##
	erreur_780042446 = i_PlvMessEmettre(8300,2,g_iartin,"",2, code_rejet_780042446,"DATE",0)
	SAUT STOCKE_ERRONE
FINSI

erreur_780042446 = i_get_art_field(g_iartin,$Torig_nss9::DATE)
SI (erreur_780042446 == -1)
ALORS
	trace("Torig_nss9 : Le champ DATE n'a pas le bon format => ERRONE")
# FE 54 ##
	ERREUR_780042446 = ERR_DATE_780042446
	code_rejet_780042446 = MODULE_780042446 + ERREUR_780042446 + EFFICACE_780042446
# /FE 54 ##
	erreur_780042446 = i_PlvMessEmettre(8301,2,g_iartin,"",2, code_rejet_780042446,"DATE",0)
	SAUT STOCKE_ERRONE
FINSI

#
# Test de la prisence du champ heure
#
present_780042446 = i_valid_field_n( g_iartin, $Torig_nss9::Heure)
SI (present_780042446 == 0) 
ALORS
	trace("Torig_nss9 : Le champ heure n'est pas present dans l'article")
# FE 54 ##
	ERREUR_780042446 = ERR_SYNTAX_780042446
	code_rejet_780042446 = MODULE_780042446 + ERREUR_780042446 + EFFICACE_780042446
# /FE 54 ##
	erreur_780042446 = i_PlvMessEmettre(8300,2,g_iartin,"",2, code_rejet_780042446,"Heure",0)
	SAUT STOCKE_ERRONE
FINSI


#
# Test de la presence du champ DUREE

#val_duree = i_get_art_field(g_iartin, $Torig_nss9::DUREE)
#present = i_valid_field_n( g_iartin, $Torig_nss9::DUREE)
#SI (i_valid_field_n( g_iartin, $Torig_nss9::DUREE) == 0 || val_duree >= 0x0000FD20)
SI (i_valid_field_n( g_iartin, $Torig_nss9::DUREE) == 0)
ALORS
	#trace("Torig_nss9 : Le champ DUREE n'est pas present dans l'article ou est superieur ? 18 heures")
	trace("Torig_nss9 : Le champ DUREE n'est pas present dans l'article")
# FE 54 ##
	ERREUR_780042446 = ERR_SYNTAX_780042446
	code_rejet_780042446 = MODULE_780042446 + ERREUR_780042446 + EFFICACE_780042446
# /FE 54 ##
	erreur_780042446 = i_PlvMessEmettre(8300,2,g_iartin,"",2, code_rejet_780042446,"DUREE",0)
	SAUT STOCKE_ERRONE
FINSI

# G1R5 RHE --test si la duree >= 0x0000FD20 (18 H)
val_duree_780042446 = i_get_art_field(g_iartin, $Torig_nss9::DUREE)
SI (val_duree_780042446 >= 0x0000FD20)
ALORS
     trace ("Torig_nss9 : Le champ DUREE est superieur a 18h")
     ERREUR_780042446 = ERR_SYNTAX_780042446
     code_rejet_780042446 = MODULE_780042446 + ERREUR_780042446 + EFFICACE_780042446
     erreur_780042446 = i_PlvMessEmettre(8303,2,g_iartin,"",3,code_rejet_780042446,"DUREE","18h")
     SAUT STOCKE_ERRONE
FINSI

#G1R5 RHE fin -  test si la duree >= 0x0000FD20   
     

#
# Test syntaxique champ "localisation" (cellId1st)
#

#
# Test de la prisence du champ 1stCallingLocIf
#
present_780042446 = i_valid_field_n( g_iartin, $Torig_nss9::1stCallingLocIf)
SI (present_780042446 == 0) 
ALORS
	trace("Torig_nss9 : Le champ 1stCallingLocIf n'est pas present dans l'article")
# FE 54 ##
	ERREUR_780042446 = ERR_SYNTAX_780042446
	code_rejet_780042446 = MODULE_780042446 + ERREUR_780042446 + EFFICACE_780042446
# /FE 54 ##
	erreur_780042446 = i_PlvMessEmettre(8300,2,g_iartin,"",2, code_rejet_780042446,"1stCallingLocIf",0)
	SAUT STOCKE_ERRONE
FINSI

erreur_780042446 = i_test_field_ila_n(g_iartin,$Torig_nss9::1stCallingLocIf,"Lmap")
SI (erreur_780042446 != 0)
ALORS
	trace("Torig_nss9 : Erreur champ localisation format MAP")
# FE 54 ##
	ERREUR_780042446 = ERR_SYNTAX_780042446
	code_rejet_780042446 = MODULE_780042446 + ERREUR_780042446 + EFFICACE_780042446
# /FE 54 ##
	erreur_780042446 = i_PlvMessEmettre(8302,2,g_iartin,"",3, code_rejet_780042446,"1stCallingLocIf","Lmap")
	SAUT STOCKE_ERRONE
FINSI

#
# Test syntaxique champ "nbPulse" si present
#

nbPulse_780042446 = i_get_art_field(g_iartin,$Torig_nss9::numberOfMrPulse)
SI (nbPulse_780042446 > SEUIL_780042446)
ALORS
	trace1("Torig_nss9 : Cumul ITX=<%d> superieur a SEUIL",nbPulse_780042446)
# FE 54 ##
	ERREUR_780042446 = ERR_SEM_780042446
	code_rejet_780042446 = MODULE_780042446 + ERREUR_780042446 + EFFICACE_780042446
# /FE 54 ##
	erreur_780042446 = i_PlvMessEmettre(8303,2,g_iartin,"",3, code_rejet_780042446,"numberOfMrPulse","3000")
	SAUT STOCKE_ERRONE
FINSI

## OGA 309 : 1stRdioChnlUsed = 0 ou 1 sinon ERRONE
SI (i_valid_field_n(g_iartin, $Torig_nss9::1stRdioChnlUsed) == 1)
ALORS
	erreur_780042446 = i_get_art_field(g_iartin, $Torig_nss9::1stRdioChnlUsed)
	SI( (erreur_780042446 != 0) && (erreur_780042446 != 1) )
	ALORS
		trace1("Torig_nss9 : Erreur champ 1stRdioChnlUsed <%d>", erreur_780042446)
# FE 54 ##
		ERREUR_780042446 = ERR_SEM_780042446
		code_rejet_780042446 = MODULE_780042446 + ERREUR_780042446 + EFFICACE_780042446
# /FE 54 ##
		erreur_780042446 = i_PlvMessEmettre(8303,2,g_iartin,"",3, code_rejet_780042446,"1stRdioChnlUsed","1")
		SAUT STOCKE_ERRONE
	FINSI
FINSI
## /OGA 309

gsmTlSrv_780042446 = i_get_art_field(g_iartin,$Torig_nss9::teleServiceCode)

#	Si c'est un appel urgent
IMSI_present_780042446 =  i_valid_field_n(g_iartin,$Torig_nss9::IMSI)
SI (gsmTlSrv_780042446 == 0x12)
ALORS
	MSISDN_present_780042446 = i_valid_field_n(g_iartin,$Torig_nss9::callingNumber)
	SI ((!IMSI_present_780042446) && (!MSISDN_present_780042446))
	ALORS
#		SAUT TRAIT_APPEL_APPEL_URGENT_NO_SIM
		SAUT STOCK_OK	
	FINSI
FINSI

SI (!IMSI_present_780042446)
ALORS
	trace1("Torig_nss9 : Erreur article tlserv0x%x sans imsi",gsmTlSrv_780042446)
# FE 54 ##
	ERREUR_780042446 = ERR_CROISE_780042446
	code_rejet_780042446 = MODULE_780042446 + ERREUR_780042446 + EFFICACE_780042446
# /FE 54 ##
	erreur_780042446 = i_PlvMessEmettre(8304,2,g_iartin,"",2, code_rejet_780042446,gsmTlSrv_780042446,0)
	SAUT STOCKE_ERRONE
FINSI


#
# Test automatique du CRA (voir le fichier "artobj.asn1")
#

erreur_780042446 = i_test_art(g_iartin)
SI (erreur_780042446)
ALORS
	trace("Torig_nss9 : Test auto : article Torig_nss9 ERRONE")
# FE 54 ##
	ERREUR_780042446 = ERR_SYNTAX_780042446
	code_rejet_780042446 = MODULE_780042446 + ERREUR_780042446 + EFFICACE_780042446
# /FE 54 ##
	erreur_780042446 = i_PlvMessEmettre(8305,2,g_iartin,"",1, code_rejet_780042446,0,0)
	SAUT STOCKE_ERRONE
FINSI

#
# Test de la prience du champ exchangeIdent
#
present_780042446 = i_valid_field_n( g_iartin, $Torig_nss9::exchangeIdent)
SI (present_780042446 == 0) 
ALORS
	trace("Torig_nss9 : Le champ exchangeIdent n'est pas present dans l'article")
# FE 54 ##
	ERREUR_780042446 = ERR_SYNTAX_780042446
	code_rejet_780042446 = MODULE_780042446 + ERREUR_780042446 + EFFICACE_780042446
# /FE 54 ##
	erreur_780042446 = i_PlvMessEmettre(8300,2,g_iartin,"",2, code_rejet_780042446,"exchangeIdent",0)
	SAUT STOCKE_ERRONE
FINSI 

#
# Test de la prience du champ outgoingRoute
#
present_780042446 = i_valid_field_n( g_iartin, $Torig_nss9::outgoingRoute)
SI (present_780042446 == 0) 
ALORS
	trace("Torig_nss9 : Le champ outgoingRoute n'est pas present dans l'article")
# FE 54 ##
	ERREUR_780042446 = ERR_SYNTAX_780042446
	code_rejet_780042446 = MODULE_780042446 + ERREUR_780042446 + EFFICACE_780042446
# /FE 54 ##
	erreur_780042446 = i_PlvMessEmettre(8300,2,g_iartin,"",2, code_rejet_780042446,"outgoingRoute",0)
	SAUT STOCKE_ERRONE
FINSI

#####################################################################
# Controle semantique de l'article
#####################################################################

#
# Retraitement de tlserv et svcsup. Si tlserv et svcsup sont 
# renseignes => Erreur
#


SI ((gsmTlSrv_780042446 & 0xFF) != 0xFF)
ALORS
	gsmBrSrv_780042446 = i_get_art_field(g_iartin,$Torig_nss9::bearerSvcCode)
	SI ((gsmBrSrv_780042446 &0xFF)!= 0xFF)
	ALORS
		trace3("Torig_nss9 : Erreur gsmTlSrv=0x%x gsmBrSrv=0x%x", gsmTlSrv_780042446, gsmBrSrv_780042446,0)
# FE 54 ##
	ERREUR_780042446 = ERR_CROISE_780042446
	code_rejet_780042446 = MODULE_780042446 + ERREUR_780042446 + EFFICACE_780042446
# /FE 54 ##
		erreur_780042446 = i_PlvMessEmettre(8306,2,g_iartin,"",3, code_rejet_780042446,"teleServiceCode","bearerSvcCode")
		SAUT STOCKE_ERRONE
	FINSI
FINSI

## ano 3034 : TransparencyIndicator = 0 ou 1 sinon ERRONE
SI (i_valid_field_n(g_iartin, $Torig_nss9::transIndicator) == 1)
ALORS
	erreur_780042446 = i_get_art_field(g_iartin, $Torig_nss9::transIndicator)
	SI( (erreur_780042446 != 0) && (erreur_780042446 != 1) )
	ALORS
		trace("Torig_nss9 : Erreur champ transIndicator")
		ERREUR_780042446 = ERR_SEM_780042446
		code_rejet_780042446 = MODULE_780042446 + ERREUR_780042446 + EFFICACE_780042446
		erreur_780042446 = i_PlvMessEmettre(8303,2,g_iartin,"",3, code_rejet_780042446,"transIndicator","1")
		SAUT STOCKE_ERRONE
	FINSI
FINSI
## /ano 3034
## ano 3034 : disconnectParty = 0 ou 1 ou 2 sinon ERRONE
SI (i_valid_field_n(g_iartin, $Torig_nss9::disconnectParty) == 1)
ALORS
	erreur_780042446 = i_get_art_field(g_iartin, $Torig_nss9::disconnectParty)
	SI( (erreur_780042446 != 0) && (erreur_780042446 != 1) && (erreur_780042446 != 2) )
	ALORS
		trace("Torig_nss9 : Erreur champ disconnectParty")
		ERREUR_780042446 = ERR_SEM_780042446
		code_rejet_780042446 = MODULE_780042446 + ERREUR_780042446 + EFFICACE_780042446
		erreur_780042446 = i_PlvMessEmettre(8303,2,g_iartin,"",3, code_rejet_780042446,"disconnectParty","2")
		SAUT STOCKE_ERRONE
	FINSI
FINSI
## /ano 3034

#
# Fin de traitement  : Stockage en OK
#

POINT STOCK_OK
trace("Torig_nss9 : Fin traitement OK ")
erreur_780042446 = i_incr_cpt(NumCpt_780042446, 0x00, g_ieec, 0, i_DHgetLocalTime(4, 7, i_date_audit()), 1)

# ANO PVCS1887
# Incrementation du Compteur 3G si T3t27/rNCidOf1stRNC est present
SI(i_valid_field_n(g_iartin, $Torig_nss9::rNCidOf1stRNC) )
ALORS
       erreur_780042446=i_incr_cpt(CPT_3G_780042446, 0x00 , g_ieec , 0, i_DHgetLocalTime(4, 7, i_date_audit()), 1)
FINSI

# stockage de l article en OK
erreur_780042446 = i_stocke_art(g_iartin, 0, PT_OK, 0)
RETOUR TRAIT_OK


#
# Fin de traitement : Stockage en Erroni
#
POINT STOCKE_ERRONE
	trace( "Torig_nss9 : Stockage de l'article en ERRONE" )
# FE 54 ##
	erreur_780042446 = i_make_art_rej(g_iartin, g_iartout, code_rejet_780042446)
# /FE 54
	erreur_780042446 = i_stocke_art(g_iartout,	0, PT_ERRONE, 0)
	RETOUR TRAIT_OK
#--------------- Fin	Torig_nss9_tr.src --------------------
