<?xml version="1.0" encoding="utf-8"?>
<ManualTopic ID="/baanerp/ti/onlinemanual/100002" xml:lang="de">
   <Header>
      <Title>Beschränkungs-Editor</Title>
   </Header>
   <GeneralSection>
      <GeneralSection>
         <SectionTitle>Syntax von Beschränkungsausdrücken</SectionTitle>
         <Paragraph>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:</Paragraph>
         <List>
            <ListIntro>Mathematische Operatoren:</ListIntro>
            <ListItem>* (multiplizieren)</ListItem>
            <ListItem>/ (dividieren)</ListItem>
            <ListItem>+ (addieren)</ListItem>
            <ListItem>- (subtrahieren)</ListItem>
            <ListItem>\ (Rest nach Division)</ListItem>
            <ListItem>&amp; (Verknüpfung von alphanumerischen Arrays)</ListItem>
         </List>
         <List>
            <ListIntro>Logische Operatoren:</ListIntro>
            <ListItem>or</ListItem>
            <ListItem>and</ListItem>
            <ListItem>not</ListItem>
         </List>
         <List>
            <ListIntro>Vergleichsoperatoren:</ListIntro>
            <ListItem>= (gleich)</ListItem>
            <ListItem>&gt; (größer als)</ListItem>
            <ListItem>&gt;= (größer/gleich)</ListItem>
            <ListItem>&lt;&gt; (ungleich)</ListItem>
            <ListItem>&lt; (kleiner als)</ListItem>
            <ListItem>&lt;= (kleiner/gleich)</ListItem>
         </List>
      </GeneralSection>
      <GeneralSection>
         <SectionTitle>Formeln mit Wertebereich</SectionTitle>
         <Paragraph>A ist {a1,a2,a3-a4,..}  bedeutet: (A=a1 oder A=a2 oder A &gt;= a3 und A &lt;= a4 usw.).</Paragraph>
         <Paragraph>Diese Formel-Syntax ist eine verkürzte Schreibweise für logische Formeln zu den Wertebereichen einer Variablen.</Paragraph>
      </GeneralSection>
      <GeneralSection>
         <SectionTitle>Priorität in Ausdrücken</SectionTitle>
         <Paragraph>Arithmetische Operatoren haben eine höhere Priorität als Vergleichsoperatoren.</Paragraph>
         <Paragraph>Vergleichsoperatoren haben eine höhere Priorität als logische Operatoren.</Paragraph>
         <Paragraph>Prioritätenfolge für mathematische Operatoren: * / \ + -</Paragraph>
         <Paragraph>Prioritätenfolge für logische Operatoren: not, and, or</Paragraph>
         <Paragraph>Mit runden Klammern ("( )") können Sie die Prioritätenfolge für mathematische und logische Operatoren ändern.</Paragraph>
         <ExampleSection>
            <SectionTitle> Beispiel</SectionTitle>
            <Paragraph>3 + 4 * 5 = 23</Paragraph>
            <Paragraph>(3 + 4) * 5 = 35</Paragraph>
         </ExampleSection>
      </GeneralSection>
      <GeneralSection>
         <SectionTitle>Boolesche Ausdrücke</SectionTitle>
         <Paragraph>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.</Paragraph>
      </GeneralSection>
      <ExampleSection>
         <SectionTitle> Beispiel</SectionTitle>
         <Paragraph>"If not e then ' " bedeutet:</Paragraph>
         <Paragraph>"If e = false then ' "</Paragraph>
         <Paragraph>oder "If e = 0 then'"</Paragraph>
      </ExampleSection>
      <GeneralSection>
         <SectionTitle>If-Then-Else-Anweisungen</SectionTitle>
         <Paragraph>In Beschränkungen können Sie ausführliche If-Then-Else-Anweisungen verwenden.  Verschachtelungen sind dabei zulässig.</Paragraph>
         <ExampleSection>
            <SectionTitle> Beispiel</SectionTitle>
            <Paragraph>If Ausdruck1</Paragraph>
            <Paragraph>then Ausdruck2</Paragraph>
            <Paragraph>else Ausdruck3</Paragraph>
            <Paragraph>endif</Paragraph>
         </ExampleSection>
         <Paragraph>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.</Paragraph>
         <Paragraph>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).</Paragraph>
      </GeneralSection>
      <GeneralSection>
         <SectionTitle>Beschränkungsvariablen</SectionTitle>
         <Paragraph>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).</Paragraph>
         <List>
            <ListIntro>Eine Beschränkungsvariable kann die folgenden Deklarationen aufweisen:</ListIntro>
            <ListItem>string (alphanumerisch) (zum Beispiel: string Maschine global)</ListItem>
            <ListItem>long (ganze Zahlen) (zum Beispiel: long i)</ListItem>
            <ListItem>double (Brüche) (zum Beispiel: double j)</ListItem>
         </List>
         <Paragraph>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 auf Null gesetzt.  Die globalen Variablen "Eingabe" und "Validierung" werden bei der Initialisierung auf "true" gesetzt.</Paragraph>
      </GeneralSection>
      <GeneralSection>
         <SectionTitle>Verwendung von Beschränkungsvariablen</SectionTitle>
         <Paragraph>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])</Paragraph>
      </GeneralSection>
      <ExampleSection>
         <SectionTitle> Beispiel</SectionTitle>
         <Paragraph>[Farbe] = "rot"</Paragraph>
         <Paragraph>Bewertung = true</Paragraph>
         <Paragraph>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 (.).</Paragraph>
      </ExampleSection>
      <ExampleSection>
         <SectionTitle> Beispiel</SectionTitle>
         <Paragraph>Maschine(1;2) = "A5"</Paragraph>
         <Paragraph>Volumen = 28.673</Paragraph>
         <Paragraph>Die Konstanten "true" und "false" können für Boolesche Ausdrücke verwendet werden.</Paragraph>
      </ExampleSection>
      <GeneralSection>
         <SectionTitle>Arithmetische Funktionen</SectionTitle>
         <List>
            <ListItem>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)</ListItem>
            <ListItem>val(A): ergibt den numerischen Wert von Zeichenkette A; (val("8.7") = 8.7)</ListItem>
            <ListItem>abs(X): berechnet den Absolutwert von X; (abs(-10.3) = 10.3)</ListItem>
            <ListItem>int(X): ergibt den ganzzahligen Wert von X; (int(11.6) = 11)</ListItem>
            <ListItem>pow(X,Y): erhebt X in die Potenz Y; (pow(10,2) = 100)</ListItem>
            <ListItem>sqrt(X): ergibt die Quadratwurzel von X; (sqrt(16) = 4)</ListItem>
            <ListItem>min(X,Y): ergibt den kleineren Wert aus X und Y; (min(6,10) = 6)</ListItem>
            <ListItem>max(X,Y): ergibt den größeren Wert aus X und Y; (max(6,10) = 10)</ListItem>
            <ListItem>pi: Konstante mit dem Wert Pi; (3.1415926...)</ListItem>
         </List>
      </GeneralSection>
      <GeneralSection>
         <SectionTitle>Winkelfunktionen</SectionTitle>
         <List>
            <ListItem>sin(X), cos(X), tan(X): ergibt Sinus, Kosinus oder Tangens von X (Radiale)</ListItem>
            <ListItem>asin(X), acos(X), atan(X): ergibt Arcussinus, Arcuscosinus oder Arcustangens von X</ListItem>
            <ListItem>hsin(X), hcos(X), htan(X): ergibt hyperbolischen Sinus, Kosinus oder Tangens von X</ListItem>
         </List>
      </GeneralSection>
      <GeneralSection>
         <SectionTitle>Logarithmische Funktionen</SectionTitle>
         <List>
            <ListItem>exp(X): erhebt e in die x-te Potenz</ListItem>
            <ListItem>log(X): ergibt den natürlichen Logarithmus von X auf der Basis von e</ListItem>
            <ListItem>log10(X): ergibt den Logarithmus von X auf der Basis von 10er-Potenzen</ListItem>
         </List>
      </GeneralSection>
      <GeneralSection>
         <SectionTitle>String-Funktionen</SectionTitle>
         <List>
            <ListItem>edit(X,Y): formatiert den numerischen Wert X nach Format Y (edit(10.3,"ZZZ9V.99") = " 10.30"</ListItem>
            <ListItem>str(X): fügt den numerischen Wert in die Zeichenkette ein (str(10.3) = "10.3")</ListItem>
            <ListItem>len(X): ergibt die Länge von Zeichenkette X (len("abc") = 3)</ListItem>
            <ListItem>strip(X): löscht Leerzeichen nach dem letzten Zeichen (strip("A ") = "A")</ListItem>
            <ListItem>pos(X,Y): ergibt die Position von Zeichenkette Y in Zeichenkette X, von links ausgehend</ListItem>
            <ListItem>rpos(X,Y): ergibt die Position von Zeichenkette Y in Zeichenkette X, von rechts ausgehend</ListItem>
         </List>
      </GeneralSection>
      <GeneralSection>
         <SectionTitle>Datumsfunktionen</SectionTitle>
         <List>
            <ListItem>date(): ergibt die Anzahl der Tage zwischen Tag 0 und dem Tagesdatum</ListItem>
            <ListItem>date(y,m,d): ergibt die Anzahl der Tage zwischen Tag 0 und dem eingegebenen Datum</ListItem>
         </List>
      </GeneralSection>
      <ExampleSection>
         <SectionTitle> Beispiel</SectionTitle>
         <Paragraph>date(1995,06,01) = 728445</Paragraph>
      </ExampleSection>
   </GeneralSection>
</ManualTopic>