DEFINITION INCREMENT_660003828 1
DEFINITION CPT_660003828 1501
DEFINITION CPT3G_660003828 1504
DEFINITION MODULE_TRAIT_660003828 0x5000
DEFINITION ERR_SEM_660003828 0x040
DEFINITION ERR_DATE_660003828 0x060
DEFINITION ERR_SYNTAX_660003828 0x070
DEFINITION ERR_CROISE_660003828 0x0F0
REGISTRE POINTEUR pt_TYPE_COMPOSITE_660003828
REGISTRE POINTEUR pt_outgoingRoute_660003828
REGISTRE ENTIER valPositionMO1_660003828
REGISTRE ENTIER valPositionMO2_660003828
REGISTRE ENTIER valPositionCF1_660003828
REGISTRE ENTIER valPositionCF2_660003828
REGISTRE ENTIER valPositionIC1_660003828
REGISTRE ENTIER valPositionIC2_660003828
REGISTRE ENTIER valPositionIC3_660003828
REGISTRE ENTIER valPositionIC4_660003828
REGISTRE ENTIER valPositionIC5_660003828
REGISTRE ENTIER valPositionOC1_660003828
REGISTRE ENTIER valPositionOC2_660003828
REGISTRE ENTIER valPositionOC3_660003828
REGISTRE ENTIER valPositionOC4_660003828
REGISTRE ENTIER valPositionOC5_660003828
REGISTRE ENTIER valPositionTR1_660003828
REGISTRE ENTIER valPositionTR2_660003828
REGISTRE ENTIER valPositionTR3_660003828
REGISTRE ENTIER valPositionTR4_660003828
REGISTRE ENTIER valPositionTR5_660003828
REGISTRE ENTIER valPositionRCF1_660003828
REGISTRE ENTIER valPositionRCF2_660003828
REGISTRE ENTIER valPositionMST1_660003828
REGISTRE ENTIER valPositionMST2_660003828
REGISTRE ENTIER valPositionSMO1_660003828
REGISTRE ENTIER valPositionSMO2_660003828
REGISTRE ENTIER valPositionSMT1_660003828
REGISTRE ENTIER valPositionSMT2_660003828
REGISTRE ENTIER valPositionSSP1_660003828
REGISTRE ENTIER valPositionSSP2_660003828
REGISTRE ENTIER valPositionISO1_660003828
REGISTRE ENTIER valPositionISO2_660003828
REGISTRE ENTIER valPositionISC1_660003828
REGISTRE ENTIER valPositionISC2_660003828
REGISTRE ENTIER erreur_660003828
REGISTRE ENTIER nbPulse_660003828
REGISTRE ENTIER gsmTlSrv_660003828
REGISTRE ENTIER gsmBrSrv_660003828
REGISTRE ENTIER gSMCallRefNum_MO_660003828
REGISTRE ENTIER mSCAddress_MO_660003828
REGISTRE ENTIER CAMEL_SCFAdr_MO_660003828
REGISTRE ENTIER CAMEL_servkey_MO_660003828
REGISTRE ENTIER X_660003828
REGISTRE ENTIER Y_660003828
REGISTRE ENTIER Z_660003828
REGISTRE ENTIER date_660003828
REGISTRE ENTIER typeCRA_660003828
REGISTRE ENTIER code_rejet_660003828
REGISTRE ENTIER EFFICACE_660003828
REGISTRE ENTIER MODULE_660003828
REGISTRE ENTIER ERREUR_660003828
REGISTRE ENTIER val_Key_660003828
REGISTRE ENTIER Service_SDETR_660003828
REGISTRE ENTIER Service_CFWD_660003828
############################################################################
# TRAITEMENT Tcomp_nss9_tr.src
#   Article DC Tcomp_nss9 en entree de Platine
#   Pcode de traitement
#   Creation le 09/01/2006
# Historique
# 01/08/08 JLG ParamME-G1R4 FO TT13 spec A19.0 : appel a la table VariableContexte supprimee, GRI en dur
# 01/08/08 JLG ParamME-G1R4 FO562 (FO annulee)
# 02/11/07 RHE G1R5 FO607 supprimer la generation des type 0x08 a partir de TcompTR
# 25/01/08 PSA G1R6 lot 2 : restaurer la generation des types TR
# 20/02/08 PKH G1R6 lot 3 : generation cra 0x0_ pour type TR
# 12/11/09 PSA G2R5 QC 492 : correction type compteur 1501 pour CFWD
# 07/01/10 THEJLG G2R6 lot2 : ajout composites MSOTR et TRTR
# 04/02/10 JLG G2R6 lot3 : composite TRTR ajout controle valeur champ TR3disconnPartyTR
# 10/01/11 BEA G3R1 lot4 Verification/Correction des variables (constantes, entiers, pointeurs)
# 10/01/13 JLG G3R9 lot1 composite 6 elements TRTR et MSOTR
# 25/04/13 G3R10 lot1
# 27/02/2015 - JLG - G5R4lot2 : SDE callingNumberMO obligatoire, CFWD redirectNumCF obligatoire, SDETR callingNumberMO obligatoire
############################################################################
#
# Definition des constantes
#

#
# Compteurs par ECC
#



#
# Declarations des variables
#


# Debut G1R4 PSA

# Fin G1R4 PSA


















# Initialisations
EFFICACE_660003828 = 1
MODULE_660003828 = MODULE_TRAIT_660003828
ERREUR_660003828 = 0
val_Key_660003828=0
code_rejet_660003828 = 0

pt_TYPE_COMPOSITE_660003828 = "0123456789"
# Debut G1R4 PSA
pt_outgoingRoute_660003828 = "pt_outgoingRoute0123456789"
i_strcpy(pt_outgoingRoute_660003828,"")
# Fin G1R4 PSA
typeCRA_660003828=0x99


#
# variable fonctionnelle globale
#

valPositionMO1_660003828 = i_get_art_field(g_iartin,$Tcomp_nss9::positionMO:0)
valPositionMO2_660003828 = i_get_art_field(g_iartin,$Tcomp_nss9::positionMO:1)

valPositionCF1_660003828 = i_get_art_field(g_iartin,$Tcomp_nss9::positionCF:0)
valPositionCF2_660003828 = i_get_art_field(g_iartin,$Tcomp_nss9::positionCF:1)

valPositionIC1_660003828 = i_get_art_field(g_iartin,$Tcomp_nss9::position_IC:0)
valPositionIC2_660003828 = i_get_art_field(g_iartin,$Tcomp_nss9::position_IC:1)
valPositionIC3_660003828 = i_get_art_field(g_iartin,$Tcomp_nss9::position_IC:2)
valPositionIC4_660003828 = i_get_art_field(g_iartin,$Tcomp_nss9::position_IC:3)
valPositionIC5_660003828 = i_get_art_field(g_iartin,$Tcomp_nss9::position_IC:4)

valPositionOC1_660003828 = i_get_art_field(g_iartin,$Tcomp_nss9::position_OC:0)
valPositionOC2_660003828 = i_get_art_field(g_iartin,$Tcomp_nss9::position_OC:1)
valPositionOC3_660003828 = i_get_art_field(g_iartin,$Tcomp_nss9::position_OC:2)
valPositionOC4_660003828 = i_get_art_field(g_iartin,$Tcomp_nss9::position_OC:3)
valPositionOC5_660003828 = i_get_art_field(g_iartin,$Tcomp_nss9::position_OC:4)


valPositionTR1_660003828 = i_get_art_field(g_iartin,$Tcomp_nss9::positionTR:0)
valPositionTR2_660003828 = i_get_art_field(g_iartin,$Tcomp_nss9::positionTR:1)
valPositionTR3_660003828 = i_get_art_field(g_iartin,$Tcomp_nss9::positionTR:2)
valPositionTR4_660003828 = i_get_art_field(g_iartin,$Tcomp_nss9::positionTR:3)
valPositionTR5_660003828 = i_get_art_field(g_iartin,$Tcomp_nss9::positionTR:4)

valPositionRCF1_660003828 = i_get_art_field(g_iartin,$Tcomp_nss9::position_RCF:0)
valPositionRCF2_660003828 = i_get_art_field(g_iartin,$Tcomp_nss9::position_RCF:1)

valPositionMST1_660003828 = i_get_art_field(g_iartin,$Tcomp_nss9::position_MST:0)
valPositionMST2_660003828 = i_get_art_field(g_iartin,$Tcomp_nss9::position_MST:1)

valPositionSMO1_660003828 = i_get_art_field(g_iartin,$Tcomp_nss9::position_SMO:0)
valPositionSMO2_660003828 = i_get_art_field(g_iartin,$Tcomp_nss9::position_SMO:1)

valPositionSMT1_660003828 = i_get_art_field(g_iartin,$Tcomp_nss9::position_SMT:0)
valPositionSMT2_660003828 = i_get_art_field(g_iartin,$Tcomp_nss9::position_SMT:1)

valPositionSSP1_660003828 = i_get_art_field(g_iartin,$Tcomp_nss9::position_SSP:0)
valPositionSSP2_660003828 = i_get_art_field(g_iartin,$Tcomp_nss9::position_SSP:1)

valPositionISO1_660003828 = i_get_art_field(g_iartin,$Tcomp_nss9::position_ISO:0)
valPositionISO2_660003828 = i_get_art_field(g_iartin,$Tcomp_nss9::position_ISO:1)

valPositionISC1_660003828 = i_get_art_field(g_iartin,$Tcomp_nss9::position_ISC:0)
valPositionISC2_660003828 = i_get_art_field(g_iartin,$Tcomp_nss9::position_ISC:1)


SI ( valPositionMO1_660003828  ==  0 && valPositionMO2_660003828  == -1 && valPositionCF1_660003828  == -1 && valPositionCF2_660003828  == -1
  && valPositionIC1_660003828  ==  1 && valPositionIC2_660003828  == -1 && valPositionOC1_660003828  ==  2 && valPositionOC2_660003828  == -1
  && valPositionTR1_660003828  ==  3 && valPositionTR2_660003828  == -1 && valPositionTR3_660003828  == -1 && valPositionRCF1_660003828 == -1 && valPositionRCF2_660003828 == -1
  && valPositionMST1_660003828 == -1 && valPositionMST2_660003828 == -1 && valPositionSMO1_660003828 == -1 && valPositionSMO2_660003828 == -1
  && valPositionSMT1_660003828 == -1 && valPositionSMT2_660003828 == -1 && valPositionSSP1_660003828 == -1 && valPositionSSP2_660003828 == -1
  && valPositionISO1_660003828 == -1 && valPositionISO2_660003828 == -1 && valPositionISC1_660003828 == -1 && valPositionISC2_660003828 == -1 )
ALORS
  trace("Trait SDE")
  i_strcpy(pt_TYPE_COMPOSITE_660003828, "SDE")
  typeCRA_660003828=0x00
SINON
  #G3R10 suppression des tests IC2, OC2, TR2, TR3
  SI ( valPositionMO1_660003828  == -1 && valPositionMO2_660003828  == -1 && valPositionCF1_660003828  ==  0 && valPositionCF2_660003828  == -1
#   && valPositionIC1  ==  1 && valPositionIC2  == -1 && valPositionOC1  ==  2 && valPositionOC2  == -1
    && valPositionIC1_660003828  ==  1 && valPositionOC1_660003828  ==  2
#   && valPositionTR1  ==  3 && valPositionTR2  == -1 && valPositionTR3  == -1 && valPositionRCF1 == -1 && valPositionRCF2 == -1
    && valPositionTR1_660003828  ==  3 && valPositionRCF1_660003828 == -1 && valPositionRCF2_660003828 == -1
    && valPositionMST1_660003828 == -1 && valPositionMST2_660003828 == -1 && valPositionSMO1_660003828 == -1 && valPositionSMO2_660003828 == -1
    && valPositionSMT1_660003828 == -1 && valPositionSMT2_660003828 == -1 && valPositionSSP1_660003828 == -1 && valPositionSSP2_660003828 == -1
    && valPositionISO1_660003828 == -1 && valPositionISO2_660003828 == -1 && valPositionISC1_660003828 == -1 && valPositionISC2_660003828 == -1 )
  ALORS
    trace("Trait CFWD")
    i_strcpy(pt_TYPE_COMPOSITE_660003828, "CFWD")
    typeCRA_660003828=0x02
    SI (i_valid_field_n(g_iartin, $Tcomp_nss9::mblStatRnbCF) == 0)
    ALORS
      typeCRA_660003828 = 0x06
    FINSI
  SINON
    SI ( valPositionMO1_660003828  == -1 && valPositionMO2_660003828  == -1 && valPositionCF1_660003828  == -1 && valPositionCF2_660003828  == -1
      && valPositionIC1_660003828  ==  1 && valPositionIC2_660003828  == -1 && valPositionOC1_660003828  ==  2 && valPositionOC2_660003828  == -1
      && valPositionTR1_660003828  ==  0 && valPositionTR2_660003828  ==  3 && valPositionTR3_660003828  == -1 && valPositionRCF1_660003828 == -1 && valPositionRCF2_660003828 == -1
      && valPositionMST1_660003828 == -1 && valPositionMST2_660003828 == -1 && valPositionSMO1_660003828 == -1 && valPositionSMO2_660003828 == -1
      && valPositionSMT1_660003828 == -1 && valPositionSMT2_660003828 == -1 && valPositionSSP1_660003828 == -1 && valPositionSSP2_660003828 == -1
      && valPositionISO1_660003828 == -1 && valPositionISO2_660003828 == -1 && valPositionISC1_660003828 == -1 && valPositionISC2_660003828 == -1 )
    ALORS
      trace("Trait TR")
      i_strcpy(pt_TYPE_COMPOSITE_660003828, "TR")
      typeCRA_660003828=0x06
    SINON
      #G3R10 suppression du test TR3
      SI ( valPositionMO1_660003828  ==  0 && valPositionMO2_660003828  == -1 && valPositionCF1_660003828  == -1 && valPositionCF2_660003828  == -1
        && valPositionIC1_660003828  ==  1 && valPositionIC2_660003828  ==  4 && valPositionOC1_660003828  ==  2 && valPositionOC2_660003828  ==  5
#       && valPositionTR1  ==  3 && valPositionTR2  ==  6 && valPositionTR3  == -1 && valPositionRCF1 == -1 && valPositionRCF2 == -1
        && valPositionTR1_660003828  ==  3 && valPositionTR2_660003828  ==  6 && valPositionRCF1_660003828 == -1 && valPositionRCF2_660003828 == -1
        && valPositionMST1_660003828 == -1 && valPositionMST2_660003828 == -1 && valPositionSMO1_660003828 == -1 && valPositionSMO2_660003828 == -1
        && valPositionSMT1_660003828 == -1 && valPositionSMT2_660003828 == -1 && valPositionSSP1_660003828 == -1 && valPositionSSP2_660003828 == -1
        && valPositionISO1_660003828 == -1 && valPositionISO2_660003828 == -1 && valPositionISC1_660003828 == -1 && valPositionISC2_660003828 == -1 )
      ALORS
        trace("Trait SDETR")
        i_strcpy(pt_TYPE_COMPOSITE_660003828, "SDETR")
        typeCRA_660003828=0x00
#G2R6
      SINON
        SI ( valPositionMO1_660003828  ==  0 && valPositionMO2_660003828  == -1 && valPositionCF1_660003828  == -1 && valPositionCF2_660003828  == -1
          && valPositionIC1_660003828  ==  1 && valPositionIC2_660003828  == -1 && valPositionOC1_660003828  ==  2 && valPositionOC2_660003828  ==  4
          && valPositionTR1_660003828  ==  3 && valPositionTR2_660003828  ==  5 && valPositionTR3_660003828  == -1 && valPositionRCF1_660003828 == -1 && valPositionRCF2_660003828 == -1
          && valPositionMST1_660003828 == -1 && valPositionMST2_660003828 == -1 && valPositionSMO1_660003828 == -1 && valPositionSMO2_660003828 == -1
          && valPositionSMT1_660003828 == -1 && valPositionSMT2_660003828 == -1 && valPositionSSP1_660003828 == -1 && valPositionSSP2_660003828 == -1
          && valPositionISO1_660003828 == -1 && valPositionISO2_660003828 == -1 && valPositionISC1_660003828 == -1 && valPositionISC2_660003828 == -1 )
        ALORS
          trace("Trait MSOTR")
          i_strcpy(pt_TYPE_COMPOSITE_660003828, "MSOTR")
          typeCRA_660003828=0x08
        SINON
          SI ( valPositionMO1_660003828  == -1 && valPositionMO2_660003828  == -1 && valPositionCF1_660003828  == -1 && valPositionCF2_660003828  == -1
            && valPositionIC1_660003828  ==  1 && valPositionIC2_660003828  == -1 && valPositionOC1_660003828  ==  2 && valPositionOC2_660003828  ==  4
            && valPositionTR1_660003828  ==  0 && valPositionTR2_660003828  ==  3 && valPositionTR3_660003828  ==  5 && valPositionRCF1_660003828 == -1 && valPositionRCF2_660003828 == -1
            && valPositionMST1_660003828 == -1 && valPositionMST2_660003828 == -1 && valPositionSMO1_660003828 == -1 && valPositionSMO2_660003828 == -1
            && valPositionSMT1_660003828 == -1 && valPositionSMT2_660003828 == -1 && valPositionSSP1_660003828 == -1 && valPositionSSP2_660003828 == -1
            && valPositionISO1_660003828 == -1 && valPositionISO2_660003828 == -1 && valPositionISC1_660003828 == -1 && valPositionISC2_660003828 == -1 )
          ALORS
            trace("Trait TRTR")
            i_strcpy(pt_TYPE_COMPOSITE_660003828, "TRTR")
            typeCRA_660003828=0x06
          SINON
            trace("Type composite Non Connu")
            i_strcpy(pt_TYPE_COMPOSITE_660003828, "ERR")
          FINSI
        FINSI
      FINSI
#/G2R6
    FINSI
  FINSI
FINSI

# G3R10 calcul Service_SDETR
SI (i_strcmp(pt_TYPE_COMPOSITE_660003828, "SDETR") == 0 )
ALORS
  SI ( valPositionIC3_660003828  ==  7 && valPositionIC4_660003828  == 10 && valPositionIC5_660003828  == 13
    && valPositionOC3_660003828  ==  8 && valPositionOC4_660003828  == 11 && valPositionOC5_660003828  == 14
    && valPositionTR3_660003828  ==  9 && valPositionTR4_660003828  == 12 && valPositionTR5_660003828  == 15 )
  ALORS
   Service_SDETR_660003828 = 5
  SINON
  	SI ( valPositionIC3_660003828  ==  7 && valPositionIC4_660003828  == 10 && valPositionIC5_660003828  == -1
      && valPositionOC3_660003828  ==  8 && valPositionOC4_660003828  == 11 && valPositionOC5_660003828  == -1
      && valPositionTR3_660003828  ==  9 && valPositionTR4_660003828  == 12 && valPositionTR5_660003828  == -1 )
    ALORS
      Service_SDETR_660003828 = 4
    SINON
  	  SI ( valPositionIC3_660003828  ==  7 && valPositionIC4_660003828  == -1
        && valPositionOC3_660003828  ==  8 && valPositionOC4_660003828  == -1
        && valPositionTR3_660003828  ==  9 && valPositionTR4_660003828  == -1 )
      ALORS
        Service_SDETR_660003828 = 3
      SINON
  	    SI ( valPositionIC3_660003828  == -1
          && valPositionOC3_660003828  == -1
          && valPositionTR3_660003828  == -1 )
        ALORS
          Service_SDETR_660003828 = 2
        SINON
        	trace("Type composite Errone")
        	i_strcpy(pt_TYPE_COMPOSITE_660003828, "ERR")
        FINSI
      FINSI
    FINSI
  FINSI
FINSI

# G3R10 calcul Service_CFWD
Service_CFWD_660003828 = 0
SI (i_strcmp(pt_TYPE_COMPOSITE_660003828, "CFWD") == 0 )
ALORS
  SI ( valPositionIC2_660003828  ==  4 && valPositionIC3_660003828  ==  7 && valPositionIC4_660003828  == 10 && valPositionIC5_660003828  == 13
    && valPositionOC2_660003828  ==  5 && valPositionOC3_660003828  ==  8 && valPositionOC4_660003828  == 11 && valPositionOC5_660003828  == 14
    && valPositionTR2_660003828  ==  6 && valPositionTR3_660003828  ==  9 && valPositionTR4_660003828  == 12 && valPositionTR5_660003828  == 15 )
  ALORS
   Service_CFWD_660003828 = 5
  SINON
  	SI ( valPositionIC2_660003828  ==  4 && valPositionIC3_660003828  ==  7 && valPositionIC4_660003828  == 10 && valPositionIC5_660003828  == -1
      && valPositionOC2_660003828  ==  5 && valPositionOC3_660003828  ==  8 && valPositionOC4_660003828  == 11 && valPositionOC5_660003828  == -1
      && valPositionTR2_660003828  ==  6 && valPositionTR3_660003828  ==  9 && valPositionTR4_660003828  == 12 && valPositionTR5_660003828  == -1 )
    ALORS
      Service_CFWD_660003828 = 4
    SINON
  	  SI ( valPositionIC2_660003828  ==  4 && valPositionIC3_660003828  ==  7 && valPositionIC4_660003828  == -1
        && valPositionOC2_660003828  ==  5 && valPositionOC3_660003828  ==  8 && valPositionOC4_660003828  == -1
        && valPositionTR2_660003828  ==  6 && valPositionTR3_660003828  ==  9 && valPositionTR4_660003828  == -1 )
      ALORS
        Service_CFWD_660003828 = 3
      SINON
  	    SI ( valPositionIC2_660003828  ==  4 && valPositionIC3_660003828  == -1
          && valPositionOC2_660003828  ==  5 && valPositionOC3_660003828  == -1
          && valPositionTR2_660003828  ==  6 && valPositionTR3_660003828  == -1 )
        ALORS
          Service_CFWD_660003828 = 2
        SINON
  	      SI ( valPositionIC2_660003828  == -1
            && valPositionOC2_660003828  == -1
            && valPositionTR2_660003828  == -1 )
          ALORS
            Service_CFWD_660003828 = 1
          SINON
          	trace("Type composite Errone")
          	i_strcpy(pt_TYPE_COMPOSITE_660003828, "ERR")
          FINSI
        FINSI
      FINSI
    FINSI
  FINSI
FINSI

trace("**** Tcomp_nss9 : Debut traitement ****")

#
# on ne continue le traitement que si l'article ne doit pas etre rejete
#


SI (i_strcmp(pt_TYPE_COMPOSITE_660003828, "ERR") != 0 )
ALORS
#Debut Tcomp SDE
  SI (i_strcmp(pt_TYPE_COMPOSITE_660003828, "SDE") == 0 )
  ALORS
################################################
# controle de presence des champs obligatoires
################################################

    erreur_660003828 = i_valid_field_n(g_iartin,$Tcomp_nss9::DATEMO:0)
    SI (erreur_660003828 == 0)
    ALORS
      trace("Tcomp_nss9: envoi ERRONE car DATEMO absent")
      ERREUR_660003828 = ERR_SYNTAX_660003828
      code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
      erreur_660003828 = i_PlvMessEmettre(8510,2,g_iartin,"",2, code_rejet_660003828,"DATEMO",0)
      SAUT STOCK_ERRONE
    FINSI

    erreur_660003828 = i_valid_field_n(g_iartin,$Tcomp_nss9::HeureMO:0)
    SI (erreur_660003828 == 0)
    ALORS
      trace("Tcomp_nss9 : envoi ERRONE car HeureMO absent")
      ERREUR_660003828 = ERR_SYNTAX_660003828
      code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
      erreur_660003828 = i_PlvMessEmettre(8510,2,g_iartin,"",2, code_rejet_660003828,"HeureMO",0)
      SAUT STOCK_ERRONE
    FINSI

    erreur_660003828 = i_valid_field_n(g_iartin,$Tcomp_nss9::DUREEMO:0)
    SI (erreur_660003828 == 0)
    ALORS
      trace("Tcomp_nss9 : envoi ERRONE car DUREEMO absent")
      ERREUR_660003828 = ERR_SYNTAX_660003828
      code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
      erreur_660003828 = i_PlvMessEmettre(8510,2,g_iartin,"",2, code_rejet_660003828,"DUREEMO",0)
      SAUT STOCK_ERRONE
    FINSI

# G5R4lot2
    erreur_660003828 = i_valid_field_n(g_iartin,$Tcomp_nss9::callingNumberMO:0)
    SI (erreur_660003828 == 0)
    ALORS
      trace("Tcomp_nss9 : envoi ERRONE car callingNumberMO absent")
      ERREUR_660003828 = ERR_SYNTAX_660003828
      code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
      erreur_660003828 = i_PlvMessEmettre(8510,2,g_iartin,"",2, code_rejet_660003828,"callingNumberMO",0)
      SAUT STOCK_ERRONE
    FINSI


    erreur_660003828 = i_valid_field_n(g_iartin,$Tcomp_nss9::exchangeIdentMO:0)
    SI (erreur_660003828 == 0)
    ALORS
      trace("Tcomp_nss9 : envoi ERRONE car exchangeIdentMO absent")
      ERREUR_660003828 = ERR_SYNTAX_660003828
      code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
      erreur_660003828 = i_PlvMessEmettre(8510,2,g_iartin,"",2, code_rejet_660003828,"exchangeIdentMO",0)
      SAUT STOCK_ERRONE
    FINSI

    erreur_660003828 = i_valid_field_n(g_iartin,$Tcomp_nss9::1CallingLocIfMO:0)
    SI (erreur_660003828 == 0)
    ALORS
      trace("Tcomp_nss9: envoi ERRONE car 1CallingLocIfMO absent")
      ERREUR_660003828 = ERR_SYNTAX_660003828
      code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
      erreur_660003828 = i_PlvMessEmettre(8510,2,g_iartin,"",2, code_rejet_660003828,"1CallingLocIfMO",0)
      SAUT STOCK_ERRONE
    FINSI

    erreur_660003828 = i_valid_field_n(g_iartin,$Tcomp_nss9::outgoingRouteTR:0)
    SI (erreur_660003828 == 0)
    ALORS
      trace("Tcomp_nss9 : envoi ERRONE car outgoingRouteTR absent")
      ERREUR_660003828 = ERR_SYNTAX_660003828
      code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
      erreur_660003828 = i_PlvMessEmettre(8510,2,g_iartin,"",2, code_rejet_660003828,"outgoingRouteTR",0)
      SAUT STOCK_ERRONE
    FINSI

    erreur_660003828 = i_valid_field_n(g_iartin,$Tcomp_nss9::calledNumberTR:0)
    SI (erreur_660003828 == 0)
    ALORS
      trace("Tcomp_nss9 : envoi ERRONE car calledNumberTR absent")
      ERREUR_660003828 = ERR_SYNTAX_660003828
      code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
      erreur_660003828 = i_PlvMessEmettre(8510,2,g_iartin,"",2, code_rejet_660003828,"calledNumberTR",0)
      SAUT STOCK_ERRONE
    FINSI


#####################################################################
# Controle syntaxique de l'article
#####################################################################

#
#       Test de la syntaxe du champ DATE
#

    erreur_660003828 = i_get_art_field(g_iartin, $Tcomp_nss9::DATEMO:0)

    SI (erreur_660003828 == -1)
    ALORS
      trace("Tcomp_nss9 : envoi ERRONE car DATEMO invalide")
      ERREUR_660003828 = ERR_DATE_660003828
      code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
      erreur_660003828 = i_PlvMessEmettre(8511,2,g_iartin,"",2, code_rejet_660003828,"DATEMO",0)
      SAUT STOCK_ERRONE
    FINSI

#
#      Test automatique du CRA (voir le fichier "artobj.asn1")
#
    erreur_660003828 = i_test_art(g_iartin)
    SI erreur_660003828
    ALORS
      trace("Tcomp_nss9 : Test automatique a echoue")
      ERREUR_660003828 = ERR_SYNTAX_660003828
      code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
      erreur_660003828 = i_PlvMessEmettre(8512,2,g_iartin,"",1, code_rejet_660003828,0,0)
      SAUT STOCK_ERRONE
    FINSI

#
#       Test syntaxique champ "localisation" (1stCallingLocIf_MO)
#
    erreur_660003828 = i_test_field_ila_n(g_iartin,$Tcomp_nss9::1CallingLocIfMO:0,"Lmap")
    SI (erreur_660003828 != 0)
    ALORS
      trace("Tcomp_nss9 : envoi ERRONE car 1CallingLocIfMO invalide")
      ERREUR_660003828 = ERR_SYNTAX_660003828
      code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
      erreur_660003828 = i_PlvMessEmettre(8513,2,g_iartin,"",3, code_rejet_660003828,"1CallingLocIfMO","MAP")
      SAUT STOCK_ERRONE
    FINSI

#
#       Test syntaxique champ "nbPulse" si present
#
    erreur_660003828 = i_valid_field_n(g_iartin,$Tcomp_nss9::numOfMrPulseTR:0)
    SI (erreur_660003828 != 0)
    ALORS
      nbPulse_660003828 = i_get_art_field(g_iartin,$Tcomp_nss9::numOfMrPulseTR:0)
      SI (nbPulse_660003828 > 3000)
      ALORS
        trace("Tcomp_nss9 : envoi ERRONE car numOfMrPulse > 3000")
        ERREUR_660003828 = ERR_SEM_660003828
        code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
        erreur_660003828 = i_PlvMessEmettre(8514,2,g_iartin,"",3, code_rejet_660003828,"numOfMrPulseTR","3000")
        SAUT STOCK_ERRONE
      FINSI
    FINSI


#####################################################################
# Fin controle syntaxique de l'article
#####################################################################

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

#
# Retraitement de tlserv et svcsup. Si tlserv et svcsup sont 
# renseignes => Erreur
#
    gsmTlSrv_660003828 = i_get_art_field(g_iartin,$Tcomp_nss9::teleSrvCodeMO:0)
    SI ((gsmTlSrv_660003828 & 0xFF) != 0xFF)
    ALORS
      gsmBrSrv_660003828 = i_get_art_field(g_iartin,$Tcomp_nss9::bearerSvcCodeMO:0)
      SI ((gsmBrSrv_660003828 & 0xFF) != 0xFF)
      ALORS
        trace("Tcomp_nss9 : envoi ERRONE car teleSrvCodeMO et bearerSvcCodeMO presents ensemble")
        ERREUR_660003828 = ERR_CROISE_660003828
        code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
        erreur_660003828 = i_PlvMessEmettre(8515,2,g_iartin,"",3, code_rejet_660003828,"teleSrvCodeMO","bearerSvcCodeMO")
        SAUT STOCK_ERRONE
      FINSI
    FINSI

#
# Stockage en errone si les 4 champs CAMEL ne sont pas TOUS presents ou TOUS absents
#
    gSMCallRefNum_MO_660003828 = i_valid_field_n(g_iartin,$Tcomp_nss9::gSMCallRefNumMO:0)
    mSCAddress_MO_660003828 = i_valid_field_n(g_iartin,$Tcomp_nss9::mSCAddressMO:0)
    CAMEL_SCFAdr_MO_660003828 = i_valid_field_n(g_iartin,$Tcomp_nss9::CAMEL_SCFAdrMO:0)
    CAMEL_servkey_MO_660003828 = i_valid_field_n(g_iartin,$Tcomp_nss9::CAMEL_servkeyMO:0)

    SI ( gSMCallRefNum_MO_660003828 + mSCAddress_MO_660003828 + CAMEL_SCFAdr_MO_660003828 + CAMEL_servkey_MO_660003828 > 0 )
    ALORS
      SI ( gSMCallRefNum_MO_660003828 + mSCAddress_MO_660003828 + CAMEL_SCFAdr_MO_660003828 + CAMEL_servkey_MO_660003828 < 4 )
      ALORS
        trace("Tcomp_ss9 : envoi ERRONE car champs CAMEL non tous absents ou presents)")
        ERREUR_660003828 = ERR_SEM_660003828
        code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
        erreur_660003828 = i_PlvMessEmettre(8516,2,g_iartin,"",1, code_rejet_660003828,0,0)
        SAUT STOCK_ERRONE
      FINSI
    FINSI


## OGA 309 : 1stRdioChnlUsed = 0 ou 1 sinon ERRONE
    SI (i_valid_field_n(g_iartin, $Tcomp_nss9::1RdioChnlUsedMO:0) == 1)
    ALORS
      erreur_660003828 = i_get_art_field(g_iartin, $Tcomp_nss9::1RdioChnlUsedMO:0)
      SI( (erreur_660003828 != 0) && (erreur_660003828 != 1) )
      ALORS
        trace("Tcomp_nss9 : Erreur champ 1RdioChnlUsedMO")
        ERREUR_660003828 = ERR_SEM_660003828
        code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
        erreur_660003828 = i_PlvMessEmettre(8514,2,g_iartin,"",3, code_rejet_660003828,"1RdioChnlUsedMO","1")
        SAUT STOCK_ERRONE
      FINSI
    FINSI
## /OGA 309


## ano 3034 : TransparencyIndicator = 0 ou 1 sinon ERRONE
    SI (i_valid_field_n(g_iartin, $Tcomp_nss9::transIndicMO:0) == 1)
    ALORS
      erreur_660003828 = i_get_art_field(g_iartin, $Tcomp_nss9::transIndicMO:0)
      SI( (erreur_660003828 != 0) && (erreur_660003828 != 1) )
      ALORS
        trace("Tcomp_nss9 : Erreur champ transIndicMO")
        ERREUR_660003828 = ERR_SEM_660003828
        code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
        erreur_660003828 = i_PlvMessEmettre(8514,2,g_iartin,"",3, code_rejet_660003828,"transIndicMO","1")
        SAUT STOCK_ERRONE
      FINSI
    FINSI
## /ano 3034
## ano 3034 : disconnectParty = 0 ou 1 ou 2 sinon ERRONE
    SI (i_valid_field_n(g_iartin, $Tcomp_nss9::disconnPartyMO:0) == 1)
    ALORS
      erreur_660003828 = i_get_art_field(g_iartin, $Tcomp_nss9::disconnPartyMO:0)
      SI( (erreur_660003828 != 0) && (erreur_660003828 != 1) && (erreur_660003828 != 2) )
      ALORS
        trace("Tcomp_nss9 : Erreur champ disconnPartyMO")
        ERREUR_660003828 = ERR_SEM_660003828
        code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
        erreur_660003828 = i_PlvMessEmettre(8514,2,g_iartin,"",3, code_rejet_660003828,"disconnPartyMO","2")
        SAUT STOCK_ERRONE
      FINSI
    FINSI
## /ano 3034

#####################################################################
# FIN tests semantique
#####################################################################
#Fin Tcomp SDE

  SINON
#Debut Tcomp CFWD
    SI (i_strcmp(pt_TYPE_COMPOSITE_660003828, "CFWD") == 0 )
    ALORS
################################################
# controle de presence des champs obligatoires
################################################

# controle sur element CFW
      erreur_660003828 = i_valid_field_n(g_iartin,$Tcomp_nss9::DATECF:0)
      SI (erreur_660003828 == 0)
      ALORS
        trace("Tcomp_nss9, CFWD : envoi ERRONE car DATECF absent")
        ERREUR_660003828 = ERR_SYNTAX_660003828
        code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
        erreur_660003828 = i_PlvMessEmettre(8510,2,g_iartin,"",2, code_rejet_660003828,"DATECF",0)
        SAUT STOCK_ERRONE
      FINSI

      erreur_660003828 = i_valid_field_n(g_iartin,$Tcomp_nss9::HeureCF:0)
      SI (erreur_660003828 == 0)
      ALORS
        trace("Tcomp_nss9, CFWD : envoi ERRONE car HeureCF absent")
        ERREUR_660003828 = ERR_SYNTAX_660003828
        code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
        erreur_660003828 = i_PlvMessEmettre(8510,2,g_iartin,"",2, code_rejet_660003828,"HeureCF",0)
        SAUT STOCK_ERRONE
      FINSI

      erreur_660003828 = i_valid_field_n(g_iartin,$Tcomp_nss9::DUREECF:0)
      SI (erreur_660003828 == 0)
      ALORS
        trace("Tcomp_nss9, CFWD : envoi ERRONE car DUREECF absent")
        ERREUR_660003828 = ERR_SYNTAX_660003828
        code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
        erreur_660003828 = i_PlvMessEmettre(8510,2,g_iartin,"",2, code_rejet_660003828,"DUREECF",0)
        SAUT STOCK_ERRONE
      FINSI

      erreur_660003828 = i_valid_field_n(g_iartin,$Tcomp_nss9::calledNumberCF:0)
      SI (erreur_660003828 == 0)
      ALORS
        trace("Tcomp_nss9, CFWD : envoi ERRONE car caleldNumberCF absent")
        ERREUR_660003828 = ERR_SYNTAX_660003828
        code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
        erreur_660003828 = i_PlvMessEmettre(8510,2,g_iartin,"",2, code_rejet_660003828,"calledNumberCF",0)
        SAUT STOCK_ERRONE
      FINSI

# G5R4lot2
      erreur_660003828 = i_valid_field_n(g_iartin,$Tcomp_nss9::redirectNumCF:0)
      SI (erreur_660003828 == 0)
      ALORS
        trace("Tcomp_nss9, CFWD : envoi ERRONE car redirectNumCF absent")
        ERREUR_660003828 = ERR_SYNTAX_660003828
        code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
        erreur_660003828 = i_PlvMessEmettre(8510,2,g_iartin,"",2, code_rejet_660003828,"redirectNumCF",0)
        SAUT STOCK_ERRONE
      FINSI


      erreur_660003828 = i_valid_field_n(g_iartin,$Tcomp_nss9::IMSICF:0)
      SI (erreur_660003828 == 0)
      ALORS
        trace("Tcomp_nss9, CFWD : envoi ERRONE car IMSICF absent")
        ERREUR_660003828 = ERR_SYNTAX_660003828
        code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
        erreur_660003828 = i_PlvMessEmettre(8510,2,g_iartin,"",2, code_rejet_660003828,"IMSICF",0)
        SAUT STOCK_ERRONE
      FINSI

      erreur_660003828 = i_valid_field_n(g_iartin,$Tcomp_nss9::exchangeIdentCF:0)
      SI (erreur_660003828 == 0)
      ALORS
        trace("Tcomp_nss9, CFWD : envoi ERRONE car exchangeIdentCF absent")
        ERREUR_660003828 = ERR_SYNTAX_660003828
        code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
        erreur_660003828 = i_PlvMessEmettre(8510,2,g_iartin,"",2, code_rejet_660003828,"exchangeIdentCF",0)
        SAUT STOCK_ERRONE
      FINSI

      erreur_660003828 = i_valid_field_n(g_iartin,$Tcomp_nss9::incomingRouteCF:0)
      SI (erreur_660003828 == 0)
      ALORS
        trace("Tcomp_nss9, CFWD : envoi ERRONE car incomingRouteCF absent")
        ERREUR_660003828 = ERR_SYNTAX_660003828
        code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
        erreur_660003828 = i_PlvMessEmettre(8510,2,g_iartin,"",2, code_rejet_660003828,"incomingRouteCF",0)
        SAUT STOCK_ERRONE
      FINSI

# controle sur element TR
      erreur_660003828 = i_valid_field_n(g_iartin,$Tcomp_nss9::outgoingRouteTR:0)
      SI (erreur_660003828 == 0)
      ALORS
        trace("Tcomp_nss9, CFWD : envoi ERRONE car outgoingRouteTR absent")
        ERREUR_660003828 = ERR_SYNTAX_660003828
        code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
        erreur_660003828 = i_PlvMessEmettre(8510,2,g_iartin,"",2, code_rejet_660003828,"outgoingRouteTR",0)
        SAUT STOCK_ERRONE
      FINSI

      erreur_660003828 = i_valid_field_n(g_iartin,$Tcomp_nss9::calledNumberTR:0)
      SI (erreur_660003828 == 0)
      ALORS
        trace("Tcomp_nss9, CFWD : envoi ERRONE car calledNumberTR absent")
        ERREUR_660003828 = ERR_SYNTAX_660003828
        code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
        erreur_660003828 = i_PlvMessEmettre(8510,2,g_iartin,"",2, code_rejet_660003828,"calledNumberTR",0)
        SAUT STOCK_ERRONE
      FINSI

#####################################################################
# Controle syntaxique de l'article
#####################################################################
# controle sur element CFW
      erreur_660003828 = i_test_field_ila_off_n(g_iartin, $Tcomp_nss9::calledNumberCF:0, "Lrnis", 1)
      SI erreur_660003828
      ALORS
        trace("Tcomp_nss9, CFWD : envoi ERRONE car calledNumberCF invalide")
        ERREUR_660003828 = ERR_SYNTAX_660003828
        code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
        erreur_660003828 = i_PlvMessEmettre(8513,2,g_iartin,"",3, code_rejet_660003828,"calledNumberCF","RNIS")
        SAUT STOCK_ERRONE
      FINSI

      erreur_660003828 = i_get_art_field(g_iartin, $Tcomp_nss9::DATECF:0)
      SI (erreur_660003828 == -1)
      ALORS
        trace("Tcomp_nss9, CFWD : envoi ERRONE car DATECF invalide")
        ERREUR_660003828 = ERR_DATE_660003828
        code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
        erreur_660003828 = i_PlvMessEmettre(8510,2,g_iartin,"",2, code_rejet_660003828,"DATECF",0)
        SAUT STOCK_ERRONE
      FINSI

#           Test automatique du CRA (voir le fichier "artobj.asn1")
      erreur_660003828 = i_test_art(g_iartin)
      SI erreur_660003828
      ALORS
        trace("Tcomp_nss9, CFWD : envoi ERRONE : test automatique")
        ERREUR_660003828 = ERR_SYNTAX_660003828
        code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
        erreur_660003828 = i_PlvMessEmettre(8512,2,g_iartin,"",1, code_rejet_660003828,0,0)
        SAUT STOCK_ERRONE
      FINSI

# controle sur element TR
      erreur_660003828 = i_valid_field_n(g_iartin,$Tcomp_nss9::numOfMrPulseTR:0)
      SI (erreur_660003828 != 0)
      ALORS
        nbPulse_660003828 = i_get_art_field(g_iartin,$Tcomp_nss9::numOfMrPulseTR:0)
        SI (nbPulse_660003828 > 3000)
        ALORS
          trace("Tcomp_nss9, CFWD : envoi ERRONE car numOfMrPulseTR > 3000")
          ERREUR_660003828 = ERR_SEM_660003828
          code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
          erreur_660003828 = i_PlvMessEmettre(8514,2,g_iartin,"",3, code_rejet_660003828,"numOfMrPulseTR","3000")
          SAUT STOCK_ERRONE
        FINSI
      FINSI

#####################################################################
# Controle semantique de l'article
#####################################################################
# controle sur element CFW
## ano 3034 : disconnectParty = 0 ou 1 ou 2 sinon ERRONE
      SI (i_valid_field_n(g_iartin, $Tcomp_nss9::disconnPartyCF:0) == 1)
      ALORS
        erreur_660003828 = i_get_art_field(g_iartin, $Tcomp_nss9::disconnPartyCF:0)
        SI( (erreur_660003828 != 0) && (erreur_660003828 != 1) && (erreur_660003828 != 2) )
        ALORS
          trace("Tcomp_nss9, CFWD : Erreur champ disconnPartyCF")
          ERREUR_660003828 = ERR_SEM_660003828
          code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
          erreur_660003828 = i_PlvMessEmettre(8514,2,g_iartin,"",3, code_rejet_660003828,"disconnPartyCF","2")
          SAUT STOCK_ERRONE
        FINSI
      FINSI

# G3R10 CFWD ajout de controles selon Service_CFWD
         	SI (Service_CFWD_660003828 > 1)
         	ALORS
################################################
# controle de presence des champs obligatoires
################################################
            erreur_660003828 = i_valid_field_n(g_iartin,$Tcomp_nss9::outgoingRouteTR:1)
            SI (erreur_660003828 == 0)
            ALORS
              trace("Tcomp_nss9, CFWD : envoi ERRONE car outgoingRouteTR2 absent")
              ERREUR_660003828 = ERR_SYNTAX_660003828
              code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
              erreur_660003828 = i_PlvMessEmettre(8510,2,g_iartin,"",2, code_rejet_660003828,"outgoingRouteTR2",0)
              SAUT STOCK_ERRONE
            FINSI
            
            erreur_660003828 = i_valid_field_n(g_iartin,$Tcomp_nss9::calledNumberTR:1)
            SI (erreur_660003828 == 0)
            ALORS
              trace("Tcomp_nss9, CFWD : envoi ERRONE car calledNumberTR2 absent")
              ERREUR_660003828 = ERR_SYNTAX_660003828
              code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
              erreur_660003828 = i_PlvMessEmettre(8510,2,g_iartin,"",2, code_rejet_660003828,"calledNumberTR2",0)
              SAUT STOCK_ERRONE
            FINSI
#####################################################################
# Controle syntaxique de l'article
#####################################################################
            erreur_660003828 = i_valid_field_n(g_iartin,$Tcomp_nss9::numOfMrPulseTR:1)
            SI (erreur_660003828 != 0)
            ALORS
              nbPulse_660003828 = i_get_art_field(g_iartin,$Tcomp_nss9::numOfMrPulseTR:1)
              SI (nbPulse_660003828 > 3000)
              ALORS
                trace("Tcomp_nss9, CFWD : envoi ERRONE car numOfMrPulseTR2 > 3000")
                ERREUR_660003828 = ERR_SEM_660003828
                code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
                erreur_660003828 = i_PlvMessEmettre(8514,2,g_iartin,"",3, code_rejet_660003828,"numOfMrPulseTR2","3000")
                SAUT STOCK_ERRONE
              FINSI
            FINSI
          FINSI

         	SI (Service_CFWD_660003828 > 2)
         	ALORS
################################################
# controle de presence des champs obligatoires
################################################
            erreur_660003828 = i_valid_field_n(g_iartin,$Tcomp_nss9::outgoingRouteTR:2)
            SI (erreur_660003828 == 0)
            ALORS
              trace("Tcomp_nss9, CFWD : envoi ERRONE car outgoingRouteTR3 absent")
              ERREUR_660003828 = ERR_SYNTAX_660003828
              code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
              erreur_660003828 = i_PlvMessEmettre(8510,2,g_iartin,"",2, code_rejet_660003828,"outgoingRouteTR3",0)
              SAUT STOCK_ERRONE
            FINSI
            
            erreur_660003828 = i_valid_field_n(g_iartin,$Tcomp_nss9::calledNumberTR:2)
            SI (erreur_660003828 == 0)
            ALORS
              trace("Tcomp_nss9, CFWD : envoi ERRONE car calledNumberTR3 absent")
              ERREUR_660003828 = ERR_SYNTAX_660003828
              code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
              erreur_660003828 = i_PlvMessEmettre(8510,2,g_iartin,"",2, code_rejet_660003828,"calledNumberTR3",0)
              SAUT STOCK_ERRONE
            FINSI
#####################################################################
# Controle syntaxique de l'article
#####################################################################
            erreur_660003828 = i_valid_field_n(g_iartin,$Tcomp_nss9::numOfMrPulseTR:2)
            SI (erreur_660003828 != 0)
            ALORS
              nbPulse_660003828 = i_get_art_field(g_iartin,$Tcomp_nss9::numOfMrPulseTR:2)
              SI (nbPulse_660003828 > 3000)
              ALORS
                trace("Tcomp_nss9, CFWD : envoi ERRONE car numOfMrPulseTR3 > 3000")
                ERREUR_660003828 = ERR_SEM_660003828
                code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
                erreur_660003828 = i_PlvMessEmettre(8514,2,g_iartin,"",3, code_rejet_660003828,"numOfMrPulseTR3","3000")
                SAUT STOCK_ERRONE
              FINSI
            FINSI
          FINSI


         	SI (Service_CFWD_660003828 > 3)
         	ALORS
################################################
# controle de presence des champs obligatoires
################################################
            erreur_660003828 = i_valid_field_n(g_iartin,$Tcomp_nss9::outgoingRouteTR:3)
            SI (erreur_660003828 == 0)
            ALORS
              trace("Tcomp_nss9, CFWD : envoi ERRONE car outgoingRouteTR4 absent")
              ERREUR_660003828 = ERR_SYNTAX_660003828
              code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
              erreur_660003828 = i_PlvMessEmettre(8510,2,g_iartin,"",2, code_rejet_660003828,"outgoingRouteTR4",0)
              SAUT STOCK_ERRONE
            FINSI
            
            erreur_660003828 = i_valid_field_n(g_iartin,$Tcomp_nss9::calledNumberTR:3)
            SI (erreur_660003828 == 0)
            ALORS
              trace("Tcomp_nss9, CFWD : envoi ERRONE car calledNumberTR4 absent")
              ERREUR_660003828 = ERR_SYNTAX_660003828
              code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
              erreur_660003828 = i_PlvMessEmettre(8510,2,g_iartin,"",2, code_rejet_660003828,"calledNumberTR4",0)
              SAUT STOCK_ERRONE
            FINSI
#####################################################################
# Controle syntaxique de l'article
#####################################################################
            erreur_660003828 = i_valid_field_n(g_iartin,$Tcomp_nss9::numOfMrPulseTR:3)
            SI (erreur_660003828 != 0)
            ALORS
              nbPulse_660003828 = i_get_art_field(g_iartin,$Tcomp_nss9::numOfMrPulseTR:3)
              SI (nbPulse_660003828 > 3000)
              ALORS
                trace("Tcomp_nss9, CFWD : envoi ERRONE car numOfMrPulseTR4 > 3000")
                ERREUR_660003828 = ERR_SEM_660003828
                code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
                erreur_660003828 = i_PlvMessEmettre(8514,2,g_iartin,"",3, code_rejet_660003828,"numOfMrPulseTR4","3000")
                SAUT STOCK_ERRONE
              FINSI
            FINSI
          FINSI

         	SI (Service_CFWD_660003828 > 4)
         	ALORS
################################################
# controle de presence des champs obligatoires
################################################
            erreur_660003828 = i_valid_field_n(g_iartin,$Tcomp_nss9::outgoingRouteTR:3)
            SI (erreur_660003828 == 0)
            ALORS
              trace("Tcomp_nss9, CFWD : envoi ERRONE car outgoingRouteTR4 absent")
              ERREUR_660003828 = ERR_SYNTAX_660003828
              code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
              erreur_660003828 = i_PlvMessEmettre(8510,2,g_iartin,"",2, code_rejet_660003828,"outgoingRouteTR4",0)
              SAUT STOCK_ERRONE
            FINSI
            
            erreur_660003828 = i_valid_field_n(g_iartin,$Tcomp_nss9::calledNumberTR:3)
            SI (erreur_660003828 == 0)
            ALORS
              trace("Tcomp_nss9, CFWD : envoi ERRONE car calledNumberTR4 absent")
              ERREUR_660003828 = ERR_SYNTAX_660003828
              code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
              erreur_660003828 = i_PlvMessEmettre(8510,2,g_iartin,"",2, code_rejet_660003828,"calledNumberTR4",0)
              SAUT STOCK_ERRONE
            FINSI
#####################################################################
# Controle syntaxique de l'article
#####################################################################
            erreur_660003828 = i_valid_field_n(g_iartin,$Tcomp_nss9::numOfMrPulseTR:3)
            SI (erreur_660003828 != 0)
            ALORS
              nbPulse_660003828 = i_get_art_field(g_iartin,$Tcomp_nss9::numOfMrPulseTR:3)
              SI (nbPulse_660003828 > 3000)
              ALORS
                trace("Tcomp_nss9, CFWD : envoi ERRONE car numOfMrPulseTR4 > 3000")
                ERREUR_660003828 = ERR_SEM_660003828
                code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
                erreur_660003828 = i_PlvMessEmettre(8514,2,g_iartin,"",3, code_rejet_660003828,"numOfMrPulseTR4","3000")
                SAUT STOCK_ERRONE
              FINSI
            FINSI 
         	FINSI
# /G3R10 CFWD

#####################################################################
# FIN des tests CFWD
#####################################################################
#Fin Tcomp CFWD

    SINON
#Debut Tcomp TR
      SI (i_strcmp(pt_TYPE_COMPOSITE_660003828, "TR") == 0 )
      ALORS
################################################
# controle de presence des champs obligatoires
################################################
        erreur_660003828 = i_valid_field_n(g_iartin,$Tcomp_nss9::outgoingRouteTR:0)
        SI (erreur_660003828 == 0)
        ALORS
          trace("Tcomp_nss9 : envoi ERRONE car outgoingRouteTR absent")
          ERREUR_660003828 = ERR_SYNTAX_660003828
          code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
          erreur_660003828 = i_PlvMessEmettre(8510,2,g_iartin,"",2, code_rejet_660003828,"outgoingRouteTR",0)
          SAUT STOCK_ERRONE
        FINSI

        erreur_660003828 = i_valid_field_n(g_iartin,$Tcomp_nss9::calledNumberTR:0)
        SI (erreur_660003828 == 0)
        ALORS
          trace("Tcomp_nss9 : envoi ERRONE car calledNumberTR absent")
          ERREUR_660003828 = ERR_SYNTAX_660003828
          code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
          erreur_660003828 = i_PlvMessEmettre(8510,2,g_iartin,"",2, code_rejet_660003828,"calledNumberTR",0)
          SAUT STOCK_ERRONE
        FINSI

        erreur_660003828 = i_valid_field_n(g_iartin,$Tcomp_nss9::DATETR:0)
        SI (erreur_660003828 == 0)
        ALORS
          trace("Tcomp_nss9 : envoi ERRONE car DATETR absent")
          ERREUR_660003828 = ERR_SYNTAX_660003828
          code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
          erreur_660003828 = i_PlvMessEmettre(8510,2,g_iartin,"",2, code_rejet_660003828,"DATETR",0)
          SAUT STOCK_ERRONE
        FINSI

        erreur_660003828 = i_valid_field_n(g_iartin,$Tcomp_nss9::heureTR:0)
        SI (erreur_660003828 == 0)
        ALORS
          trace("Tcomp_nss9 : envoi ERRONE car heureTR absent")
          ERREUR_660003828 = ERR_SYNTAX_660003828
          code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
          erreur_660003828 = i_PlvMessEmettre(8510,2,g_iartin,"",2, code_rejet_660003828,"heureTR",0)
          SAUT STOCK_ERRONE
        FINSI

        erreur_660003828 = i_valid_field_n(g_iartin,$Tcomp_nss9::DUREETR:0)
        SI (erreur_660003828 == 0)
        ALORS
          trace("Tcomp_nss9 : envoi ERRONE car DUREETR absent")
          ERREUR_660003828 = ERR_SYNTAX_660003828
          code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
          erreur_660003828 = i_PlvMessEmettre(8510,2,g_iartin,"",2, code_rejet_660003828,"DUREETR",0)
          SAUT STOCK_ERRONE
        FINSI

        erreur_660003828 = i_valid_field_n(g_iartin,$Tcomp_nss9::outgoingRouteTR:1)
        SI (erreur_660003828 == 0)
        ALORS
          trace("Tcomp_nss9: envoi ERRONE car outgoingRouteTR2 absent")
          ERREUR_660003828 = ERR_SYNTAX_660003828
          code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
          erreur_660003828 = i_PlvMessEmettre(8510,2,g_iartin,"",2, code_rejet_660003828,"outgoingRouteTR",0)
          SAUT STOCK_ERRONE
        FINSI

        erreur_660003828 = i_valid_field_n(g_iartin,$Tcomp_nss9::calledNumberTR:1)
        SI (erreur_660003828 == 0)
        ALORS
          trace("Tcomp_nss9 : envoi ERRONE car calledNumberTR2 absent")
          ERREUR_660003828 = ERR_SYNTAX_660003828
          code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
          erreur_660003828 = i_PlvMessEmettre(8510,2,g_iartin,"",2, code_rejet_660003828,"calledNumberTR2",0)
          SAUT STOCK_ERRONE
        FINSI

        erreur_660003828 = i_valid_field_n(g_iartin,$Tcomp_nss9::DATETR:1)
        SI (erreur_660003828 == 0)
        ALORS
          trace("Tcomp_nss9 : envoi ERRONE car DATETR2 absent")
          ERREUR_660003828 = ERR_SYNTAX_660003828
          code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
          erreur_660003828 = i_PlvMessEmettre(8510,2,g_iartin,"",2, code_rejet_660003828,"DATETR2",0)
          SAUT STOCK_ERRONE
        FINSI

        erreur_660003828 = i_valid_field_n(g_iartin,$Tcomp_nss9::heureTR:1)
        SI (erreur_660003828 == 0)
        ALORS
          trace("Tcomp_nss9: envoi ERRONE car heureTR2 absent")
          ERREUR_660003828 = ERR_SYNTAX_660003828
          code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
          erreur_660003828 = i_PlvMessEmettre(8510,2,g_iartin,"",2, code_rejet_660003828,"heureTR2",0)
          SAUT STOCK_ERRONE
        FINSI

        erreur_660003828 = i_valid_field_n(g_iartin,$Tcomp_nss9::DUREETR:1)
        SI (erreur_660003828 == 0)
        ALORS
          trace("Tcomp_nss9: envoi ERRONE car DUREETR2 absent")
          ERREUR_660003828 = ERR_SYNTAX_660003828
          code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
          erreur_660003828 = i_PlvMessEmettre(8510,2,g_iartin,"",2, code_rejet_660003828,"DUREETR2",0)
          SAUT STOCK_ERRONE
        FINSI
#
#           Test de la syntaxe du champ DATE du TR1 et TR2
#
        erreur_660003828 = i_get_art_field(g_iartin, $Tcomp_nss9::DATETR:0)
        SI (erreur_660003828 == -1)
        ALORS
          trace("Tcomp_nss9: envoi ERRONE car DATETR1 invalide")
          ERREUR_660003828 = ERR_DATE_660003828
          code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
          erreur_660003828 = i_PlvMessEmettre(8511,2,g_iartin,"",2, code_rejet_660003828,"DUREETR1",0)
          SAUT STOCK_ERRONE
        FINSI
        erreur_660003828 = i_get_art_field(g_iartin, $Tcomp_nss9::DATETR:1)
        SI (erreur_660003828 == -1)
        ALORS
          trace("Tcomp_nss9 : envoi ERRONE car DATETR2 invalide")
          ERREUR_660003828 = ERR_DATE_660003828
          code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
          erreur_660003828 = i_PlvMessEmettre(8511,2,g_iartin,"",2, code_rejet_660003828,"DATETR2",0)
          SAUT STOCK_ERRONE
        FINSI

#####################################################################
# Controle semantique de l'article
#####################################################################           
#
        gsmTlSrv_660003828 = i_get_art_field(g_iartin,$Tcomp_nss9::teleSrvCodeMO:0)
        SI ((gsmTlSrv_660003828 & 0xFF) != 0xFF)
        ALORS
          gsmBrSrv_660003828 = i_get_art_field(g_iartin, $Tcomp_nss9::bearerSvcCodeMO:0)
          SI ((gsmBrSrv_660003828 & 0xFF) != 0xFF)
          ALORS
            trace("Tcomp_nss9 : envoi ERRONE car teleSrvCodeMO et bearerSvcCodeMO presents ensemble")
            ERREUR_660003828 = ERR_CROISE_660003828
            code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
            erreur_660003828 = i_PlvMessEmettre(8515, 2, g_iartin, "", 3, code_rejet_660003828, "teleSrvCodeMO", "bearerSvcCodeMO")
            SAUT STOCK_ERRONE
          FINSI
        FINSI
#####################################################################
# FIN tests semantique
#####################################################################

#####################################################################
# Determination de la distribution ou non de l'article
#####################################################################           
#URS_LYON FO TT13 JLG : appel a la table VariableContexte supprimee, GRI en dur, evol spec
# outgoingRouteTR ne doit pas contenir "GRI" pour TcompTRANSIT
        erreur_660003828 = i_get_art_str(g_iartin, $Tcomp_nss9::outgoingRouteTR:1, pt_outgoingRoute_660003828)

        SI (i_adequation_chaine_expreg (pt_outgoingRoute_660003828, "475249")  != 0)
        ALORS
          val_Key_660003828 = i_get_art_fieldtab(g_iartin, $Tcomp_nss9::serviceKeyIC1, 6) * 10
          val_Key_660003828 = val_Key_660003828 + i_get_art_fieldtab(g_iartin, $Tcomp_nss9::serviceKeyIC1, 7)
          trace1("----------val_Key=%d-------------",val_Key_660003828)
          SI (val_Key_660003828 == 47 || val_Key_660003828 == 48)
          ALORS
            typeCRA_660003828 = 0x08
          SINON
            typeCRA_660003828 = 0x06
          FINSI
        SINON
          i_strcpy(pt_TYPE_COMPOSITE_660003828, "TR_ELM")
        FINSI
#Fin Tcomp TR
      SINON

#Debut Tcomp SDETR
        SI(i_strcmp(pt_TYPE_COMPOSITE_660003828, "SDETR") == 0 )
        ALORS
################################################
# controle de presence des champs obligatoires
################################################

          erreur_660003828 = i_valid_field_n(g_iartin, $Tcomp_nss9::DATEMO:0)
          SI (erreur_660003828 == 0)
          ALORS
            trace("Tcomp_nss9, SDETR : envoi ERRONE car DATEMO absent")
            ERREUR_660003828 = ERR_SYNTAX_660003828
            code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
            erreur_660003828 = i_PlvMessEmettre(8510, 2, g_iartin, "", 2, code_rejet_660003828, "DATEMO", 0)
            SAUT STOCK_ERRONE
          FINSI

          erreur_660003828 = i_valid_field_n(g_iartin, $Tcomp_nss9::HeureMO:0)
          SI (erreur_660003828 == 0)
          ALORS
            trace("Tcomp_nss9, SDETR : envoi ERRONE car HeureMO absent")
            ERREUR_660003828 = ERR_SYNTAX_660003828
            code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
            erreur_660003828 = i_PlvMessEmettre(8510,2,g_iartin,"",2, code_rejet_660003828,"HeureMO",0)
            SAUT STOCK_ERRONE
          FINSI

          erreur_660003828 = i_valid_field_n(g_iartin,$Tcomp_nss9::DUREEMO:0)
          SI (erreur_660003828 == 0)
          ALORS
            trace("Tcomp_nss9, SDETR : envoi ERRONE car DUREEMO absent")
            ERREUR_660003828 = ERR_SYNTAX_660003828
            code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
            erreur_660003828 = i_PlvMessEmettre(8510,2,g_iartin,"",2, code_rejet_660003828,"DUREEMO",0)
            SAUT STOCK_ERRONE
          FINSI

# G5R4lot2
          erreur_660003828 = i_valid_field_n(g_iartin,$Tcomp_nss9::callingNumberMO:0)
          SI (erreur_660003828 == 0)
          ALORS
            trace("Tcomp_nss9, SDETR : envoi ERRONE car callingNumberMO absent")
            ERREUR_660003828 = ERR_SYNTAX_660003828
            code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
            erreur_660003828 = i_PlvMessEmettre(8510,2,g_iartin,"",2, code_rejet_660003828,"callingNumberMO",0)
            SAUT STOCK_ERRONE
          FINSI

          erreur_660003828 = i_valid_field_n(g_iartin,$Tcomp_nss9::exchangeIdentMO:0)
          SI (erreur_660003828 == 0)
          ALORS
            trace("Tcomp_nss9, SDETR : envoi ERRONE car exchangeIdentMO absent")
            ERREUR_660003828 = ERR_SYNTAX_660003828
            code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
            erreur_660003828 = i_PlvMessEmettre(8510,2,g_iartin,"",2, code_rejet_660003828,"exchangeIdentMO",0)
            SAUT STOCK_ERRONE
          FINSI

          erreur_660003828 = i_valid_field_n(g_iartin,$Tcomp_nss9::1CallingLocIfMO:0)
          SI (erreur_660003828 == 0)
          ALORS
            trace("Tcomp_nss9, SDETR : envoi ERRONE car 1CallingLocIfMO absent")
            ERREUR_660003828 = ERR_SYNTAX_660003828
            code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
            erreur_660003828 = i_PlvMessEmettre(8510,2,g_iartin,"",2, code_rejet_660003828,"1CallingLocIfMO",0)
            SAUT STOCK_ERRONE
          FINSI

          erreur_660003828 = i_valid_field_n(g_iartin,$Tcomp_nss9::outgoingRouteTR:0)
          SI (erreur_660003828 == 0)
          ALORS
            trace("Tcomp_nss9, SDETR : envoi ERRONE car outgoingRouteTR absent")
            ERREUR_660003828 = ERR_SYNTAX_660003828
            code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
            erreur_660003828 = i_PlvMessEmettre(8510,2,g_iartin,"",2, code_rejet_660003828,"outgoingRouteTR",0)
            SAUT STOCK_ERRONE
          FINSI

          erreur_660003828 = i_valid_field_n(g_iartin,$Tcomp_nss9::outgoingRouteTR:1)
          SI (erreur_660003828 == 0)
          ALORS
            trace("Tcomp_nss9 : envoi ERRONE car outgoingRouteTR2 absent")
            ERREUR_660003828 = ERR_SYNTAX_660003828
            code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
            erreur_660003828 = i_PlvMessEmettre(8510,2,g_iartin,"",2, code_rejet_660003828,"outgoingRouteTR2",0)
            SAUT STOCK_ERRONE
          FINSI

          erreur_660003828 = i_valid_field_n(g_iartin,$Tcomp_nss9::calledNumberTR:0)
          SI (erreur_660003828 == 0)
          ALORS
            trace("Tcomp_nss9: envoi ERRONE car calledNumberTR absent")
            ERREUR_660003828 = ERR_SYNTAX_660003828
            code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
            erreur_660003828 = i_PlvMessEmettre(8510,2,g_iartin,"",2, code_rejet_660003828,"calledNumberTR",0)
            SAUT STOCK_ERRONE
          FINSI

          erreur_660003828 = i_valid_field_n(g_iartin,$Tcomp_nss9::calledNumberTR:1)
          SI (erreur_660003828 == 0)
          ALORS
            trace("Tcomp_nss9: envoi ERRONE car calledNumberTR2 absent")
            ERREUR_660003828 = ERR_SYNTAX_660003828
            code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
            erreur_660003828 = i_PlvMessEmettre(8510,2,g_iartin,"",2, code_rejet_660003828,"calledNumberTR2",0)
            SAUT STOCK_ERRONE
          FINSI

#####################################################################
# Controle syntaxique de l'article
#####################################################################
#
#       Test de la syntaxe du champ DATE
#
          erreur_660003828 = i_get_art_field(g_iartin, $Tcomp_nss9::DATEMO:0)
          SI (erreur_660003828 == -1)
          ALORS
            trace("Tcomp_nss9, SDETR : envoi ERRONE car DATEMO invalide")
            ERREUR_660003828 = ERR_DATE_660003828
            code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
            erreur_660003828 = i_PlvMessEmettre(8511,2,g_iartin,"",2, code_rejet_660003828,"DATEMO",0)
            SAUT STOCK_ERRONE
          FINSI
#
#      Test automatique du CRA (voir le fichier "artobj.asn1")
#
          erreur_660003828 = i_test_art(g_iartin)
          SI erreur_660003828
          ALORS
            trace("Tcomp_nss9, SDETR : envoi ERRONE : test automatique")
            ERREUR_660003828 = ERR_SYNTAX_660003828
            code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
            erreur_660003828 = i_PlvMessEmettre(8512,2,g_iartin,"",1, code_rejet_660003828,0,0)
            SAUT STOCK_ERRONE
          FINSI
#
#       Test syntaxique champ "localisation" (1stCallingLocIf_MO)
#
          erreur_660003828 = i_test_field_ila_n(g_iartin,$Tcomp_nss9::1CallingLocIfMO:0,"Lmap")
          SI (erreur_660003828 != 0)
          ALORS
            trace("Tcomp_nss9, SDETR : envoi ERRONE car 1CallingLocIfMO invalide")
            ERREUR_660003828 = ERR_SYNTAX_660003828
            code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
            erreur_660003828 = i_PlvMessEmettre(8513,2,g_iartin,"",3, code_rejet_660003828,"1CallingLocIfMO","MAP")
            SAUT STOCK_ERRONE
          FINSI
#
#       Test syntaxique champ "nbPulse" si present
#
          erreur_660003828 = i_valid_field_n(g_iartin,$Tcomp_nss9::numOfMrPulseTR:0)
          SI (erreur_660003828 != 0)
          ALORS
            nbPulse_660003828 = i_get_art_field(g_iartin,$Tcomp_nss9::numOfMrPulseTR:0)
            SI (nbPulse_660003828 > 3000)
            ALORS
              trace("Tcomp_nss9, SDETR : envoi ERRONE car numOfMrPulse > 3000")
              ERREUR_660003828 = ERR_SEM_660003828
              code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
              erreur_660003828 = i_PlvMessEmettre(8514,2,g_iartin,"",3, code_rejet_660003828,"numOfMrPulseTR","3000")
              SAUT STOCK_ERRONE
            FINSI
          FINSI

          erreur_660003828 = i_valid_field_n(g_iartin,$Tcomp_nss9::numOfMrPulseTR:1)
          SI (erreur_660003828 != 0)
          ALORS
            nbPulse_660003828 = i_get_art_field(g_iartin,$Tcomp_nss9::numOfMrPulseTR:1)
            SI (nbPulse_660003828 > 3000)
            ALORS
              trace("Tcomp_nss9, SDETR : envoi ERRONE car numOfMrPulse2 > 3000")
              ERREUR_660003828 = ERR_SEM_660003828
              code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
              erreur_660003828 = i_PlvMessEmettre(8514,2,g_iartin,"",3, code_rejet_660003828,"numOfMrPulseTR2","3000")
              SAUT STOCK_ERRONE
            FINSI
          FINSI

#####################################################################
# Controle semantique de l'article
#####################################################################
#
# Retraitement de tlserv et svcsup. Si tlserv et svcsup sont 
# renseignes => Erreur
#
          gsmTlSrv_660003828 = i_get_art_field(g_iartin,$Tcomp_nss9::teleSrvCodeMO:0)
          SI ((gsmTlSrv_660003828 & 0xFF) != 0xFF)
          ALORS
            gsmBrSrv_660003828 = i_get_art_field(g_iartin,$Tcomp_nss9::bearerSvcCodeMO:0)
            SI ((gsmBrSrv_660003828 & 0xFF) != 0xFF)
            ALORS
              trace("Tcomp_nss9, SDETR : envoi ERRONE car teleSrvCodeMO et bearerSvcCodeMO presents ensemble")
              ERREUR_660003828 = ERR_CROISE_660003828
              code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
              erreur_660003828 = i_PlvMessEmettre(8515,2,g_iartin,"",3, code_rejet_660003828,"teleSrvCodeMO","bearerSvcCodeMO")
              SAUT STOCK_ERRONE
            FINSI
          FINSI

#
# Stockage en errone si les 4 champs CAMEL ne sont pas TOUS presents ou TOUS absents
#
          gSMCallRefNum_MO_660003828 = i_valid_field_n(g_iartin,$Tcomp_nss9::gSMCallRefNumMO:0)
          mSCAddress_MO_660003828 = i_valid_field_n(g_iartin,$Tcomp_nss9::mSCAddressMO:0)
          CAMEL_SCFAdr_MO_660003828 = i_valid_field_n(g_iartin,$Tcomp_nss9::CAMEL_SCFAdrMO:0)
          CAMEL_servkey_MO_660003828 = i_valid_field_n(g_iartin,$Tcomp_nss9::CAMEL_servkeyMO:0)

          SI ( gSMCallRefNum_MO_660003828 + mSCAddress_MO_660003828 + CAMEL_SCFAdr_MO_660003828 + CAMEL_servkey_MO_660003828 > 0 )
          ALORS
            SI ( gSMCallRefNum_MO_660003828 + mSCAddress_MO_660003828 + CAMEL_SCFAdr_MO_660003828 + CAMEL_servkey_MO_660003828 < 4 )
            ALORS
              trace("Tcomp_nss9, SDETR : envoi ERRONE car champs CAMEL non tous absents ou presents)")
              ERREUR_660003828 = ERR_CROISE_660003828
              code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
              erreur_660003828 = i_PlvMessEmettre(8516,2,g_iartin,"",1, code_rejet_660003828,0,0)
              SAUT STOCK_ERRONE
            FINSI
          FINSI

## OGA 309 : 1stRdioChnlUsed = 0 ou 1 sinon ERRONE
          SI (i_valid_field_n(g_iartin, $Tcomp_nss9::1RdioChnlUsedMO:0) == 1)
          ALORS
            erreur_660003828 = i_get_art_field(g_iartin, $Tcomp_nss9::1RdioChnlUsedMO:0)
            SI( (erreur_660003828 != 0) && (erreur_660003828 != 1) )
            ALORS
              trace("Tcomp_nss9, SDETR : Erreur champ 1RdioChnlUsedMO")
              ERREUR_660003828 = ERR_SEM_660003828
              code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
              erreur_660003828 = i_PlvMessEmettre(8514,2,g_iartin,"",3, code_rejet_660003828,"1RdioChnlUsedMO","1")
              SAUT STOCK_ERRONE
            FINSI
          FINSI

## ano 3034 : TransparencyIndicator = 0 ou 1 sinon ERRONE
          SI (i_valid_field_n(g_iartin, $Tcomp_nss9::transIndicMO:0) == 1)
          ALORS
            erreur_660003828 = i_get_art_field(g_iartin, $Tcomp_nss9::transIndicMO:0)
            SI( (erreur_660003828 != 0) && (erreur_660003828 != 1) )
            ALORS
              trace("Tcomp_nss9, SDETR : Erreur champ transIndicMO")
              ERREUR_660003828 = ERR_SEM_660003828
              code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
              erreur_660003828 = i_PlvMessEmettre(8514,2,g_iartin,"",3, code_rejet_660003828,"transIndicMO","1")
              SAUT STOCK_ERRONE
            FINSI
          FINSI

## ano 3034 : disconnectParty = 0 ou 1 ou 2 sinon ERRONE
          SI (i_valid_field_n(g_iartin, $Tcomp_nss9::disconnPartyMO:0) == 1)
          ALORS
            erreur_660003828 = i_get_art_field(g_iartin, $Tcomp_nss9::disconnPartyMO:0)
            SI( (erreur_660003828 != 0) && (erreur_660003828 != 1) && (erreur_660003828 != 2) )
            ALORS
              trace("Tcomp_nss9, SDETR : Erreur champ disconnPartyMO")
              ERREUR_660003828 = ERR_SEM_660003828
              code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
              erreur_660003828 = i_PlvMessEmettre(8514,2,g_iartin,"",3, code_rejet_660003828,"disconnPartyMO","2")
              SAUT STOCK_ERRONE
            FINSI
          FINSI

# Controle croise : T3t3lC1/T4t3.7 et T3t3lC2/T4t3.7 ne doivent pas etre presents simultanement
          SI (i_valid_field_n(g_iartin, $Tcomp_nss9::freeFormatData1) == 1) && (i_valid_field_n(g_iartin, $Tcomp_nss9::freeFormatData2) == 1)
          ALORS
            ERREUR_660003828 = ERR_SEM_660003828
            code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
            erreur_660003828 = i_PlvMessEmettre(8515,2,g_iartin,"",3, code_rejet_660003828,"T3t3lC1/T4t3.7/freeFormatData","T3t3lC2/T4t3.7/freeFormatData")
            SAUT STOCK_ERRONE
          FINSI

# G3R10 ajout de controles selon Service_SDETR
         	SI (Service_SDETR_660003828 > 2)
         	ALORS
################################################
# controle de presence des champs obligatoires
################################################
            erreur_660003828 = i_valid_field_n(g_iartin,$Tcomp_nss9::outgoingRouteTR:2)
            SI (erreur_660003828 == 0)
            ALORS
              trace("Tcomp_nss9, SDETR : envoi ERRONE car outgoingRouteTR3 absent")
              ERREUR_660003828 = ERR_SYNTAX_660003828
              code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
              erreur_660003828 = i_PlvMessEmettre(8510,2,g_iartin,"",2, code_rejet_660003828,"outgoingRouteTR3",0)
              SAUT STOCK_ERRONE
            FINSI
            
            erreur_660003828 = i_valid_field_n(g_iartin,$Tcomp_nss9::calledNumberTR:2)
            SI (erreur_660003828 == 0)
            ALORS
              trace("Tcomp_nss9, SDETR : envoi ERRONE car calledNumberTR3 absent")
              ERREUR_660003828 = ERR_SYNTAX_660003828
              code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
              erreur_660003828 = i_PlvMessEmettre(8510,2,g_iartin,"",2, code_rejet_660003828,"calledNumberTR3",0)
              SAUT STOCK_ERRONE
            FINSI
#####################################################################
# Controle syntaxique de l'article
#####################################################################
            erreur_660003828 = i_valid_field_n(g_iartin,$Tcomp_nss9::numOfMrPulseTR:2)
            SI (erreur_660003828 != 0)
            ALORS
              nbPulse_660003828 = i_get_art_field(g_iartin,$Tcomp_nss9::numOfMrPulseTR:2)
              SI (nbPulse_660003828 > 3000)
              ALORS
                trace("Tcomp_nss9, SDETR : envoi ERRONE car numOfMrPulseTR3 > 3000")
                ERREUR_660003828 = ERR_SEM_660003828
                code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
                erreur_660003828 = i_PlvMessEmettre(8514,2,g_iartin,"",3, code_rejet_660003828,"numOfMrPulseTR3","3000")
                SAUT STOCK_ERRONE
              FINSI
            FINSI
          FINSI

         	SI (Service_SDETR_660003828 > 3)
         	ALORS
################################################
# controle de presence des champs obligatoires
################################################
            erreur_660003828 = i_valid_field_n(g_iartin,$Tcomp_nss9::outgoingRouteTR:3)
            SI (erreur_660003828 == 0)
            ALORS
              trace("Tcomp_nss9, SDETR : envoi ERRONE car outgoingRouteTR4 absent")
              ERREUR_660003828 = ERR_SYNTAX_660003828
              code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
              erreur_660003828 = i_PlvMessEmettre(8510,2,g_iartin,"",2, code_rejet_660003828,"outgoingRouteTR4",0)
              SAUT STOCK_ERRONE
            FINSI
            
            erreur_660003828 = i_valid_field_n(g_iartin,$Tcomp_nss9::calledNumberTR:3)
            SI (erreur_660003828 == 0)
            ALORS
              trace("Tcomp_nss9, SDETR : envoi ERRONE car calledNumberTR4 absent")
              ERREUR_660003828 = ERR_SYNTAX_660003828
              code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
              erreur_660003828 = i_PlvMessEmettre(8510,2,g_iartin,"",2, code_rejet_660003828,"calledNumberTR4",0)
              SAUT STOCK_ERRONE
            FINSI
#####################################################################
# Controle syntaxique de l'article
#####################################################################
            erreur_660003828 = i_valid_field_n(g_iartin,$Tcomp_nss9::numOfMrPulseTR:3)
            SI (erreur_660003828 != 0)
            ALORS
              nbPulse_660003828 = i_get_art_field(g_iartin,$Tcomp_nss9::numOfMrPulseTR:3)
              SI (nbPulse_660003828 > 3000)
              ALORS
                trace("Tcomp_nss9, SDETR : envoi ERRONE car numOfMrPulseTR4 > 3000")
                ERREUR_660003828 = ERR_SEM_660003828
                code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
                erreur_660003828 = i_PlvMessEmettre(8514,2,g_iartin,"",3, code_rejet_660003828,"numOfMrPulseTR4","3000")
                SAUT STOCK_ERRONE
              FINSI
            FINSI
          FINSI

         	SI (Service_SDETR_660003828 > 4)
         	ALORS
################################################
# controle de presence des champs obligatoires
################################################
            erreur_660003828 = i_valid_field_n(g_iartin,$Tcomp_nss9::outgoingRouteTR:3)
            SI (erreur_660003828 == 0)
            ALORS
              trace("Tcomp_nss9, SDETR : envoi ERRONE car outgoingRouteTR4 absent")
              ERREUR_660003828 = ERR_SYNTAX_660003828
              code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
              erreur_660003828 = i_PlvMessEmettre(8510,2,g_iartin,"",2, code_rejet_660003828,"outgoingRouteTR4",0)
              SAUT STOCK_ERRONE
            FINSI
            
            erreur_660003828 = i_valid_field_n(g_iartin,$Tcomp_nss9::calledNumberTR:3)
            SI (erreur_660003828 == 0)
            ALORS
              trace("Tcomp_nss9, SDETR: envoi ERRONE car calledNumberTR4 absent")
              ERREUR_660003828 = ERR_SYNTAX_660003828
              code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
              erreur_660003828 = i_PlvMessEmettre(8510,2,g_iartin,"",2, code_rejet_660003828,"calledNumberTR4",0)
              SAUT STOCK_ERRONE
            FINSI
#####################################################################
# Controle syntaxique de l'article
#####################################################################
            erreur_660003828 = i_valid_field_n(g_iartin,$Tcomp_nss9::numOfMrPulseTR:3)
            SI (erreur_660003828 != 0)
            ALORS
              nbPulse_660003828 = i_get_art_field(g_iartin,$Tcomp_nss9::numOfMrPulseTR:3)
              SI (nbPulse_660003828 > 3000)
              ALORS
                trace("Tcomp_nss9, SDETR : envoi ERRONE car numOfMrPulseTR4 > 3000")
                ERREUR_660003828 = ERR_SEM_660003828
                code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
                erreur_660003828 = i_PlvMessEmettre(8514,2,g_iartin,"",3, code_rejet_660003828,"numOfMrPulseTR4","3000")
                SAUT STOCK_ERRONE
              FINSI
            FINSI 
         	FINSI
# /G3R10
#####################################################################
# FIN tests sur SDETR
#####################################################################
#Fin Tcomp SDETR

# G2R6
        SINON
          SI(i_strcmp(pt_TYPE_COMPOSITE_660003828, "MSOTR") == 0 )
          ALORS
#Debut Tcomp MSOTR
################################################
# controle de presence des champs obligatoires
################################################

            erreur_660003828 = i_valid_field_n(g_iartin,$Tcomp_nss9::DATEMO:0)
            SI (erreur_660003828 == 0)
            ALORS
              trace("Tcomp_nss9 : envoi ERRONE car DATEMO absent")
              ERREUR_660003828 = ERR_SYNTAX_660003828
              code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
              erreur_660003828 = i_PlvMessEmettre(8510,2,g_iartin,"",2, code_rejet_660003828,"DATEMO",0)
              SAUT STOCK_ERRONE
            FINSI

            erreur_660003828 = i_valid_field_n(g_iartin,$Tcomp_nss9::HeureMO:0)
            SI (erreur_660003828 == 0)
            ALORS
              trace("Tcomp_nss9: envoi ERRONE car HeureMO absent")
              ERREUR_660003828 = ERR_SYNTAX_660003828
              code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
              erreur_660003828 = i_PlvMessEmettre(8510,2,g_iartin,"",2, code_rejet_660003828,"HeureMO",0)
              SAUT STOCK_ERRONE
            FINSI

            erreur_660003828 = i_valid_field_n(g_iartin,$Tcomp_nss9::DUREEMO:0)
            SI (erreur_660003828 == 0)
            ALORS
              trace("Tcomp_nss9: envoi ERRONE car DUREEMO absent")
              ERREUR_660003828 = ERR_SYNTAX_660003828
              code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
              erreur_660003828 = i_PlvMessEmettre(8510,2,g_iartin,"",2, code_rejet_660003828,"DUREEMO",0)
              SAUT STOCK_ERRONE
            FINSI

            erreur_660003828 = i_valid_field_n(g_iartin,$Tcomp_nss9::exchangeIdentMO:0)
            SI (erreur_660003828 == 0)
            ALORS
              trace("Tcomp_nss9 : envoi ERRONE car exchangeIdentMO absent")
              ERREUR_660003828 = ERR_SYNTAX_660003828
              code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
              erreur_660003828 = i_PlvMessEmettre(8510,2,g_iartin,"",2, code_rejet_660003828,"exchangeIdentMO",0)
              SAUT STOCK_ERRONE
            FINSI

            erreur_660003828 = i_valid_field_n(g_iartin,$Tcomp_nss9::outgoingRouteTR:1)
            SI (erreur_660003828 == 0)
            ALORS
              trace("Tcomp_nss9 : envoi ERRONE car outgoingRouteTR2 absent")
              ERREUR_660003828 = ERR_SYNTAX_660003828
              code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
              erreur_660003828 = i_PlvMessEmettre(8510,2,g_iartin,"",2, code_rejet_660003828,"outgoingRouteTR2",0)
              SAUT STOCK_ERRONE
            FINSI

            erreur_660003828 = i_valid_field_n(g_iartin,$Tcomp_nss9::calledNumberTR:1)
            SI (erreur_660003828 == 0)
            ALORS
              trace("Tcomp_nss9: envoi ERRONE car calledNumberTR2 absent")
              ERREUR_660003828 = ERR_SYNTAX_660003828
              code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
              erreur_660003828 = i_PlvMessEmettre(8510,2,g_iartin,"",2, code_rejet_660003828,"calledNumberTR2",0)
              SAUT STOCK_ERRONE
            FINSI

            erreur_660003828 = i_valid_field_n(g_iartin,$Tcomp_nss9::DATETR:1)
            SI (erreur_660003828 == 0)
            ALORS
              trace("Tcomp_nss9 : envoi ERRONE car DATETR2 absent")
              ERREUR_660003828 = ERR_SYNTAX_660003828
              code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
              erreur_660003828 = i_PlvMessEmettre(8510,2,g_iartin,"",2, code_rejet_660003828,"DATETR2",0)
              SAUT STOCK_ERRONE
            FINSI

            erreur_660003828 = i_valid_field_n(g_iartin,$Tcomp_nss9::heureTR:1)
            SI (erreur_660003828 == 0)
            ALORS
              trace("Tcomp_nss9: envoi ERRONE car HeureTR2 absent")
              ERREUR_660003828 = ERR_SYNTAX_660003828
              code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
              erreur_660003828 = i_PlvMessEmettre(8510,2,g_iartin,"",2, code_rejet_660003828,"HeureTR2",0)
              SAUT STOCK_ERRONE
            FINSI

            erreur_660003828 = i_valid_field_n(g_iartin,$Tcomp_nss9::DUREETR:1)
            SI (erreur_660003828 == 0)
            ALORS
              trace("Tcomp_nss9: envoi ERRONE car DUREETR2 absent")
              ERREUR_660003828 = ERR_SYNTAX_660003828
              code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
              erreur_660003828 = i_PlvMessEmettre(8510,2,g_iartin,"",2, code_rejet_660003828,"DUREETR2",0)
              SAUT STOCK_ERRONE
            FINSI


#####################################################################
# Controle syntaxique de l'article
#####################################################################

#
#         Test de la syntaxe du champ DATEMO
            erreur_660003828 = i_get_art_field(g_iartin, $Tcomp_nss9::DATEMO:0)
            SI (erreur_660003828 == -1)
            ALORS
              trace("Tcomp_nss9: envoi ERRONE car DATEMO invalide")
              ERREUR_660003828 = ERR_DATE_660003828
              code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
              erreur_660003828 = i_PlvMessEmettre(8511,2,g_iartin,"",2, code_rejet_660003828,"DATEMO",0)
              SAUT STOCK_ERRONE
            FINSI

#         Test de la syntaxe du champ heureMO
            erreur_660003828 = i_get_art_field(g_iartin, $Tcomp_nss9::HeureMO:0)
            SI (erreur_660003828 == -1)
            ALORS
              trace("Tcomp_nss9: envoi ERRONE car HeureMO invalide")
              ERREUR_660003828 = ERR_DATE_660003828
              code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
              erreur_660003828 = i_PlvMessEmettre(8511,2,g_iartin,"",2, code_rejet_660003828,"HeureMO",0)
              SAUT STOCK_ERRONE
            FINSI

#         Test de la syntaxe du champ DUREEMO
            erreur_660003828 = i_get_art_field(g_iartin, $Tcomp_nss9::DUREEMO:0)
            SI (erreur_660003828 == -1)
            ALORS
              trace("Tcomp_nss9: envoi ERRONE car DUREEMO invalide")
              ERREUR_660003828 = ERR_DATE_660003828
              code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
              erreur_660003828 = i_PlvMessEmettre(8511,2,g_iartin,"",2, code_rejet_660003828,"DUREEMO",0)
              SAUT STOCK_ERRONE
            FINSI

#         Test de la syntaxe du champ DATETR2
            erreur_660003828 = i_get_art_field(g_iartin, $Tcomp_nss9::DATETR:1)
            SI (erreur_660003828 == -1)
            ALORS
              trace("Tcomp_nss9: envoi ERRONE car DATETR2 invalide")
              ERREUR_660003828 = ERR_DATE_660003828
              code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
              erreur_660003828 = i_PlvMessEmettre(8511,2,g_iartin,"",2, code_rejet_660003828,"DATETR2",0)
              SAUT STOCK_ERRONE
            FINSI

#         Test de la syntaxe du champ heureTR2
            erreur_660003828 = i_get_art_field(g_iartin, $Tcomp_nss9::heureTR:1)
            SI (erreur_660003828 == -1)
            ALORS
              trace("Tcomp_nss9: envoi ERRONE car heureTR2 invalide")
              ERREUR_660003828 = ERR_DATE_660003828
              code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
              erreur_660003828 = i_PlvMessEmettre(8511,2,g_iartin,"",2, code_rejet_660003828,"heureTR2",0)
              SAUT STOCK_ERRONE
            FINSI

#         Test de la syntaxe du champ DUREETR2
            erreur_660003828 = i_get_art_field(g_iartin, $Tcomp_nss9::DUREETR:1)
            SI (erreur_660003828 == -1)
            ALORS
              trace("Tcomp_nss9: envoi ERRONE car DUREETR2 invalide")
              ERREUR_660003828 = ERR_DATE_660003828
              code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
              erreur_660003828 = i_PlvMessEmettre(8511,2,g_iartin,"",2, code_rejet_660003828,"DUREETR2",0)
              SAUT STOCK_ERRONE
            FINSI

#####################################################################
# Fin controle syntaxique de l'article
#####################################################################

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

#####################################################################
# Determination de la distribution ou non de l'article
# G3R9
#####################################################################           
# GRI en dur
# outgoingRouteTR ne doit pas contenir "GRI" pour TcompTRANSIT
            erreur_660003828 = i_get_art_str(g_iartin, $Tcomp_nss9::outgoingRouteTR:1, pt_outgoingRoute_660003828)

            SI (i_adequation_chaine_expreg (pt_outgoingRoute_660003828, "475249")  == 0)
            ALORS
              i_strcpy(pt_TYPE_COMPOSITE_660003828, "TR_ELM")
            FINSI


#####################################################################
# FIN tests semantique
#####################################################################

#Fin Tcomp MSOTR

          SINON
            SI(i_strcmp(pt_TYPE_COMPOSITE_660003828, "TRTR") == 0 )
            ALORS
#Debut Tcomp TRTR
################################################
# controle de presence des champs obligatoires
################################################
# G3R9 lot1
              #erreur = i_valid_field_n(g_iartin,$Tcomp_nss9::globalTitle_IC:0)
              #SI (erreur == 0)
              #ALORS
              # trace("Tcomp_nss9: envoi ERRONE car globalTitle_IC1 absent")
              # ERREUR = ERR_SYNTAX
              # code_rejet = MODULE + ERREUR + EFFICACE
              # erreur = i_PlvMessEmettre(8510,2,g_iartin,"",2, code_rejet,"globalTitle_IC1",0)
              # SAUT STOCK_ERRONE
              #FINSI

              erreur_660003828 = i_valid_field_n(g_iartin,$Tcomp_nss9::globalTSSNum_IC:0)
              SI (erreur_660003828 == 0)
              ALORS
                trace("Tcomp_nss9: envoi ERRONE car globalTSSNum_IC absent")
                ERREUR_660003828 = ERR_SYNTAX_660003828
                code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
                erreur_660003828 = i_PlvMessEmettre(8510,2,g_iartin,"",2, code_rejet_660003828,"globalTSSNum_IC",0)
                SAUT STOCK_ERRONE
              FINSI
#/G3R9 lot1

              erreur_660003828 = i_valid_field_n(g_iartin,$Tcomp_nss9::exchangeIdentTR:0)
              SI (erreur_660003828 == 0)
              ALORS
                trace("Tcomp_nss9: envoi ERRONE car exchangeIdentTR1 absent")
                ERREUR_660003828 = ERR_SYNTAX_660003828
                code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
                erreur_660003828 = i_PlvMessEmettre(8510,2,g_iartin,"",2, code_rejet_660003828,"exchangeIdentTR1",0)
                SAUT STOCK_ERRONE
              FINSI

              erreur_660003828 = i_valid_field_n(g_iartin,$Tcomp_nss9::incomingRoute:0)
              SI (erreur_660003828 == 0)
              ALORS
                trace("Tcomp_nss9: envoi ERRONE car incomingRoute1 absent")
                ERREUR_660003828 = ERR_SYNTAX_660003828
                code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
                erreur_660003828 = i_PlvMessEmettre(8510,2,g_iartin,"",2, code_rejet_660003828,"incomingRoute1",0)
                SAUT STOCK_ERRONE
              FINSI

              erreur_660003828 = i_valid_field_n(g_iartin,$Tcomp_nss9::outgoingRouteTR:2)
              SI (erreur_660003828 == 0)
              ALORS
                trace("Tcomp_nss9: envoi ERRONE car outgoingRouteTR3 absent")
                ERREUR_660003828 = ERR_SYNTAX_660003828
                code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
                erreur_660003828 = i_PlvMessEmettre(8510,2,g_iartin,"",2, code_rejet_660003828,"outgoingRouteTR3",0)
                SAUT STOCK_ERRONE
              FINSI

              erreur_660003828 = i_valid_field_n(g_iartin,$Tcomp_nss9::DATETR:2)
              SI (erreur_660003828 == 0)
              ALORS
                trace("Tcomp_nss9 : envoi ERRONE car DATETR3 absent")
                ERREUR_660003828 = ERR_SYNTAX_660003828
                code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
                erreur_660003828 = i_PlvMessEmettre(8510,2,g_iartin,"",2, code_rejet_660003828,"DATETR3",0)
                SAUT STOCK_ERRONE
              FINSI

              erreur_660003828 = i_valid_field_n(g_iartin,$Tcomp_nss9::heureTR:2)
              SI (erreur_660003828 == 0)
              ALORS
                trace("Tcomp_nss9: envoi ERRONE car HeureTR3 absent")
                ERREUR_660003828 = ERR_SYNTAX_660003828
                code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
                erreur_660003828 = i_PlvMessEmettre(8510,2,g_iartin,"",2, code_rejet_660003828,"heureTR3",0)
                SAUT STOCK_ERRONE
              FINSI

              erreur_660003828 = i_valid_field_n(g_iartin,$Tcomp_nss9::DUREETR:2)
              SI (erreur_660003828 == 0)
              ALORS
                trace("Tcomp_nss9: envoi ERRONE car DUREETR3 absent")
                ERREUR_660003828 = ERR_SYNTAX_660003828
                code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
                erreur_660003828 = i_PlvMessEmettre(8510,2,g_iartin,"",2, code_rejet_660003828,"DUREETR3",0)
                SAUT STOCK_ERRONE
              FINSI

#####################################################################
# Controle syntaxique de l'article
#####################################################################

#           Test de la syntaxe du champ DATE
              erreur_660003828 = i_get_art_field(g_iartin, $Tcomp_nss9::DATETR:2)
              SI (erreur_660003828 == -1)
              ALORS
                trace("Tcomp_nss9: envoi ERRONE car DATETR3 invalide")
                ERREUR_660003828 = ERR_DATE_660003828
                code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
                erreur_660003828 = i_PlvMessEmettre(8511,2,g_iartin,"",2, code_rejet_660003828,"DATETR3",0)
                SAUT STOCK_ERRONE
              FINSI

#           Test de la syntaxe du champ heureTR3
              erreur_660003828 = i_get_art_field(g_iartin, $Tcomp_nss9::heureTR:2)
              SI (erreur_660003828 == -1)
              ALORS
                trace("Tcomp_nss9: envoi ERRONE car heureTR3 invalide")
                ERREUR_660003828 = ERR_DATE_660003828
                code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
                erreur_660003828 = i_PlvMessEmettre(8511,2,g_iartin,"",2, code_rejet_660003828,"heureTR3",0)
                SAUT STOCK_ERRONE
              FINSI

#           Test de la syntaxe du champ DUREETR3
              erreur_660003828 = i_get_art_field(g_iartin, $Tcomp_nss9::DUREETR:2)
              SI (erreur_660003828 == -1)
              ALORS
                trace("Tcomp_nss9: envoi ERRONE car DUREETR3 invalide")
                ERREUR_660003828 = ERR_DATE_660003828
                code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
                erreur_660003828 = i_PlvMessEmettre(8511,2,g_iartin,"",2, code_rejet_660003828,"DUREETR3",0)
                SAUT STOCK_ERRONE
              FINSI
# G2R6 lot3 : evolution spec
#           disconnectParty = 0 ou 1 ou 2 sinon ERRONE
              SI (i_valid_field_n(g_iartin, $Tcomp_nss9::disconnPartyTR:2) == 1)
              ALORS
                erreur_660003828 = i_get_art_field(g_iartin, $Tcomp_nss9::disconnPartyTR:2)
                SI( (erreur_660003828 != 0) && (erreur_660003828 != 1) && (erreur_660003828 != 2) )
                ALORS
                  trace("Tcomp_nss9 : Erreur champ disconnPartyTR3")
                  ERREUR_660003828 = ERR_SEM_660003828
                  code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
                  erreur_660003828 = i_PlvMessEmettre(8514,2,g_iartin,"",3, code_rejet_660003828,"disconnPartyTR3","2")
                  SAUT STOCK_ERRONE
                FINSI
              FINSI
# /G2R6 lot3 : evolution spec
#####################################################################
# Fin controle syntaxique de l'article
#####################################################################

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

#####################################################################
# Determination de la distribution ou non de l'article
#####################################################################           
# GRI en dur
# outgoingRouteTR ne doit pas contenir "GRI" pour TcompTRANSIT
              erreur_660003828 = i_get_art_str(g_iartin, $Tcomp_nss9::outgoingRouteTR:2, pt_outgoingRoute_660003828)

              SI (i_adequation_chaine_expreg (pt_outgoingRoute_660003828, "475249")  == 0)
              ALORS
                i_strcpy(pt_TYPE_COMPOSITE_660003828, "TR_ELM")
              FINSI
#####################################################################
# FIN tests semantique
#####################################################################
            FINSI
#Fin Tcomp TRTR
# G2R6
#####################################################################
# FIN tests semantique
#####################################################################

#####################
# Fin du traitement
#####################
          FINSI
        FINSI
      FINSI
    FINSI
  FINSI
SINON
#
#   dans ce cas, on stocke l'article en errone
#
  ERREUR_660003828 = ERR_SYNTAX_660003828
  code_rejet_660003828 = MODULE_660003828 + ERREUR_660003828 + EFFICACE_660003828
  erreur_660003828 = i_PlvMessEmettre(8517,2,g_iartin,"",1, code_rejet_660003828,0,0)
  SAUT STOCK_ERRONE
FINSI

#       On incremente le compteur
###############################
# increment du compteur
###############################

SI (i_strcmp(pt_TYPE_COMPOSITE_660003828, "TR_ELM") == 0 )
ALORS
  trace("stockage ELIMINE pour CRA Tcomp TR ou MSOTR ou TRTR")
  erreur_660003828 = i_stocke_art(g_iartin, 0, PT_DIVERS, 0)
SINON
  Y_660003828=g_ieec
  X_660003828=0
  Z_660003828=0
  X_660003828=typeCRA_660003828
  date_660003828 = i_DHgetLocalTime(4, 7, i_date_audit())
  trace1("erreur=i_incr_cpt(CPT,X,Y,Z,date,INCREMENT)cpt=%d",CPT_660003828)
  erreur_660003828=i_incr_cpt(CPT_660003828,X_660003828,Y_660003828,Z_660003828,date_660003828,INCREMENT_660003828)

# compteur 3G pour les composites SDE de type 00
  erreur_660003828 = i_valid_field_n(g_iartin, $Tcomp_nss9::rNCidOf1stRNCMO:0)
  SI ( (typeCRA_660003828 == 0) && (erreur_660003828 == 1) )
  ALORS
    Y_660003828=g_ieec
    Z_660003828=0
    X_660003828=typeCRA_660003828
    date_660003828 = i_DHgetLocalTime(4, 7, i_date_audit())
    trace1("erreur=i_incr_cpt(CPT3G,X,Y,Z,date,INCREMENT)cpt=%d",CPT3G_660003828)
    erreur_660003828=i_incr_cpt(CPT3G_660003828,X_660003828,Y_660003828,Z_660003828,date_660003828,INCREMENT_660003828)
  FINSI
  trace("stockage PT_OK CRA Tcomp SDE, CFWD ou SDETR")
  erreur_660003828 = i_stocke_art(g_iartin, 0, PT_OK, 0)
FINSI

trace("**** Tcomp_nss9 : Fin creation article dans le format pivot OK")

#
# Distribution proprement dite (aiguillage et mise au format)
#
RETOUR TRAIT_OK


########################
# stockage des errones #
########################
POINT STOCK_ERRONE
erreur_660003828 = i_make_art_rej(g_iartin, g_iartout, code_rejet_660003828)

erreur_660003828 = i_stocke_art(g_iartout,0,PT_ERRONE,0)
RETOUR TRAIT_OK
#----------- fin pcode Tcomp_nss9_tr.src -------------
