Edytor kryterium

Składnia wyrażeń kryterium

Składnia wyrażenia kryterium to podzbiór składni pakietu Narzędzia w LN. Za pomocą poniższych podstawowych instrukcji można tworzyć wyrażenia kryterium.

Operatory arytmetyczne:

  • * (mnożenie)
  • / (dzielenie)
  • + (dodawanie)
  • - (odejmowanie)
  • \ (reszta z dzielenia)
  • & (łączenie tablic alfanumerycznych)

Operatory logiczne:

  • or (lub)
  • and (i)
  • not (nie)

Operatory relacji:

  • = (równe)
  • > (większe niż)
  • >= (większe lub równe)
  • <> (nierówne z)
  • < (mniejsze niż)
  • <= (mniejsze lub równe)
Wyrażenia domeny

A to {a1,a2,a3-a4,..}, co oznacza: (A=a1 lub A=a2 lub A >= a3 i A <= a4, itd.).

Składnia wyrażenia domeny to skrócona notacja wyrażeń logicznych odnoszących się do domeny danej zmiennej.

Priorytet w wyrażeniach

Operatory arytmetyczne mają wyższy priorytet niż operacje relacji.

Operacje relacji mają wyższy priorytet niż operatory logiczne.

Kolejność priorytetów dla operatorów arytmetycznych: * / \ + -

Kolejność priorytetów dla operatorów logicznych: or (lub), and (i), not (nie)

Nawiasy okrągłe ('()') mogą zmieniać kolejność priorytetu operatorów arytmetycznych i logicznych.

Przykład

3 + 4 * 5 = 23

(3 + 4) * 5 = 35

Wyrażenia logiczne

Wyrażenia logiczne mogą mieć wartość true lub false (1 lub 0). Może to mieć zastosowanie w kryteriach, zwłaszcza w wyrażeniach warunkowych.

Przykład

„If not e then '” („Jeżeli nie e, to '”) oznacza:

„If e = false then'” („Jeżeli e = fałsz, to '”)

lub „If e = 0 then'” („Jeżeli e = 0, to '”).

Konstrukcje „If-then-else” („Jeżeli-to-w przeciwnym razie”)

W kryteriach można wykorzystać złożone konstrukcje „if-then-else”. Wyrażenia można zagnieżdżać.

Konstrukcję „if-then-else” zawsze zamyka się wyrażeniem endif („koniec”). Wyrażenie „else” („w przeciwnym razie”) nie jest wymagane. Wyrażenia „if” („jeżeli”), „else” („w przeciwnym razie”), oraz „endif” („koniec”) zawsze rozpoczynają się od nowej linii. Wyrażenia (warunkowe) można podzielić na kilka linii. Kryterium zatwierdzenia można zdefiniować bez wyrażeń „if-then-else” („jeżeli-to-w przeciwnym razie”); kryterium to musi rozpoczynać się od c:.

Kryterium może zawierać komentarze wprowadzone przy użyciu znaku |. Podczas procesu konfiguracji można tworzyć komunikaty używając komunikatu zmiennej (do 80x25 linii tekstu).

Przykład

If wyrażenie1

then wyrażenie2

else wyrażenie3

endif

Zmienne kryterium

W wyrażeniach kryterium można używać zmiennych globalnych i lokalnych. Zmienne globalne to cechy produktu i zdefiniowane przez użytkownika zmienne kryterium, które są zdefiniowane jako globalne. Zmienne predefiniowane przez konfigurator produktu, takie jak dane wejściowe, wyświetlanie, długość, szerokość, itd., są lokalne. Zmienne globalne zachowują swoją wartość podczas procesu konfiguracji, chyba że ich wartości zostaną zmienione.

Zmienna kryterium może mieć deklaracje typu takie jak:

  • ciąg znaków (alfanumeryczny), (np.: string machine global)
  • long (liczby całkowite) (np.: long i)
  • double (ułamki) (np.: double j)

Zdefiniowane przez użytkownika zmienne kryterium zawsze należy zdeklarować na początku kryterium. Wszystkie zmienne lokalne są inicjowane przed wykonaniem kryterium: zmiennie alfanumeryczne są usuwane, a zmienne numeryczne otrzymują wartość zero. Wprowadzanie i kontrola poprawności zmiennych globalnych jest inicjowane wartością true.

Użycie zmiennych kryterium

W wyrażeniach kryterium, cechy produktu muszą znajdować się w nawiasach kwadratowych ([......]). Pozostałych zmiennych można użyć bezpośrednio w wyrażeniach. Zmienne alfanumeryczne (tablice ciągów znaków) mogą być indeksowane zgodnie z notacją: (startposition[;length]) („pozycjawyjściowa[;długość]”).

Przykład

[color] = "red" ([kolor] = "czerwony")

kontrola poprawności = true

Wartości zmiennych mogą być alfanumeryczne lub numeryczne. Wartości alfanumeryczne muszą być zapisane w cudzysłowie ("...."). Wartości numeryczne mogą być wprowadzane bezpośrednio. Znak dziesiętny oddzielający część całkowitą od ułamkowej to kropka ('.').

Przykład

machine(1;2) = "A5" (maszyna(1;2) = "A5")

volume = 28.673 (objętość = 28,673)

Kryteria true/false mogą być wykorzystywane w wyrażeniach logicznych.

Funkcje arytmetyczne
  • round(X,Y,Z): zwraca zaokrągloną wartość X; Y to liczba miejsc po przecinku, a Z to sposób zaokrąglania (0 = w dół, 1 = normalnie, 2 = w górę)
  • val(A): zwraca wartość numeryczną ciągu A (val(„8,7”) = 8,7)
  • abs(X): liczy wartość bezwzględną X (abs(-10.3) = 10.3)
  • int(X): zwraca wartość całkowitą X (int(11.6) = 11)
  • pow(X,Y): podnosi X do potęgi Y (pow(10,2) = 100)
  • sqrt(X): zwraca pierwiastek kwadratowy z X (sqrt(16) = 4)
  • min(X,Y): zwraca mniejszą wartość z dwóch wartości X i Y (min(6,10) = 6)
  • max(X,Y): zwraca większą wartość z dwóch wartości X i Y (max(6,10) = 10)
  • pi: wartość stała równa liczbie PI (3,1415926...)
Funkcje goniometryczne
  • sin(X), cos(X), tan(X): zwracają sinus, cosinus, lub tangens z X (radiany)
  • asin(X), acos(X), atan(X): zwracają arcus sinus, cosinus, lub tangens z X
  • hsin(X), hcos(X), htan(X): zwracają hiperboliczny sinus, cosinus, lub tangens z X
Funkcje logarytmiczne
  • exp(X): podnosi e do potęgi X
  • log(X) zwraca logarytm naturalny (o podstawie e) z X
  • log10(X): zwraca logarytm o podstawie 10 z X
Funkcje ciągu znaków
  • edit(X,Y): formatuje wartość numeryczną X zgodnie z formatem Y (edit(10.3,"ZZZ9V.99") = "10.30"
  • str(X): umieszcza wartość numeryczną w ciągu znaków (str(10.3) = "10.3")
  • len(X): zwraca długość ciągu znaków X (len("abc") = 3)
  • strip(X): usuwa spacje po ostatnim znaku (strip("A ") = "A")
  • pos(X,Y): zwraca pozycję ciągu znaków Y w ciągu znaków X od lewej
  • rpos(X,Y): zwraca pozycję ciągu znaków Y w ciągu znaków X od prawej
Funkcje daty
  • date(): zwraca liczbę dni pomiędzy dniem 0 a datą bieżącą
  • date(y,m,d): zwraca liczbę dni pomiędzy dniem 0 a wprowadzoną datą
Przykład

date(1995,06,01) = 728445