Wenn Sie die Buttons | | verwenden, sind Sie auf der sicheren Seite, dass beim Erstellen der Formel korrekte Syntax verwendet wird.
Dieser Button überträgt lediglich die unter Name angezeigte Variable ins Eingabefeld.
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.
IF (L1.EQ.10) THEN D3 = 20 ELSE D3 = 30 ENDIF
ELSEIF ( ) THEN <selektierte Variable> =
Sollen Fallunterscheidungen getroffen werden, kann mit ELSEIF-Anweisungen gearbeitet werden.
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:
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.
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.
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...