| # Constraint-editor Syntaxis van constraintexpressies De syntaxis van constraintexpressies is een subset van de syntaxis van LN Tools. Constraintexpressies kunt u opbouwen met de volgende basisinstructies: Rekenkundige operators: * (vermenigvuldigen) / (delen) + (optellen) - (aftrekken) \ (rest na delen) & (alfanumerieke arrays koppelen) Logische operators: of en niet Relationele operators: = (gelijk aan) > (groter dan) >= (groter dan of gelijk aan) <> (niet gelijk aan) < (kleiner dan) <= (kleiner dan of gelijk aan) Domeinexpressies A is {a1,a2,a3-a4,..} betekent: (A=a1 of A=a2 of A >= a3 en A <= a4 enzovoort). De syntaxis van de domeinexpressie is een verkorte notatie voor logische expressies met betrekking tot het domein van een variabele. Prioriteit in expressies Rekenkundige operators hebben een hogere prioriteit dan relationele operators. Relationele operators hebben een hogere prioriteit dan logische operators. De prioriteitsvolgorde voor rekenkundige operators: * / \ + - De prioriteitsvolgorde voor logische operators: NOT, AND, OR Met ronde haakjes ('()') kunt u een bepaalde prioriteitsvolgorde voor rekenkundige en logische operators afdwingen. Voorbeeld 3 + 4 * 5 = 23 (3 + 4) * 5 = 35 Booleaanse expressies Booleaanse expressies hebben als waarde 'waar' of 'niet waar' (1 of 0). In constraints kunt u dit mechanisme toepassen, vooral in conditionele expressies. Voorbeeld 'if not e then' betekent: Als e = niet waar dan of Als e = 0 dan' If-then-else constructies In constraints kunt u gebruikmaken van uitgebreide if-then-else constructies. Ook geneste constructies zijn toegestaan. Voorbeeld If expressie1 then expressie2 else expressie3 endif Een if-then-else constructie moet u ALTIJD afsluiten met een endif-statement. Het else-statement is niet verplicht. If-, else- en endif-statements staan altijd op een nieuwe regel. (Conditionele) expressies mag u over meerdere regels verspreiden. Een validatie-constraint mag u zonder if-then-else statements definiëren; deze constraint moet dan beginnen met 'c:' Met het '|'-teken kunt u een constraint voorzien van commentaar. Tijdens de configuratieprocedure kunt u berichten genereren met behulp van de variabele "message" (maximaal 80x25 regels tekst). Constraintvariabelen In constraintexpressies kunt u zowel globale als lokale variabelen gebruiken. Globale variabelen zijn productkenmerken en door uzelf gedefinieerde constraintvariabelen die als 'globaal' zijn gedeclareerd. De lokale variabelen zijn variabelen die in de Productconfigurator zijn voorgedefinieerd, zoals invoer, weergave, lengte, breedte enz. Globale variabelen behouden hun waarde gedurende het gehele configuratieproces, tenzij de waarde gewijzigd wordt. Een constraintvariabele kan de volgende typedeclaraties hebben: string (alfanumeriek) (bijvoorbeeld string machine global) long (gehele getallen) (bijvoorbeeld long i) double (gebroken getallen)(bijvoorbeeld double j) De door u zelf gedefinieerde constraintvariabelen moet u altijd bovenaan de constraint declareren. Alle lokale variabelen worden vóór uitvoer van de constraint geïnitialiseerd: alfanumerieke variabelen worden leeg gemaakt, en numerieke variabelen krijgen de waarde nul. De globale variabelen 'input' en 'valideren' worden geïnitialiseerd met de waarde 'true'. Constraintvariabelen gebruiken Productkenmerken moeten in constraintexpressies worden voorzien van vierkante haken openen en sluiten ([......]). De overige variabelen kunnen direct in expressies worden gebruikt. Alfanumerieke variabelen (string-arrays) mogen worden geïndexeerd volgens de notatie: (startpositie[;lengte]). Voorbeeld [kleur] = "rood" valideren = waar Bij waarden van variabelen wordt onderscheid gemaakt tussen alfanumerieke en numerieke waarden. Alfanumerieke waarden moeten worden voorzien van aanhalingstekens ("...."). Numerieke waarden kunt u rechtstreeks invoeren. Het decimaalteken is een punt ('.'). Voorbeeld machine(1;2) = "A5" volume = 28.673 Voor booleaanse expressies kunt u de constanten true/false gebruiken. Rekenkundige functies round(X,Y,Z): geeft afgeronde waarde van X; Y is aantal decimalen en Z is afrondingsmethode (0=naar beneden, 1=normaal, 2=naar boven) val(A) : geeft de numerieke waarde van string A (val("8.7") = 8.7) abs(X) : berekent absolute waarde van X (abs(-10.3) = 10.3) int(X) : geeft integerwaarde van X (int(11.6) = 11) pow(X,Y) : verheft X tot de macht van Y (pow(10,2) = 100) sqrt(X) : geeft vierkantswortel van X (sqrt(16) = 4) min(X,Y) : geeft de kleinste waarde van X en Y (min(6,10) = 6) max(X,Y) : geeft de grootste waarde van X en Y (max(6,10) = 10) pi : constante met waarde PI (3.1415926...) Goniometrische functies sin(X), cos(X), tan(X): geeft sinus, cosinus of tangens van X (radialen) asin(X), acos(X), atan(X): geeft arc sinus, cosinus of tangens van X hsin(X), hcos(X), htan(X): geeft hyperbolische sinus, cosinus of tangens van X Logaritmische functies exp(X) : verheft e tot de macht van X log(X) : geeft natuurlijke logaritme van X op basis van e log10(X): geeft logaritmische waarde van X op basis van machten van 10 String-functies edit(X,Y) : formatteert numerieke waarde X volgens formaat Y (edit(10.3,"ZZZ9V.99") = "10.30" str(X) : zet numerieke waarde in string (str(10.3) = "10.3") len(X) : geeft lengte van string X (len("abc") = 3) strip(X) : verwijdert spaties achter laatste teken (strip("A ") "A") pos(X,Y) : geeft positie van string Y in string X vanaf links rpos(X,Y) : geeft positie van string Y in string X vanaf rechts Datumfuncties date() : geeft het aantal dagen tussen dag 0 en de huidige datum date(j,m,d): geeft het aantal dagen tussen dag 0 en de ingevoerde datum Voorbeeld date(1995,06,01) = 728445 |