Beschränkungs-Editor

Syntax von Beschränkungsausdrücken

Die Syntax für Beschränkungsausdrücke ist ein Teilbereich der Syntax aus LN Tools. Sie können diese Ausdrücke mit Hilfe folgender Grundregeln erstellen:

Arithmetische Operatoren:

  • * (multiplizieren)
  • / (dividieren)
  • + (addieren)
  • - (subtrahieren)
  • \ (Rest nach Division)
  • & (Verknüpfung von alphanumerischen Arrays)

Logische Operatoren:

  • or
  • and
  • not

Vergleichsoperatoren:

  • = (gleich)
  • > (größer als)
  • >= (größer/gleich)
  • <> (ungleich)
  • < (kleiner als)
  • <= (kleiner/gleich)
Formeln mit Wertebereich

A ist {a1,a2,a3-a4,..} bedeutet: (A=a1 oder A=a2 oder A >= a3 und A <= a4 usw.).

Diese Formel-Syntax ist eine verkürzte Schreibweise für logische Formeln zu den Wertebereichen einer Variablen.

Priorität in Ausdrücken

Arithmetische Operatoren haben eine höhere Priorität als Vergleichsoperatoren.

Vergleichsoperatoren haben eine höhere Priorität als logische Operatoren.

Prioritätenfolge für mathematische Operatoren: * / \ + -

Die Prioritätenfolge für logische Operatoren lautet: NOT, AND, OR

Mit runden Klammern ("( )") können Sie die Prioritätenfolge für mathematische und logische Operatoren ändern.

Beispiel

3 + 4 * 5 = 23

(3 + 4) * 5 = 35

Boolesche Ausdrücke

Boolesche Ausdrücke können den Wert "true" (wahr) oder "false" (falsch) (auch ausgedrückt als 1 oder 0) haben. Diese können in Beschränkungen verwendet werden, besonders in Bedingungsausdrücken.

Beispiel

"If not e then ' " bedeutet:

"If e = false then ' "

oder "If e = 0 then'"

If-Then-Else-Anweisungen

In Beschränkungen können Sie ausführliche If-Then-Else-Anweisungen verwenden. Verschachtelungen sind dabei zulässig.

Eine If-Then-Else-Anweisung muss mit einer Endif-Anweisung abgeschlossen werden. Die Else-Anweisung ist nicht obligatorisch. If-, Else- und Endif-Anweisungen fangen jeweils in einer neuen Zeile an. (Bedingungs-)Ausdrücke können über mehrere Zeilen verteilt sein. Eine Bewertungsbeschränkung kann ohne If-Then-Else-Anweisungen definiert werden. Sie muss dann mit c: beginnen.

Beschränkungen können einen Kommentar enthalten, der durch das Zeichen | eingeleitet wird. Während der Konfigurierung können Sie mit Hilfe der Variablen "message" Meldungen generieren (bis zu 80x25 Textzeilen).

Beispiel

If Ausdruck1

then Ausdruck2

else Ausdruck3

endif

Beschränkungsvariablen

Sie können sowohl globale als auch lokale Variablen in Beschränkungsausdrücken benutzen. Globale Variablen sind Produktmerkmale und anwenderdefinierte Beschränkungsvariablen, die als global definiert sind. Die vom Produktkonfigurator vordefinierten Variablen wie Eingabe, Abfrage, Länge, Breite, usw. sind lokale Variablen. Globale Variablen behalten ihren Wert während des ganzen Prozesses (außer wenn sie geändert werden).

Eine Beschränkungsvariable kann die folgenden Deklarationen aufweisen:

  • string (alphanumerisch) (zum Beispiel: string Maschine global)
  • long (ganze Zahlen) (zum Beispiel: long i)
  • double (Brüche) (zum Beispiel: double j)

Die anwenderdefinierten Beschränkungsvariablen müssen am Anfang der Beschränkung deklariert werden. Alle lokalen Variablen werden initialisiert, bevor die Beschränkung ausgeführt wird. Alphanumerische Variablen werden gelöscht und numerische Variablen werden auf Null gesetzt. Die globalen Variablen "Eingabe" und "Validierung" werden bei der Initialisierung auf "true" gesetzt.

Verwendung von Beschränkungsvariablen

In Beschränkungsausdrücken müssen Produktmerkmale in eckigen Klammern ([......]) eingeschlossen werden. Die übrigen Variablen können direkt in Ausdrücken verwendet werden. Alphanumerische Variablen (String-Arrays) können folgendermaßen indiziert werden: (Startposition[;Länge])

Beispiel

[Farbe] = "rot"

Bewertung = true

Variablenwerte können alphanumerisch oder numerisch sein. Alphanumerische Werte müssen in Anführungszeichen ("...") eingeschlossen werden. Numerische Werte können direkt eingegeben werden. Das Dezimalzeichen ist ein Punkt (.).

Beispiel

Maschine(1;2) = "A5"

Volumen = 28,673

Die Konstanten "true" und "false" können für Boolesche Ausdrücke verwendet werden.

Arithmetische Funktionen
  • round(X,Y,Z): ergibt den gerundeten Wert von X; Y ist die Anzahl der Dezimalstellen und Z das Rundungsverfahren (0 = abrunden, 1 = normal, 2 = aufrunden)
  • val(A): ergibt den numerischen Wert von Zeichenkette A; (val("8.7") = 8.7)
  • abs(X): berechnet den Absolutwert von X; (abs(-10.3) = 10.3)
  • int(X): ergibt den ganzzahligen Wert von X; (int(11.6) = 11)
  • pow(X,Y): erhebt X in die Potenz Y; (pow(10,2) = 100)
  • sqrt(X): ergibt die Quadratwurzel von X; (sqrt(16) = 4)
  • min(X,Y): ergibt den kleineren Wert aus X und Y; (min(6,10) = 6)
  • max(X,Y): ergibt den größeren Wert aus X und Y; (max(6,10) = 10)
  • pi: Konstante mit dem Wert Pi; (3.1415926...)
Winkelfunktionen
  • sin(X), cos(X), tan(X): ergibt Sinus, Kosinus oder Tangens von X (Radiale)
  • asin(X), acos(X), atan(X): ergibt Arcussinus, Arcuscosinus oder Arcustangens von X
  • hsin(X), hcos(X), htan(X): ergibt hyperbolischen Sinus, Kosinus oder Tangens von X
Logarithmische Funktionen
  • exp(X): erhebt e in die x-te Potenz
  • log(X): ergibt den natürlichen Logarithmus von X auf der Basis von e
  • log10(X): ergibt den Logarithmus von X auf der Basis von 10er-Potenzen
String-Funktionen
  • edit(X,Y): formatiert den numerischen Wert X nach Format Y (edit(10.3,"ZZZ9V.99") = " 10.30"
  • str(X): fügt den numerischen Wert in die Zeichenkette ein (str(10.3) = "10.3")
  • len(X): ergibt die Länge von Zeichenkette X (len("abc") = 3)
  • strip(X): löscht Leerzeichen nach dem letzten Zeichen (strip("A ") = "A")
  • pos(X,Y): ergibt die Position von Zeichenkette Y in Zeichenkette X, von links ausgehend
  • rpos(X,Y): ergibt die Position von Zeichenkette Y in Zeichenkette X, von rechts ausgehend
Datumsfunktionen
  • date(): ergibt die Anzahl der Tage zwischen Tag 0 und dem Tagesdatum
  • date(y,m,d): ergibt die Anzahl der Tage zwischen Tag 0 und dem eingegebenen Datum
Beispiel

date(1995,06,01) = 728445