7.8.12.2. Syntaxe - Boutons pour la création de la formule

Si vous utilisez les boutons $VAR= | IF | ELSEIF, vous êtes sûr d'utiliser la syntaxe correcte lors de la création de la formule.

[Remarque]Remarque

Pour finir, vérifiez toujours l'ensemble de la saisie à l'aide de Check.

"Algorithme des caractéristiques [Attribute algorithm]" Fenêtre de dialogue

"Algorithme des caractéristiques [Attribute algorithm]" Fenêtre de dialogue

  • $VAR=

    Ce bouton ne fait que transférer la variable affichée sous Nom [Name] dans le champ de saisie.

  • IF

    Un algorithme construit par une condition IF peut se présenter comme suit :

    IF ( ) THEN 
       D3 = 
    ELSE 
       D3 = 
    ENDIF

    Entre les parenthèses () , saisissez votre condition (par ex. "L1.EQ.10"). Ici, dans l'exemple, "D3" est la variable sélectionnée dans la liste des variables.

    Derrière THEN D3 = , saisissez la valeur que D3 doit prendre lorsque la condition est remplie .

    ELSE D3 = contient la valeur de D3 si la condition n'est pas remplie . ENDIF permet de conclure la condition.

    Exemple avec des valeurs:

    IF (L1.EQ.10) THEN
    D3 = 20
    ELSE
    D3 = 30
    ENDIF

  • ELSEIF

    -> Il est généré ce qui suit :

    ELSEIF ( ) THEN
     <selektierte Variable> = 

    Si des distinctions de cas doivent être faites, il est possible de travailler avec des instructions ELSEIF.

    [Remarque]Remarque

    Les distinctions de cas ELSEIF doivent se terminer par un ELSE.

    Avant de cliquer, placez donc le curseur au bon endroit avant la commande ELSE.

    Exemple avec des valeurs

    IF (L1.EQ.10) THEN 
    D3 = 10 
    ELSEIF (L1.EQ.20) THEN 
    D3 = 20 
    ELSEIF (L1.EQ.30) THEN 
    D3 = 30 
    ELSE
    D3 = 40
    ENDIF 

  • Dans une variable d'algorithme de caractéristique [Attribute algorithm], plusieurs conditions IF peuvent également être placées l'une derrière l'autre.

    L'utilisation d'une seule condition IF avec des distinctions de cas ELSEIF conduirait souvent à des solutions beaucoup plus complexes avec beaucoup plus d'ELSEIF.

    Structure des conditions à l'aide d'un exemple:

    IF ( KG.EQ.'-')THEN
     NB1 = '$TNR. $TYP.-$KDM.-$HUB.-ZR-$WZ.'
    ELSE
     NB1 = '$TNR. $TYP.-$KDM.-$HUB.-ZR-$WZ.-$KG.'
    ENDIF
    IF ( ZAK.EQ.'-')THEN
     NB1 = '$NB1.'
    ELSE
     NB1 = '$NB1.-$ZAK.'
    ENDIF
    IF( YSR.EQ.'1'.AND.SIE.EQ.'-')THEN
     NB1 = '$NB1. ZUB-C'
    ELSEIF( YSR.EQ.'1'.AND.SIE.EQ.'1')THEN
     NB1 = '$NB1. ZUB-CL'
    ELSEIF( YSR.EQ.'2'.AND.SIE.EQ.'-')THEN
     NB1 = '$NB1. ZUB-$YSR.C'
    ELSEIF( YSR.EQ.'2'.AND.SIE.EQ.'1')THEN
     NB1 = '$NB1. ZUB-$YSR.CL'
    ELSEIF( YSR.EQ.'-'.AND.SIE.EQ.'1')THEN
     NB1 = '$NB1. ZUB-L'
    ELSE
     NB1 = '$NB1.'
    ENDIF                                            

    Im  ersten IF wird NB1 initialisiert.
    
    
    
                                        
    Im zweiten IF wird an NB1 etwas drangehängt.
    
    
    
                                         
    Im dritten IF wird nochmal etwas drangehängt.
    
    
    
    
    
    
    
    
    
    
    
                                             

    Remarques importantes:

    • La première condition IF doit contenir une alternative ELSE afin de garantir l'initialisation des variables. Les autres conditions IF peuvent contenir des alternatives ELSE facultatives.

      Correct:

      IF (OPZ1.EQ.'-' )THEN
       LINAALG = '$IDNR./$CX1./$VL./$MOTX./$OM1./$COEL./$DA./$AP1./$AA1.'
      ELSE
       LINAALG = '$IDNR./$CX1./$VL./$MOTX./$OM1./$COEL./$DA./$AP1./$AA1./$OPZ1.'
      ENDIF
      IF (OPZ2.EQ.'-' )THEN
       LINAALG = '$LINAALG./'
      ELSE
       LINAALG = '$LINAALG./$OPZ2.'
      ENDIF...

      Incorrect: (le premier IF ne contient pas d'ELSE)

      IF (OPZ1.NE.'-' )THEN
       LINAALG = '$IDNR./$CX1./$VL./$MOTX./$OM1./$COEL./$DA./$AP1./$AA1./$OPZ1.'
      ENDIF
      IF (OPZ2.NE.'-' )THEN
       LINAALG = '$LINAALG./$OPZ2.'
      ENDIF...

      Correct également: si le premier énoncé est un énoncé simple sans condition, il n'est pas nécessaire d'utiliser "ELSE", car l'énoncé initialise toujours la variable.

      CNSTYPECODE = '$MODEL.$W.-$ST.-$THETA.-$TYPE.-$SPRING.'
      IF(K.EQ.1)THEN
       CNSTYPECODE = '$CNSTYPECODE.-K'
      ENDIF
      IF(FK.EQ.1)THEN
       CNSTYPECODE = '$CNSTYPECODE.-FK'
      ENDIF
      IF(N.EQ.1)THEN
       CNSTYPECODE = '$CNSTYPECODE.-N'
      ENDIF

    • La première condition, qui est toujours calculée, doit empêcher une boucle sans fin. Les autres "if...endif" appellent toujours la première condition et ajoutent une valeur supplémentaire.

      N'utilisez donc pas la variable de l'affectation dans la première condition pour la distinction des cas ELSE.

      Correct:

      IF (OPZ1.EQ.'-' )THEN
       LINAALG = '$IDNR./$CX1./$VL./$MOTX./$OM1./$COEL./$DA./$AP1./$AA1.'
      ELSE
       LINAALG = '$IDNR./$CX1./$VL./$MOTX./$OM1./$COEL./$DA./$AP1./$AA1./$OPZ1.'
      ENDIF
      IF (OPZ2.EQ.'-' )THEN
       LINAALG = '$LINAALG./'
      ELSE
       LINAALG = '$LINAALG./$OPZ2.'
      ENDIF...

      Incorrect: (différence en rouge)

      IF (OPZ1.EQ.'-' )THEN
       LINAALG = '$IDNR./$CX1./$VL./$MOTX./$OM1./$COEL./$DA./$AP1./$AA1.'
      ELSE
       LINAALG = '$LINAALG./$OPZ1.'
      ENDIF
      IF (OPZ2.EQ.'-' )THEN
       LINAALG = '$LINAALG./'
      ELSE
       LINAALG = '$LINAALG./$OPZ2.'
      ENDIF...