DEFINITION SORTANT_780042416 0
DEFINITION ENTRANT_780042416 1
DEFINITION RENVOIM_780042416 2
DEFINITION REACH_780042416 4
DEFINITION RENVREA_780042416 5
DEFINITION RENVOIG_780042416 6
DEFINITION TRANSIT_780042416 8
DEFINITION MsgCrtS_780042416 13
DEFINITION MsgCrtE_780042416 14
DEFINITION seuil_cumulITX_780042416 3000
DEFINITION LG_SCPNB_MAX_780042416 9
DEFINITION LG_SCPADD_MAX_780042416 9
DEFINITION NB_CAMEL_MAX_780042416 2
DEFINITION LG_SVCKEY_780042416 4
DEFINITION LG_FCI_MAX_780042416 84
DEFINITION LG_SCI_MAX_780042416 114
DEFINITION LG_CRN_MAX_780042416 8
DEFINITION LG_MSCId_MAX_780042416 9
DEFINITION INCREMENT_780042416 1
DEFINITION CPT_780042416 1501
DEFINITION CPT_3G_780042416 1504
DEFINITION MODULE_TRAIT_780042416 0x5000
DEFINITION ERR_SEM_780042416 0x040
DEFINITION ERR_TAILLE_780042416 0x050
DEFINITION ERR_SYNTAX_780042416 0x070
DEFINITION ERR_CROISE_780042416 0x0F0
REGISTRE ENTIER val_type_780042416
REGISTRE ENTIER type_CRA_780042416
REGISTRE ENTIER val_tentite_780042416
REGISTRE ENTIER val_tlserv_780042416
REGISTRE ENTIER val_svcsup_780042416
REGISTRE ENTIER val_cumul_ITX_780042416
REGISTRE ENTIER val_indeff_780042416
REGISTRE ENTIER val_indtax_780042416
REGISTRE ENTIER val_tterm_780042416
REGISTRE ENTIER val_duree_780042416
REGISTRE ENTIER val_nbsvcIN_780042416
REGISTRE ENTIER lg_INserv_780042416
REGISTRE ENTIER taille_ISDN_780042416
REGISTRE ENTIER taille_780042416
REGISTRE ENTIER taille_idpart_780042416
REGISTRE ENTIER erreur_780042416
REGISTRE ENTIER erreur_tentite_780042416
REGISTRE ENTIER is_emergency_no_sim_780042416
REGISTRE ENTIER lg_camel_780042416
REGISTRE ENTIER lg_camel2_780042416
REGISTRE ENTIER lg_lastSCPNb_780042416
REGISTRE ENTIER nb_camel_780042416
REGISTRE ENTIER lg_numero_780042416
REGISTRE ENTIER C_servkey_780042416
REGISTRE ENTIER offset_IP1_780042416
REGISTRE ENTIER offset_IP2_780042416
REGISTRE ENTIER lg_CRNMSCId_780042416
REGISTRE ENTIER lg_CRN_780042416
REGISTRE ENTIER lg_MSCId_780042416
REGISTRE ENTIER IMSI_present_780042416
REGISTRE ENTIER X_780042416
REGISTRE ENTIER Y_780042416
REGISTRE ENTIER Z_780042416
REGISTRE ENTIER date_780042416
REGISTRE ENTIER code_rejet_780042416
REGISTRE ENTIER EFFICACE_780042416
REGISTRE ENTIER MODULE_780042416
REGISTRE ENTIER ERREUR_780042416
#########################################################################################
#    Article ALCATEL U1X -- Module de Traitement TcitR4.src
#
#    Creation 15/09/05 Par : MP
#########################################################################################
# Date : 09/03/2006
# Auteur : RAS
# FE_0007 : Nouvelle regles normalisation TON+NPI pour TRANSIT -> pas de test format RNIS
#           Troncature des numeros international TRANSIT -> Pas de test format RNIS
# URS/RHE     : 27/08/2007 G1R5 : Test sur le champ DUREE <= 18 heures
# 07/01/11 - BEA - G3R1 lot4 Verification/Correction des variables (constantes, entiers, pointeurs)
#########################################################################################
# Declaration des constantes




# FE 54 ##
# /FE 54 ##


# Declaration des variables





# FE 54 ##
# /FE 54 ##


trace("")
trace("**** TcitR4 : Module de traitement : Debut ****")

# Initialisation des variables
    is_emergency_no_sim_780042416 = 0
    val_type_780042416 = 0
    val_tentite_780042416 = 0
    val_tlserv_780042416 = 0
    val_svcsup_780042416 = 0
    val_tterm_780042416 = 0
    IMSI_present_780042416 = 0
    val_cumul_ITX_780042416 = 0
    val_indeff_780042416 = 0
    val_indtax_780042416 = 0
    lg_INserv_780042416 = 0
    taille_ISDN_780042416 = 0
    taille_780042416 = 0
    erreur_780042416 = 0
    erreur_tentite_780042416 = 0
# Initialisations
# FE 54 ##
	EFFICACE_780042416 = 1
	MODULE_780042416 = MODULE_TRAIT_780042416
	ERREUR_780042416 = 0
	code_rejet_780042416 = 0
# /FE 54 ##

#
# Tests syntaxiques
#
 # OGA-227  sauvegarde de l'article IN
   erreur_780042416= i_dup_art_id(g_iartin , g_iartout12)

####################################################################
# Message Court Entrant et Sortant
#####################################################################
    val_type_780042416 = i_get_art_field(g_iartin, $TcitR4::type)
    val_tlserv_780042416 = i_get_art_field(g_iartin,$TcitR4::tlserv)
    val_indeff_780042416 = i_get_art_field(g_iartin, $TcitR4::indeff)
    val_tterm_780042416 = i_get_art_field(g_iartin, $TcitR4::tterm)
    SI ((val_type_780042416 == 0) && (val_tlserv_780042416 == 0x22))
    ALORS
	trace("Message Court Sortant")
	type_CRA_780042416 = MsgCrtS_780042416
    FINSI
    SI ((val_type_780042416 == 1) && (val_tlserv_780042416 == 0x21))
    ALORS
	trace("Message Court Entrant")
	type_CRA_780042416 = MsgCrtE_780042416
    FINSI

    SI ((type_CRA_780042416 == MsgCrtS_780042416) || (type_CRA_780042416 == MsgCrtE_780042416))
    ALORS
# Detection des CRAs inefficaces => Elimines
	SI (val_indeff_780042416 != 0x00)
	ALORS
	    trace3("CRA inefficace : type <%d> tlserv <%d> indeff <%d>"	,val_type_780042416,val_tlserv_780042416,val_indeff_780042416)
	    SAUT STOCKE_ELIMINE
	FINSI
	SI (val_tterm_780042416 != 0x00)
	ALORS
	    trace3("CRA inefficace : type <%d> tlserv <%d> tterm <%d>",val_type_780042416,val_tlserv_780042416,val_tterm_780042416)
	    SAUT STOCKE_ELIMINE
	FINSI
	
##### TESTS SYNTAXIQUES #####
# Test automatique de l'article
	erreur_780042416 = i_test_art(g_iartin)
	SI (erreur_780042416)
	ALORS
	    trace("Test automatique: article errone")
	    ERREUR_780042416 = ERR_SYNTAX_780042416
	    code_rejet_780042416 = MODULE_780042416 + ERREUR_780042416 + EFFICACE_780042416
            erreur_780042416=i_PlvMessEmettre(8282, 2, g_iartout12, "", 1, code_rejet_780042416, 0, 0)
            SAUT STOCKE_ERRONE
	FINSI

# Test des ILAS significatifs
# idpart domaine d'ILA Lrnis
	taille_idpart_780042416 = i_get_art_field(g_iartin, $TcitR4::idpart-1)
	erreur_780042416 = i_test_field_ila_off_n(g_iartin,$TcitR4::idpart,"Lrnis",1)
	SI (erreur_780042416 != 0)
	ALORS
	    SI (((type_CRA_780042416 == MsgCrtS_780042416) &&
		(i_get_art_fieldtab(g_iartin, $TcitR4::IMSI, 4) == 1 ) &&
		(i_get_art_fieldtab(g_iartin, $TcitR4::IMSI, 3) == 0 ) &&
		(i_get_art_fieldtab(g_iartin, $TcitR4::IMSI, 2) == 8 ) &&
		(i_get_art_fieldtab(g_iartin, $TcitR4::IMSI, 1) == 0 ) &&
		(i_get_art_fieldtab(g_iartin, $TcitR4::IMSI, 0) == 2 )) 
		||(taille_idpart_780042416 == 0)
		||(type_CRA_780042416 == MsgCrtE_780042416))
	    ALORS
		trace("Erreur champ idpart format RNIS")
		ERREUR_780042416 = ERR_SYNTAX_780042416
		code_rejet_780042416 = MODULE_780042416 + ERREUR_780042416 + EFFICACE_780042416
		erreur_780042416=i_PlvMessEmettre(8273, 2, g_iartout12, "", 3, code_rejet_780042416, "idpart" ,"RNIS")
		SAUT STOCKE_ERRONE
	    FINSI
	FINSI

# local domaine d'ILA Lmap
	erreur_780042416 = i_test_field_ila_n(g_iartin,$TcitR4::local,"Lmap")
	SI (erreur_780042416 != 0)
	ALORS
	    trace("Erreur champ localisation format MAP")
	    ERREUR_780042416 = ERR_SYNTAX_780042416
	    code_rejet_780042416 = MODULE_780042416 + ERREUR_780042416 + EFFICACE_780042416
	    erreur_780042416=i_PlvMessEmettre(8273, 2, g_iartout12, "", 3, code_rejet_780042416, "local" ,"MAP")
	    SAUT STOCKE_ERRONE
	FINSI

##### TESTS SEMANTIQUES #####
# verifie que svcsup n'est pas renseigne
	val_svcsup_780042416 = i_get_art_field(g_iartin,$TcitR4::svcsup)
	SI (val_svcsup_780042416 != 0xff)
	ALORS
	    trace3("Erreur tlserv=0x%x svcsup=0x%x",val_tlserv_780042416,val_svcsup_780042416,0)
	    ERREUR_780042416 = ERR_CROISE_780042416
	    code_rejet_780042416 = MODULE_780042416 + ERREUR_780042416 + EFFICACE_780042416
	    erreur_780042416=i_PlvMessEmettre(8281, 2, g_iartout12, "", 3, code_rejet_780042416, val_tlserv_780042416, val_svcsup_780042416)
	    SAUT STOCKE_ERRONE
 	FINSI

# verifie la valeur du champ tentite
	val_tentite_780042416 =  i_get_art_field(g_iartin, $TcitR4::tentite)
	SI ( (val_tentite_780042416 < 0) || (val_tentite_780042416 > 3) )
	ALORS
	    trace3("Erreur valeur champ tentite=<%d> pour type=<%d>",val_tentite_780042416,val_type_780042416,0)
	    ERREUR_780042416 = ERR_CROISE_780042416
	    code_rejet_780042416 = MODULE_780042416 + ERREUR_780042416 + EFFICACE_780042416
	    erreur_780042416=i_PlvMessEmettre(8278, 2, g_iartout12, "", 3, code_rejet_780042416, val_type_780042416, val_tentite_780042416)
	    SAUT STOCKE_ERRONE
	FINSI

# Test de presence du champ IMSI
	IMSI_present_780042416 =  i_valid_field_n(g_iartin, $TcitR4::IMSI)
	SI (!IMSI_present_780042416)
	ALORS
	    trace1("Erreur article tlserv 0x%x sans IMSI",val_tlserv_780042416)
	    ERREUR_780042416 = ERR_CROISE_780042416
	    code_rejet_780042416 = MODULE_780042416 + ERREUR_780042416 + EFFICACE_780042416
	    erreur_780042416=i_PlvMessEmettre(8279, 2, g_iartout12, "", 3, code_rejet_780042416, val_type_780042416, val_tlserv_780042416)
	    SAUT STOCKE_ERRONE
	FINSI

# Test de la valeur du champ indtax (Valeurs possibles: 0, 1, 2 ou F)
	val_indtax_780042416 = i_get_art_field(g_iartin, $TcitR4::indtax)
	SI ( (val_indtax_780042416!=0) && (val_indtax_780042416 != 1) 
	    && (val_indtax_780042416 != 2) && (val_indtax_780042416 != 0xf) )
	ALORS
	    trace1("Mauvaise valeur de l'indicateur de taxabilite: <%d>",val_indtax_780042416)
	    ERREUR_780042416 = ERR_SEM_780042416
	    code_rejet_780042416 = MODULE_780042416 + ERREUR_780042416 + EFFICACE_780042416
	    erreur_780042416=i_PlvMessEmettre(8272, 2, g_iartout12, "", 3, code_rejet_780042416, val_indtax_780042416, "indtax")
	    SAUT STOCKE_ERRONE
	FINSI

	SAUT FIN_TRAITEMENT
    FINSI


####################################################################
# Test du champ Call type
#####################################################################

       val_type_780042416 = i_get_art_field(g_iartin, $TcitR4::type)
       SI ( (val_type_780042416 != SORTANT_780042416) && (val_type_780042416 != ENTRANT_780042416) && (val_type_780042416 != RENVOIM_780042416)
	    && (val_type_780042416 != REACH_780042416) && (val_type_780042416 != RENVREA_780042416) && (val_type_780042416 != RENVOIG_780042416)
	    && (val_type_780042416 != TRANSIT_780042416) )
       ALORS
				trace1("Erreur valeur du champ type=<%d>",val_type_780042416)
# FE 54 ##
				ERREUR_780042416 = ERR_SEM_780042416
				code_rejet_780042416 = MODULE_780042416 + ERREUR_780042416 + EFFICACE_780042416
# /FE 54 ##
				erreur_780042416=i_PlvMessEmettre(8272, 2, g_iartout12, "", 3, code_rejet_780042416, val_type_780042416,"type")
				SAUT STOCKE_ERRONE               
       FINSI

####################################################################
# Test syntaxique du champ indeff
####################################################################

	val_indeff_780042416 = i_get_art_field(g_iartin, $TcitR4::indeff)
	SI (val_indeff_780042416 != 0)
	ALORS
		trace1("Erreur valeur du champ indeff=<%d>",val_indeff_780042416)
# FE 54 ##
		ERREUR_780042416 = ERR_SEM_780042416
		code_rejet_780042416 = MODULE_780042416 + ERREUR_780042416 + EFFICACE_780042416
# /FE 54 ##
		erreur_780042416=i_PlvMessEmettre(8272, 2, g_iartout12, "", 3, code_rejet_780042416, val_indeff_780042416,"indeff")
    SAUT STOCKE_ERRONE
	FINSI

####################################################################
#   Test des ILAS significatifs
#	Champ idpart domaine d ILA Lidpart	
####################################################################
	SI( i_valid_field_n(g_iartin, $TcitR4::idpart) != 0 )
	ALORS
	  SI ((val_type_780042416 == SORTANT_780042416) && (i_get_art_fieldlength(g_iartin, $TcitR4::idpart) >2 ))
	  ALORS
			erreur_780042416 = i_test_field_ila_off_n(g_iartin,$TcitR4::idpart,"Lidpart",1)
			SI (erreur_780042416 != 0)
			ALORS
				trace("Erreur champ partenaire de communication")
# FE 54 ##
				ERREUR_780042416 = ERR_SYNTAX_780042416
				code_rejet_780042416 = MODULE_780042416 + ERREUR_780042416 + EFFICACE_780042416
# /FE 54 ##
				erreur_780042416=i_PlvMessEmettre(8273, 2, g_iartout12, "", 3, code_rejet_780042416, "idpart" ,"IDPART")
				SAUT STOCKE_ERRONE
			FINSI
	  FINSI
	FINSI

####################################################################
# Champ local domaine d ILA Lmap ou Lrnis (selon le type)
####################################################################

# Reorganisation du champ local
    erreur_780042416 = i_skip_f_in_field_n(g_iartin,$TcitR4::local)
    SI ( (val_type_780042416 == SORTANT_780042416) || (val_type_780042416 == ENTRANT_780042416) )
    ALORS
           erreur_780042416 = i_test_field_ila_n(g_iartin,$TcitR4::local,"Lmap")
	   SI (erreur_780042416 != 0)
	   ALORS
                  trace("Erreur champ localisation format MAP")
# FE 54 ##
									ERREUR_780042416 = ERR_SYNTAX_780042416
									code_rejet_780042416 = MODULE_780042416 + ERREUR_780042416 + EFFICACE_780042416
# /FE 54 ##
                  erreur_780042416=i_PlvMessEmettre(8273, 2, g_iartout12, "", 3, code_rejet_780042416, "local" ,"MAP")
                  SAUT STOCKE_ERRONE
	   FINSI
    SINON

# Cas des types REACH RENVREA RENVOIM RENVOIG et TRANSIT
# FE_0007 Normalisation A1 -> 33 pour le type TRANSIT 
#         Troncature des numeros avec TON+NPI=91 a partir du premir digit non numerique 
#         -> Pas de test du format RNIS du local

## OGA 260
# === les appels de type Reachemines avec CAMEL sont sans champ local
		lg_camel_780042416 = i_get_art_field(g_iartin, $TcitR4::camel-1)
		lg_camel2_780042416 = i_get_art_field(g_iartin, $TcitR4::camel2-1)
		SI (((lg_camel_780042416 > 0) || (lg_camel2_780042416 > 0)) && ( val_type_780042416 == REACH_780042416 ))
		ALORS
			SAUT NO_TEST_LOCAL
		FINSI
## /OGA 260

## OGA 260
#			SI( ( val_type == TRANSIT) && (i_get_art_field(g_iartin,$TcitR4::local-1)!=1)
#					|| ( val_type != TRANSIT ) || ( val_type != RENVREA ) )
		SI( val_type_780042416 != RENVREA_780042416 )
## /OGA 260
		ALORS
# ano 2743
			SI (i_get_art_field(g_iartin, $TcitR4::local-1) != 1)
# /ano 2743
			ALORS
				erreur_780042416 = i_test_field_ila_off_n(g_iartin,$TcitR4::local,"Lrnis",1)
				SI (erreur_780042416 != 0)
				ALORS
					trace("Erreur champ localisation format RNIS")
# FE 54 ##
					ERREUR_780042416 = ERR_SYNTAX_780042416
					code_rejet_780042416 = MODULE_780042416 + ERREUR_780042416 + EFFICACE_780042416
# /FE 54 ##
					erreur_780042416=i_PlvMessEmettre(8273, 2, g_iartout12, "", 3, code_rejet_780042416, "local" ,"RNIS (ou champ local absent)")
					SAUT STOCKE_ERRONE
				FINSI
			FINSI
		FINSI
	FINSI
## OGA 260
POINT NO_TEST_LOCAL
## /OGA 260

####################################################################
# Test syntaxique du champ Inserv
# Test de coherence entre la longueur du champ et les tailles
# Renseignees dans le champ
####################################################################

    SI ( (val_type_780042416 == SORTANT_780042416) || (val_type_780042416 == ENTRANT_780042416) || (val_type_780042416 == RENVOIM_780042416)
	 || (val_type_780042416 == REACH_780042416) || (val_type_780042416 == RENVREA_780042416) ) || (val_type_780042416 == RENVOIG_780042416)
    ALORS
            lg_INserv_780042416 = i_get_art_field(g_iartin, $TcitR4::INserv-1)
            SI ( lg_INserv_780042416 > 0 )
            ALORS
                    val_nbsvcIN_780042416 = i_get_art_fieldtab(g_iartin, $TcitR4::INserv, 0)
                    SI(val_nbsvcIN_780042416 == 0)
                    ALORS 
                           trace1("Erreur nb services IN :%d ",val_nbsvcIN_780042416)
# FE 54 ##
													ERREUR_780042416 = ERR_SEM_780042416
													code_rejet_780042416 = MODULE_780042416 + ERREUR_780042416 + EFFICACE_780042416
# /FE 54 ##
                           erreur_780042416=i_PlvMessEmettre(8272, 2, g_iartout12, "", 3, code_rejet_780042416,val_nbsvcIN_780042416, "nb services IN")
                           SAUT STOCKE_ERRONE
                    FINSI
                    taille_ISDN_780042416 = i_get_art_fieldtab(g_iartin, $TcitR4::INserv, 1 + (2 * val_nbsvcIN_780042416))
                    SI ( taille_ISDN_780042416 > 17 )
                    ALORS
                            trace1("Erreur : longueur ISDN  > %d", 17)
# FE 54 ##
														ERREUR_780042416 = ERR_TAILLE_780042416
														code_rejet_780042416 = MODULE_780042416 + ERREUR_780042416 + EFFICACE_780042416
# /FE 54 ##
                            erreur_780042416=i_PlvMessEmettre(8272, 2, g_iartout12, "", 3, code_rejet_780042416, taille_ISDN_780042416, "taille ISDN")
                            SAUT STOCKE_ERRONE
                    FINSI
                    SI ( taille_ISDN_780042416 < 0 )
                    ALORS
                            taille_780042416 = 1 + (2 * val_nbsvcIN_780042416)
                    SINON
                            taille_780042416 = 2 + (2 * val_nbsvcIN_780042416) + taille_ISDN_780042416
                    FINSI

# ATTENTION : Cas du TcitR4a !!! A VOIR
# Prise en compte des 2 octets des champs optionnels "nb of interventions" et "forwarding info"
                    SI ( ( lg_INserv_780042416 < taille_780042416 ) || ( lg_INserv_780042416 > taille_780042416 + 2))
                    ALORS
                            trace("Erreur champ complements de service")
# FE 54 ##
														ERREUR_780042416 = ERR_SEM_780042416
														code_rejet_780042416 = MODULE_780042416 + ERREUR_780042416 + EFFICACE_780042416
# /FE 54 ##
                            erreur_780042416=i_PlvMessEmettre(8274, 2, g_iartout12, "", 3, code_rejet_780042416, "INServ", lg_INserv_780042416)
                            SAUT STOCKE_ERRONE
                    FINSI
# ATTENTION : Cas du TcitR4b !!! A VOIR
                    SI ( lg_INserv_780042416 != taille_780042416 )
                    ALORS
                            trace("Erreur champ complements de service")
# FE 54 ##
														ERREUR_780042416 = ERR_SEM_780042416
														code_rejet_780042416 = MODULE_780042416 + ERREUR_780042416 + EFFICACE_780042416
# /FE 54 ##
                            erreur_780042416=i_PlvMessEmettre(8274, 2, g_iartout12, "", 3, code_rejet_780042416, lg_INserv_780042416 ,taille_780042416)
                            SAUT STOCKE_ERRONE
                    FINSI
            FINSI           
    FINSI

####################################################################
# Test semantique valeur du champ INserv
####################################################################

      SI ((lg_INserv_780042416 > 0) && (val_nbsvcIN_780042416 == 0))
      ALORS
              trace1("Erreur : Longueur INserv = %d et Nombre de services IN = 0",lg_INserv_780042416)
# FE 54 ##
							ERREUR_780042416 = ERR_TAILLE_780042416
							code_rejet_780042416 = MODULE_780042416 + ERREUR_780042416 + EFFICACE_780042416
# /FE 54 ##
              erreur_780042416=i_PlvMessEmettre(8272, 2, g_iartout12, "", 3, code_rejet_780042416,val_nbsvcIN_780042416, "nb services IN")
              SAUT STOCKE_ERRONE
      FINSI

####################################################################
# Test syntaxique de l article
# Si presence de 2 champs CAMEL --> Incoherence
####################################################################

      lg_camel_780042416 = i_get_art_field(g_iartin, $TcitR4::camel-1)
      lg_camel2_780042416 = i_get_art_field(g_iartin, $TcitR4::camel2-1)
      SI ( (lg_camel_780042416 > 0) && (lg_camel2_780042416 > 0) )
      ALORS
              trace("Syntaxe de l'article incorrecte : Presence de 2 champs CAMEL")
# FE 54 ##
							ERREUR_780042416 = ERR_CROISE_780042416
							code_rejet_780042416 = MODULE_780042416 + ERREUR_780042416 + EFFICACE_780042416
# /FE 54 ##
              erreur_780042416=i_PlvMessEmettre(8275, 2, g_iartout12, "", 3, code_rejet_780042416,"camel", "camel2")
              SAUT STOCKE_ERRONE
      FINSI

####################################################################
# Test syntaxique du champ Camel PHASE 1
####################################################################

      SI ( lg_camel_780042416 > 0 )
      ALORS
# Test de coherence du sous champ "Last Number Given By SCP"
              lg_lastSCPNb_780042416 = i_get_art_fieldtab(g_iartin, $TcitR4::camel, 0)
              SI ( lg_lastSCPNb_780042416 > LG_SCPNB_MAX_780042416 )
              ALORS
                      trace1("CAMEL: taille Last SCP Nb incorrecte :<%d>",lg_lastSCPNb_780042416)
# FE 54 ##
											ERREUR_780042416 = ERR_TAILLE_780042416
											code_rejet_780042416 = MODULE_780042416 + ERREUR_780042416 + EFFICACE_780042416
# /FE 54 ##
                      erreur_780042416=i_PlvMessEmettre(8276, 2, g_iartout12, "", 3, code_rejet_780042416,"Last number given by the SCP",lg_lastSCPNb_780042416)
                      SAUT STOCKE_ERRONE
              FINSI
              taille_780042416 = lg_lastSCPNb_780042416 + 1

# Test de coherence du sous champ "Number Of Invoked CAMEL Services"
              nb_camel_780042416 = i_get_art_fieldtab(g_iartin, $TcitR4::camel, taille_780042416)
              SI ( ( nb_camel_780042416 == 0 ) || ( nb_camel_780042416 > NB_CAMEL_MAX_780042416 ) )
	      ALORS
                      trace1("CAMEL: nombre de services Camel incorrect :<%d>",nb_camel_780042416)
# FE 54 ##
											ERREUR_780042416 = ERR_SEM_780042416
											code_rejet_780042416 = MODULE_780042416 + ERREUR_780042416 + EFFICACE_780042416
# /FE 54 ##
                      erreur_780042416=i_PlvMessEmettre(8277, 2, g_iartout12, "", 3, code_rejet_780042416, "Camel1" ,nb_camel_780042416)
                      SAUT STOCKE_ERRONE
              FINSI
              taille_780042416 = taille_780042416 + 1

# Test de coherence du sous champ "SCP Address (item 1)"
              lg_numero_780042416 = i_get_art_fieldtab(g_iartin, $TcitR4::camel, taille_780042416)
              SI ((lg_numero_780042416==0) || ( lg_numero_780042416 > LG_SCPADD_MAX_780042416 ))
              ALORS
                      trace1("CAMEL: taille adresse 1 SCP incorrecte : <%d>",lg_numero_780042416)
# FE 54 ##
											ERREUR_780042416 = ERR_TAILLE_780042416
											code_rejet_780042416 = MODULE_780042416 + ERREUR_780042416 + EFFICACE_780042416
# /FE 54 ##
                      erreur_780042416=i_PlvMessEmettre(8276, 2, g_iartout12, "", 3, code_rejet_780042416,"SCP Address 1",lg_numero_780042416)
		      						SAUT STOCKE_ERRONE			       
              FINSI
              taille_780042416 = taille_780042416 + lg_numero_780042416 + 1

# Sous champ "Storage Of Service Key (item 1)"
              C_servkey_780042416 = (i_get_art_fieldtab(g_iartin, $TcitR4::camel, taille_780042416)*1000 +
							i_get_art_fieldtab(g_iartin, $TcitR4::camel, taille_780042416+1)*100 +
							i_get_art_fieldtab(g_iartin, $TcitR4::camel, taille_780042416+2)*10 +
							i_get_art_fieldtab(g_iartin, $TcitR4::camel, taille_780042416+3))
              trace1("Valeur du champ Storage Of Service Key : <%d>", C_servkey_780042416)
	      taille_780042416 = taille_780042416 + LG_SVCKEY_780042416

# Test de coherence du sous champ "New Number Given By SCP (item 1)"
              lg_numero_780042416 = i_get_art_fieldtab(g_iartin, $TcitR4::camel, taille_780042416)
              SI ( lg_numero_780042416 > LG_SCPNB_MAX_780042416 )
              ALORS
                      trace1("CAMEL: taille New SCP Nb 1 incorrecte : <%d>",lg_numero_780042416)
# FE 54 ##
											ERREUR_780042416 = ERR_TAILLE_780042416
											code_rejet_780042416 = MODULE_780042416 + ERREUR_780042416 + EFFICACE_780042416
# /FE 54 ##
                      erreur_780042416=i_PlvMessEmettre(8276, 2, g_iartout12, "", 3, code_rejet_780042416,"New number given by the SCP",lg_numero_780042416)
                      SAUT STOCKE_ERRONE
              FINSI

# Sous champ "Information given by SCP (item 1)" et "Type of SCP Call (item 1)"
              taille_780042416 = taille_780042416 + lg_numero_780042416 + 3

              SI ( nb_camel_780042416 == 2 )
              ALORS
# Test de coherence du sous champ "SCP Address (item 2)"
                      lg_numero_780042416 = i_get_art_fieldtab(g_iartin, $TcitR4::camel, taille_780042416)
                      SI ((lg_numero_780042416==0) || ( lg_numero_780042416 > LG_SCPADD_MAX_780042416 ))
                      ALORS
                              trace1("CAMEL: taille adresse 2 SCP incorrecte : <%d>",lg_numero_780042416)
# FE 54 ##
															ERREUR_780042416 = ERR_TAILLE_780042416
															code_rejet_780042416 = MODULE_780042416 + ERREUR_780042416 + EFFICACE_780042416
# /FE 54 ##
                              erreur_780042416=i_PlvMessEmettre(8276, 2, g_iartout12, "", 3, code_rejet_780042416,"SCP Address 2",lg_numero_780042416)
                              SAUT STOCKE_ERRONE
                      FINSI
                      taille_780042416 = taille_780042416 + lg_numero_780042416 + 1

# Sous champ "Storage Of Service Key (item 2)"
                      taille_780042416 = taille_780042416 + LG_SVCKEY_780042416

# Test de coherence du sous champ "New Number Given By SCP (item 2)"
                      lg_numero_780042416 = i_get_art_fieldtab(g_iartin, $TcitR4::camel, taille_780042416)
# PVSC 1971
                      SI ( lg_numero_780042416 > LG_SCPNB_MAX_780042416 || lg_numero_780042416 == 0 )
                      ALORS
                              trace1("CAMEL: taille New SCP Nb 2 incorrecte : <%d>",lg_numero_780042416)
# FE 54 ##
															ERREUR_780042416 = ERR_TAILLE_780042416
															code_rejet_780042416 = MODULE_780042416 + ERREUR_780042416 + EFFICACE_780042416
# /FE 54 ##
                              erreur_780042416=i_PlvMessEmettre(8276, 2, g_iartout12, "", 3, code_rejet_780042416,"New number given bye the SCP 2",lg_numero_780042416)
                              SAUT STOCKE_ERRONE
                      FINSI

# Sous champ "Information given by SCP (item 2)" et "Type of SCP Call (item 2)"
                      taille_780042416 = taille_780042416 + lg_numero_780042416 + 3
              FINSI
# Controle de la coherence entre la taille calculee et celle indiquee
              SI ( lg_camel_780042416 != taille_780042416 )
              ALORS
                      trace("CAMEL: difference des tailles calculee et indiquee")
# FE 54 ##
											ERREUR_780042416 = ERR_SEM_780042416
											code_rejet_780042416 = MODULE_780042416 + ERREUR_780042416 + EFFICACE_780042416
# /FE 54 ##
                      erreur_780042416=i_PlvMessEmettre(8274, 2,g_iartout12, "", 3, code_rejet_780042416,"camel", lg_camel_780042416)
                      SAUT STOCKE_ERRONE
              FINSI
      FINSI

####################################################################
# Test syntaxique du champ Camel PHASE 2
####################################################################

      SI ( lg_camel2_780042416 > 0 )
      ALORS
# Test de coherence du sous champ "Last Number Given By SCP"
              lg_lastSCPNb_780042416 = i_get_art_fieldtab(g_iartin, $TcitR4::camel2, 0)
              SI ( lg_lastSCPNb_780042416 > LG_SCPNB_MAX_780042416 )
              ALORS
                      trace1("CAMEL: taille Last SCP Nb incorrecte :<%d>",lg_lastSCPNb_780042416)
# FE 54 ##
											ERREUR_780042416 = ERR_TAILLE_780042416
											code_rejet_780042416 = MODULE_780042416 + ERREUR_780042416 + EFFICACE_780042416
# /FE 54 ##
                      erreur_780042416=i_PlvMessEmettre(8276, 2, g_iartout12, "", 3, code_rejet_780042416,"Last number given by the SCP",lg_lastSCPNb_780042416)
                      SAUT STOCKE_ERRONE
              FINSI
              taille_780042416 = lg_lastSCPNb_780042416 + 1

# Test de coherence du sous champ "Number Of Invoked CAMEL Services"
              nb_camel_780042416 = i_get_art_fieldtab(g_iartin, $TcitR4::camel2, taille_780042416)
              SI ( ( nb_camel_780042416 == 0 ) || ( nb_camel_780042416 > NB_CAMEL_MAX_780042416 ) )
              ALORS
                      trace1("CAMEL: nombre de services Camel incorrect :<%d>",nb_camel_780042416)
# FE 54 ##
											ERREUR_780042416 = ERR_SEM_780042416
											code_rejet_780042416 = MODULE_780042416 + ERREUR_780042416 + EFFICACE_780042416
# /FE 54 ##
                      erreur_780042416=i_PlvMessEmettre(8277, 2, g_iartout12, "", 3, code_rejet_780042416, "Camel2" ,nb_camel_780042416)
                      SAUT STOCKE_ERRONE
              FINSI
              taille_780042416 = taille_780042416 + 1

# Test de coherence du sous champ "SCP Address (item 1)"
              lg_numero_780042416 = i_get_art_fieldtab(g_iartin, $TcitR4::camel2, taille_780042416)
              SI ((lg_numero_780042416==0) || ( lg_numero_780042416 > LG_SCPADD_MAX_780042416 ))
              ALORS
                      trace1("CAMEL: taille adresse 1 SCP incorrecte :<%d>",lg_numero_780042416)
# FE 54 ##
											ERREUR_780042416 = ERR_TAILLE_780042416
											code_rejet_780042416 = MODULE_780042416 + ERREUR_780042416 + EFFICACE_780042416
# /FE 54 ##
                      erreur_780042416=i_PlvMessEmettre(8276, 2, g_iartout12, "", 3, code_rejet_780042416, "SCP address 1" ,lg_numero_780042416)
                      SAUT STOCKE_ERRONE
              FINSI
              taille_780042416 = taille_780042416 + lg_numero_780042416 + 1

# Sous champ "Storage Of Service Key (item 1)"
              C_servkey_780042416 = (i_get_art_fieldtab(g_iartin, $TcitR4::camel2, taille_780042416)*1000 +
							i_get_art_fieldtab(g_iartin, $TcitR4::camel2, taille_780042416+1)*100 +
							i_get_art_fieldtab(g_iartin, $TcitR4::camel2, taille_780042416+2)*10 +
							i_get_art_fieldtab(g_iartin, $TcitR4::camel2, taille_780042416+3))
              trace1("Valeur du champ Storage Of Service Key : <%d>", C_servkey_780042416)
              taille_780042416 = taille_780042416 + LG_SVCKEY_780042416

# Test de coherence du sous champ "New Number Given By SCP (item 1)"
              lg_numero_780042416 = i_get_art_fieldtab(g_iartin, $TcitR4::camel2, taille_780042416)
              SI ( lg_numero_780042416 > LG_SCPNB_MAX_780042416 )
              ALORS
                  trace1("CAMEL: taille New SCP Nb 1 incorrecte :<%d>",lg_numero_780042416)
# FE 54 ##
									ERREUR_780042416 = ERR_TAILLE_780042416
									code_rejet_780042416 = MODULE_780042416 + ERREUR_780042416 + EFFICACE_780042416
# /FE 54 ##
                  erreur_780042416=i_PlvMessEmettre(8276, 2, g_iartout12, "", 3, code_rejet_780042416,"New number given by the SCP ",lg_numero_780042416)
									SAUT STOCKE_ERRONE
              FINSI

# Sous champ "Information given by SCP (item 1)" et "Type of SCP Call (item 1)"
              taille_780042416 = taille_780042416 + lg_numero_780042416 + 3

# Test de coherence du sous champ "List of FCI data (item1)"
              lg_numero_780042416 = i_get_art_fieldtab(g_iartin, $TcitR4::camel2, taille_780042416)
              SI (( lg_numero_780042416 > LG_FCI_MAX_780042416 ) || ( lg_numero_780042416 == 1 ) || ( lg_numero_780042416 == 2 ))
              ALORS
                  trace1("CAMEL: taille List of FCI data Nb 1 incorrecte :<%d>",lg_numero_780042416)
# FE 54 ##
									ERREUR_780042416 = ERR_TAILLE_780042416
									code_rejet_780042416 = MODULE_780042416 + ERREUR_780042416 + EFFICACE_780042416
# /FE 54 ##
                  erreur_780042416=i_PlvMessEmettre(8276, 2, g_iartout12, "", 3, code_rejet_780042416,"List of FCI data Nb 1",lg_numero_780042416)
                  SAUT STOCKE_ERRONE
              FINSI
              taille_780042416 = taille_780042416 + lg_numero_780042416 + 1

# Test de coherence du sous champ "List of SCI data (item1)"
              lg_numero_780042416 = i_get_art_fieldtab(g_iartin, $TcitR4::camel2, taille_780042416)
              SI (( lg_numero_780042416 > LG_SCI_MAX_780042416))
              ALORS
                  trace1("CAMEL: taille List of SCI data Nb 1 incorrecte :<%d>",lg_numero_780042416)
# FE 54 ##
									ERREUR_780042416 = ERR_TAILLE_780042416
									code_rejet_780042416 = MODULE_780042416 + ERREUR_780042416 + EFFICACE_780042416
# /FE 54 ##
                  erreur_780042416=i_PlvMessEmettre(8276, 2, g_iartout12,"", 3, code_rejet_780042416,"List of SCI data Nb 1",lg_numero_780042416)
                  SAUT STOCKE_ERRONE
              FINSI
              offset_IP1_780042416 = taille_780042416 + lg_numero_780042416 + 1
              taille_780042416 = offset_IP1_780042416 + 1

# Cas ou il y a 2 invoked camel services
              SI ( nb_camel_780042416 == 2 )
              ALORS
# Test de coherence du sous champ "SCP Address (item 2)"
                      lg_numero_780042416 = i_get_art_fieldtab(g_iartin, $TcitR4::camel2, taille_780042416)
                      SI ((lg_numero_780042416==0) || ( lg_numero_780042416 > LG_SCPADD_MAX_780042416 ))
                      ALORS
                          trace1("CAMEL: taille adresse 2 SCP incorrecte :<%d>",lg_numero_780042416)
# FE 54 ##
													ERREUR_780042416 = ERR_TAILLE_780042416
													code_rejet_780042416 = MODULE_780042416 + ERREUR_780042416 + EFFICACE_780042416
# /FE 54 ##
                          erreur_780042416=i_PlvMessEmettre(8276, 2, g_iartout12, "", 3, code_rejet_780042416, "SCP address 2",lg_numero_780042416)
													SAUT STOCKE_ERRONE
                      FINSI
                      taille_780042416 = taille_780042416 + lg_numero_780042416 + 1

# Sous champ "Storage Of Service Key (item 2)"
                      taille_780042416 = taille_780042416 + LG_SVCKEY_780042416

# Test de coherence du sous champ "New Number Given By SCP (item 2)"
                      lg_numero_780042416 = i_get_art_fieldtab(g_iartin, $TcitR4::camel2, taille_780042416)
                      SI ( lg_numero_780042416 > LG_SCPNB_MAX_780042416 )
                      ALORS
                          trace1("CAMEL: taille New SCP Nb 2 incorrecte :<%d>",lg_numero_780042416)
# FE 54 ##
													ERREUR_780042416 = ERR_TAILLE_780042416
													code_rejet_780042416 = MODULE_780042416 + ERREUR_780042416 + EFFICACE_780042416
# /FE 54 ##
                          erreur_780042416=i_PlvMessEmettre(8276, 2,g_iartout12, "", 3, code_rejet_780042416,"New number given by the SCP2",lg_numero_780042416)
                          SAUT STOCKE_ERRONE
                      FINSI

# Sous champ "Information given by SCP (item 2)" et "Type of SCP Call (item 2)"
                      taille_780042416 = taille_780042416 + lg_numero_780042416 + 3

# Test de coherence du sous champ "List of FCI data (item2)"
                      lg_numero_780042416 = i_get_art_fieldtab(g_iartin, $TcitR4::camel2, taille_780042416)
                      SI (( lg_numero_780042416 > LG_FCI_MAX_780042416 ) || ( lg_numero_780042416 == 1 ) || ( lg_numero_780042416 == 2 ))
                      ALORS
                          trace1("CAMEL: taille List of FCI data Nb 2 incorrecte :<%d>",lg_numero_780042416)
# FE 54 ##
													ERREUR_780042416 = ERR_TAILLE_780042416
													code_rejet_780042416 = MODULE_780042416 + ERREUR_780042416 + EFFICACE_780042416
# /FE 54 ##
                          erreur_780042416=i_PlvMessEmettre(8276, 2, g_iartout12, "", 3, code_rejet_780042416,"List of FCI data Nb 2",lg_numero_780042416)
                          SAUT STOCKE_ERRONE
                      FINSI
                      taille_780042416 = taille_780042416 + lg_numero_780042416 + 1

# Test de coherence du sous champ "List of SCI data (item2)"
                      lg_numero_780042416 = i_get_art_fieldtab(g_iartin, $TcitR4::camel2, taille_780042416)
                      SI (( lg_numero_780042416 > LG_SCI_MAX_780042416))
                      ALORS
                          trace1("CAMEL: taille List of SCI data Nb 2 incorrecte :<%d>",lg_numero_780042416)
# FE 54 ##
													ERREUR_780042416 = ERR_TAILLE_780042416
													code_rejet_780042416 = MODULE_780042416 + ERREUR_780042416 + EFFICACE_780042416
# /FE 54 ##
                          erreur_780042416=i_PlvMessEmettre(8276, 2, g_iartout12, "", 3, code_rejet_780042416,"List of SCI data Nb 2",lg_numero_780042416)
                          SAUT STOCKE_ERRONE
                      FINSI
                      offset_IP2_780042416 = taille_780042416 + lg_numero_780042416 + 1
                      taille_780042416 = offset_IP2_780042416 + 1
              FINSI
# Controle de la coherence entre la taille calculee et celle indiquee
              SI ( lg_camel2_780042416 != taille_780042416 )
              ALORS
                  trace("CAMEL: difference des tailles calculee et indiquee")
# FE 54 ##
									ERREUR_780042416 = ERR_SEM_780042416
									code_rejet_780042416 = MODULE_780042416 + ERREUR_780042416 + EFFICACE_780042416
# /FE 54 ##
                  erreur_780042416=i_PlvMessEmettre(8277, 2, g_iartout12, "", 3, code_rejet_780042416,taille_780042416,  lg_camel2_780042416)
                  SAUT STOCKE_ERRONE
              FINSI
      FINSI

####################################################################
# Test syntaxique du champ "CRN and MSC Id"
####################################################################

      taille_780042416=0
      lg_CRNMSCId_780042416 = i_get_art_field(g_iartin, $TcitR4::CRNMSCId-1)
      SI ( lg_CRNMSCId_780042416 > 0 )
      ALORS
# Test de coherence du sous champ "CRN : Call Reference Number"
              lg_CRN_780042416 = i_get_art_fieldtab(g_iartin, $TcitR4::CRNMSCId,0)
# PVCS 1971     
              SI ( lg_CRN_780042416 > LG_CRN_MAX_780042416 ||  lg_CRN_780042416 < 1 )
              ALORS
                  trace1("CRN MSCId: taille CRN incorrecte :<%d>",lg_CRN_780042416)
# FE 54 ##
									ERREUR_780042416 = ERR_TAILLE_780042416
									code_rejet_780042416 = MODULE_780042416 + ERREUR_780042416 + EFFICACE_780042416
# /FE 54 ##
                  erreur_780042416=i_PlvMessEmettre(8276, 2, g_iartout12, "", 3, code_rejet_780042416,"CRN", lg_CRN_780042416)
                  SAUT STOCKE_ERRONE
              FINSI
              taille_780042416 = lg_CRN_780042416 + 1

# Test de coherence du sous champ "MSC Id"
              lg_MSCId_780042416 = i_get_art_fieldtab(g_iartin, $TcitR4::CRNMSCId,taille_780042416)
              SI ( lg_MSCId_780042416 > LG_MSCId_MAX_780042416)
              ALORS
                  trace1("CRN MSCId: taille MSCId incorrecte :<%d>",lg_MSCId_780042416)
# FE 54 ##
									ERREUR_780042416 = ERR_TAILLE_780042416
									code_rejet_780042416 = MODULE_780042416 + ERREUR_780042416 + EFFICACE_780042416
# /FE 54 ##
                  erreur_780042416=i_PlvMessEmettre(8276, 2, g_iartout12, "", 3, code_rejet_780042416,"MSCId", lg_MSCId_780042416)
                  SAUT STOCKE_ERRONE
              FINSI
              taille_780042416 = taille_780042416 + lg_MSCId_780042416 + 1

# Controle de la coherence entre la taille calculee et celle indiquee
              SI ( lg_CRNMSCId_780042416 != taille_780042416 )
              ALORS
                  trace("CRN MSCId: difference des tailles calculee et indiquee")
# FE 54 ##
									ERREUR_780042416 = ERR_SEM_780042416
									code_rejet_780042416 = MODULE_780042416 + ERREUR_780042416 + EFFICACE_780042416
# /FE 54 ##
                  erreur_780042416=i_PlvMessEmettre(8274, 2, g_iartout12, "", 3, code_rejet_780042416,"CRN MSCId", lg_CRNMSCId_780042416)
                  SAUT STOCKE_ERRONE
              FINSI
      SINON
              lg_CRN_780042416=0
              lg_MSCId_780042416=0
      FINSI


#
# Tests SEMANTIQUES
#

####################################################################
# Test semantique du tentite
####################################################################

      val_tentite_780042416 =  i_get_art_field(g_iartin, $TcitR4::tentite)

      SI ( (val_type_780042416 == RENVOIM_780042416) && (val_tentite_780042416 != 0) )
      ALORS
          erreur_tentite_780042416 = 1
      FINSI
      SI ( (val_type_780042416 == RENVOIG_780042416) && (val_tentite_780042416 != 1) )
      ALORS
          erreur_tentite_780042416 = 1
      FINSI
      SI ( (val_type_780042416 == TRANSIT_780042416) && (val_tentite_780042416 != 4) )
      ALORS
          erreur_tentite_780042416 = 1
      FINSI
      SI ( (val_type_780042416 == SORTANT_780042416) || (val_type_780042416 == ENTRANT_780042416)
	   || (val_type_780042416 == REACH_780042416) || (val_type_780042416 == RENVREA_780042416) )
      ALORS
          SI ( (val_tentite_780042416 < 0) || (val_tentite_780042416 > 3) )
          ALORS
                  erreur_tentite_780042416 = 1
          FINSI
      FINSI
      
      SI (erreur_tentite_780042416 == 1)
      ALORS
          trace3("Erreur valeur champ tentite=<%d> pour type=<%d>",val_tentite_780042416,val_type_780042416,0)
# FE 54 ##
					ERREUR_780042416 = ERR_CROISE_780042416
					code_rejet_780042416 = MODULE_780042416 + ERREUR_780042416 + EFFICACE_780042416
# /FE 54 ##
          erreur_780042416=i_PlvMessEmettre(8278, 2, g_iartout12, "", 3, code_rejet_780042416, val_type_780042416, val_tentite_780042416)
          SAUT STOCKE_ERRONE
      FINSI

####################################################################
# Test de presence du champ IMSI pour tous les types
# (sauf appel urgent  sortant)
####################################################################

      val_tlserv_780042416 = i_get_art_field(g_iartin,$TcitR4::tlserv)

      SI ( (val_tlserv_780042416 == 0x12) && (val_type_780042416 == SORTANT_780042416) )
      ALORS
          is_emergency_no_sim_780042416 = 1
      FINSI

      SI (val_type_780042416 != TRANSIT_780042416)
      ALORS
# IMSI optionnel dans le cas du type TRANSIT
          SI (is_emergency_no_sim_780042416 != 1)
          ALORS
# IMSI obligatoire pour les autres types (sauf pour le cas appel sortant urgent)
              IMSI_present_780042416 =  i_valid_field_n(g_iartin, $TcitR4::IMSI)
              SI (!IMSI_present_780042416)
              ALORS
                      trace1("Erreur article tlserv 0x%x sans IMSI",val_tlserv_780042416)
# FE 54 ##
											ERREUR_780042416 = ERR_CROISE_780042416
											code_rejet_780042416 = MODULE_780042416 + ERREUR_780042416 + EFFICACE_780042416
# /FE 54 ##
                      erreur_780042416=i_PlvMessEmettre(8279, 2, g_iartout12, "", 3, code_rejet_780042416, val_type_780042416, val_tlserv_780042416)
                      SAUT STOCKE_ERRONE
              FINSI
          FINSI
      FINSI

####################################################################
# Test de la valeur du champ msgITX si present
####################################################################

      val_cumul_ITX_780042416 = i_get_art_field(g_iartin, $TcitR4::msgITX)
      SI (val_cumul_ITX_780042416 > seuil_cumulITX_780042416)
      ALORS
          trace3("Cumul ITX=<%d> superieur a seuil_cumulITX=<%d>",val_cumul_ITX_780042416,seuil_cumulITX_780042416,0)
# FE 54 ##
					ERREUR_780042416 = ERR_SEM_780042416
					code_rejet_780042416 = MODULE_780042416 + ERREUR_780042416 + EFFICACE_780042416
# /FE 54 ##
          erreur_780042416=i_PlvMessEmettre(8280, 2, g_iartout12, "", 3, code_rejet_780042416, val_cumul_ITX_780042416, seuil_cumulITX_780042416)
          SAUT STOCKE_ERRONE
      FINSI

####################################################################
# Test de la valeur du champ indtax (Valeurs possibles: 0, 1, 2 ou F)
####################################################################

      val_indtax_780042416 = i_get_art_field(g_iartin, $TcitR4::indtax)
      SI ( (val_indtax_780042416!=0) && (val_indtax_780042416 != 1) 
	   && (val_indtax_780042416 != 2) && (val_indtax_780042416 != 0xf) )
      ALORS
          trace1("Mauvaise valeur de l'indicateur de taxabilite: <%d>",val_indtax_780042416)
# FE 54 ##
					ERREUR_780042416 = ERR_SEM_780042416
					code_rejet_780042416 = MODULE_780042416 + ERREUR_780042416 + EFFICACE_780042416
# /FE 54 ##
          erreur_780042416=i_PlvMessEmettre(8272, 2, g_iartout12, "", 3, code_rejet_780042416, val_indtax_780042416, "indtax")
          SAUT STOCKE_ERRONE
      FINSI

####################################################################
# Controles croises tlserv/svcsup
####################################################################

      val_svcsup_780042416 = i_get_art_field(g_iartin,$TcitR4::svcsup)
      val_tlserv_780042416 = i_get_art_field(g_iartin,$TcitR4::tlserv)
      SI ( (val_tlserv_780042416 == 0x21) && (val_svcsup_780042416 != 0xff) )
      ALORS
          trace3("Erreur tlserv=0x%x svcsup=0x%x",val_tlserv_780042416,val_svcsup_780042416,0)
# FE 54 ##
					ERREUR_780042416 = ERR_CROISE_780042416
					code_rejet_780042416 = MODULE_780042416 + ERREUR_780042416 + EFFICACE_780042416
# /FE 54 ##
          erreur_780042416=i_PlvMessEmettre(8281, 2, g_iartout12, "", 3, code_rejet_780042416, val_tlserv_780042416, val_svcsup_780042416)
          SAUT STOCKE_ERRONE
      FINSI
      SI ( (val_tlserv_780042416 == 0x22) && (val_svcsup_780042416 != 0xff) )
      ALORS
          trace3("Erreur tlserv=0x%x svcsup=0x%x",val_tlserv_780042416,val_svcsup_780042416,0)
# FE 54 ##
					ERREUR_780042416 = ERR_CROISE_780042416
					code_rejet_780042416 = MODULE_780042416 + ERREUR_780042416 + EFFICACE_780042416
# /FE 54 ##
          erreur_780042416=i_PlvMessEmettre(8281, 2, g_iartout12, "", 3, code_rejet_780042416, val_tlserv_780042416, val_svcsup_780042416)
          SAUT STOCKE_ERRONE
      FINSI

# Cas ou tlserv ET svcsup sont renseignes a la fois => ERREUR
      SI ( (val_tlserv_780042416 != 0xff) && (val_svcsup_780042416 != 0xff) )
      ALORS
          trace3("Erreur tlserv=0x%x svcsup=0x%x",val_tlserv_780042416,val_svcsup_780042416,0)
# FE 54 ##
					ERREUR_780042416 = ERR_CROISE_780042416
					code_rejet_780042416 = MODULE_780042416 + ERREUR_780042416 + EFFICACE_780042416
# /FE 54 ##
          erreur_780042416=i_PlvMessEmettre(8275, 2, g_iartout12, "", 3, code_rejet_780042416, "tlserv", "svcsup")
          SAUT STOCKE_ERRONE
      FINSI

####################################################################
# Test Automatique de l article
####################################################################

        SI ( !is_emergency_no_sim_780042416 )
        ALORS
              erreur_780042416 = i_test_art(g_iartin)
              SI (erreur_780042416)
	        		ALORS
		        		trace("Test automatique: article errone")
# FE 54 ##
								ERREUR_780042416 = ERR_SYNTAX_780042416
								code_rejet_780042416 = MODULE_780042416 + ERREUR_780042416 + EFFICACE_780042416
# /FE 54 ##
                erreur_780042416=i_PlvMessEmettre(8282, 2, g_iartout12, "", 1, code_rejet_780042416, 0, 0)
                SAUT STOCKE_ERRONE
        			FINSI
# G1R5 RHE --test si la duree >= 0x0000FD20 (18 H)
#        SINON
              val_duree_780042416=i_get_art_field(g_iartin, $TcitR4::DUREE)
              SI ((i_get_art_field(g_iartin, $TcitR4::estalloc) == -1) || (val_duree_780042416> 0xFd20))
              ALORS
                  trace1("Erreur test croise: estalloc absent et DUREE=0x%x > 0xFd20",val_duree_780042416)
# FE 54 ##
									ERREUR_780042416 = ERR_CROISE_780042416
									code_rejet_780042416 = MODULE_780042416 + ERREUR_780042416 + EFFICACE_780042416
# /FE 54 ##
                  erreur_780042416=i_PlvMessEmettre(8283, 2, g_iartout12, "", 3, code_rejet_780042416, "estalloc", val_duree_780042416)
                  SAUT STOCKE_ERRONE
              FINSI
        FINSI

POINT FIN_TRAITEMENT
trace("")
trace("**** TcitR4 : Module de traitement : Fin ****")

####################################################################
# Compteurs applicatif : comptage des articles
####################################################################

# Incrementation du compteur : Nombre de CRA/Type/EEC/Jour
Y_780042416=g_ieec
Z_780042416=0
X_780042416=i_get_art_field(g_iartin, $TcitR4::type)
date_780042416 = i_DHgetLocalTime(4, 7, i_date_audit())

trace1("erreur=i_incr_cpt(CPT,X,Y,Z,date,INCREMENT)cpt=%d",CPT_780042416)
erreur_780042416=i_incr_cpt(CPT_780042416,X_780042416,Y_780042416,Z_780042416,date_780042416,INCREMENT_780042416)

# Incrementation du compteur : CRA 3G

   SI ((X_780042416 == 0x00) || (X_780042416 == 0x01))
   ALORS
# On ne comptabilise que les CRA de type Entrant et Sortant
# Dont le champ UMTSco est pr?sent est vaut 0x01
       SI(i_get_art_field(g_iartin, $TcitR4::UMTSco)==0x01)
       ALORS
              trace1("erreur=i_incr_cpt(CPT_3G,X,Y,Z,date,INCREMENT)cpt=%d",CPT_3G_780042416)
              erreur_780042416=i_incr_cpt(CPT_3G_780042416,X_780042416,Y_780042416,Z_780042416,date_780042416,INCREMENT_780042416)
       FINSI
   FINSI

####################################################################
# Envoie article vers la distribution (Cas article correct)
####################################################################
erreur_780042416 = i_stocke_art(g_iartout12,0,PT_OK,0)
RETOUR TRAIT_OK

####################################################################
# Stockage en errone (Cas ou il y a des erreurs dans l article)
####################################################################

POINT STOCKE_ERRONE
# FE 54 ##
	erreur_780042416 = i_make_art_rej(g_iartout12, g_iartout11, code_rejet_780042416)
# /FE 54
	erreur_780042416 = i_stocke_art(g_iartout11,0,PT_ERRONE,0)
	RETOUR TRAIT_OK


POINT STOCKE_ELIMINE

	erreur_780042416 = i_stocke_art(g_iartout12,0,PT_DIVERS,0)
	RETOUR TRAIT_OK
#--------------------------- TcitR4.src ------------------------
