7.8.12.2. Syntax - Buttons für das Erstellen der Formel

Wenn Sie die Buttons $VAR= | IF | ELSEIF verwenden, sind Sie auf der sicheren Seite, dass beim Erstellen der Formel korrekte Syntax verwendet wird.

[Hinweis]Hinweis

Prüfen Sie mittels Check abschließend immer noch die gesamte Eingabe.

"Merkmalalgorithmus [Attribute algorithm]" Dialogfenster

"Merkmalalgorithmus [Attribute algorithm]" Dialogfenster

  • $VAR=

    Dieser Button überträgt lediglich die unter Name angezeigte Variable ins Eingabefeld.

  • IF

    Ein durch eine IF-Bedingung aufgebauter Algorithmus kann wie folgt aussehen:

    IF ( ) THEN 
       D3 = 
    ELSE 
       D3 = 
    ENDIF

    Zwischen den Klammern () geben Sie Ihre Bedingung ein (z.B. "L1.EQ.10"). Hier im Beispiel ist "D3" die in der Variablenliste selektierte Variable.

    Hinter THEN D3 = geben Sie den Wert ein, den D3 annehmen soll, wenn die Bedingung erfüllt wird.

    Hinter ELSE D3 = steht der Wert für D3, falls die Bedingung nicht erfüllt wird. Mit ENDIF beschließen Sie die Bedingung.

    Beispiel mit Werten:

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

  • ELSEIF

    -> Es wird Folgendes erzeugt:

    ELSEIF ( ) THEN
     <selektierte Variable> = 

    Sollen Fallunterscheidungen getroffen werden, kann mit ELSEIF-Anweisungen gearbeitet werden.

    [Hinweis]Hinweis

    ELSEIF-Fallunterscheidungen müssen am Ende mit einem ELSE abgeschlossen werden.

    Setzen Sie also den Cursor, bevor Sie klicken, an die richtige Stelle vor das ELSE-Kommando.

    Beispiel mit Werten

    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 

  • Innerhalb einer Merkmalalgorithmus [Attribute algorithm]-Variablen können auch mehrere IF-Bedingungen hintereinander geschaltet werden.

    Die Verwendung einer einzigen IF-Bedingung mit ELSEIF-Fallunterscheidungen würde oft zu viel aufwändigeren Lösungen mit viel mehr ELSEIFs führen.

    Aufbau der Bedingungen anhand eines Beispiels:

    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.
    
    
    
    
    
    
    
    
    
    
    
                                             

    Wichtige Hinweise:

    • Die erste IF-Bedingung muss eine ELSE-Alternative enthalten, damit die Initialisierung der Variablen sichergestellt ist. Die übrigen IF-Bedingungen können optional ELSE-Alternativen enthalten.

      Korrekt:

      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...

      Nicht korrekt: (Das erste IF enthält kein 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...

      Ebenfalls korrekt: Wenn als erstes ein einfaches Statement ohne Bedingung steht, kann auf ein "ELSE" ganz verzichtet werden, da das Statement die Variable immer initialisiert.

      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

    • Die erste Bedingung, die immer berechnet wird, muss eine Endlos-Schleife verhindern. Weitere "if...endif" rufen immer die erste Bedingung auf und fügen einen zusätzlichen Wert an.

      Verwenden Sie daher in der ersten Bedingung für die ELSE-Fallunterscheidung nicht die Variable der Zuweisung.

      Korrekt:

      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...

      Nicht korrekt: (Unterschied in rot)

      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...