Editeur de contraintes

Syntaxe des expressions de contrainte

La syntaxe des expressions de contrainte constitue un sous-ensemble de la syntaxe de Infor LN Tools. Vous pouvez créer des expressions de contrainte à l'aide des instructions suivantes.

Opérateurs arithmétiques :

  • * (multiplication)
  • / (division)
  • + (addition)
  • - (soustraction)
  • \ (reste après division)
  • & (liaison d'éléments alphanumériques)

Opérateurs logiques :

  • ou
  • et
  • non

Opérateurs de relation :

  • = (égal à)
  • > (supérieur à)
  • >= (supérieur ou égal à)
  • <> (différent de)
  • < (inférieur à)
  • <= (inférieur ou égal à)
Expressions de domaine

A = {a1, a2, a3-a4,..} signifie : (A=a1 ou A=a2 ou A >= a3 et A <= a4, etc.).

La syntaxe d'expression de domaine constitue une notation abrégée d'expressions logiques concernant le domaine d'une variable.

Priorité dans les expressions

Les opérateurs arithmétiques ont une priorité supérieure aux opérations de relation.

Les opérations relationnelles possèdent une priorité plus élevée que les opérateurs logiques.

La séquence de priorité des opérateurs arithmétiques : * / \ + -

La séquence de priorité des opérateurs logiques : not, and, or

Les parenthèses arrondies ('()') permettent de modifier la séquence de priorité d'opérateurs arithmétiques et logiques.

Exemple

3 + 4 * 5 = 23

(3 + 4) * 5 = 35

Expressions booléennes

Les expressions booléennes peuvent avoir la valeur "vrai" ou "faux" (1 ou 0). Elles peuvent s'appliquer dans des contraintes et en particulier dans des expressions conditionnelles.

Exemple

If not e then' signifie :

Si e = faux alors'

ou Si e = 0 alors'

Constructions if-then-else

Des constructions if-then-else élaborées peuvent être employées dans des contraintes.', notamment à des expressions conditionnelles. L'emboîtement d'instructions est autorisé.

Exemple

If expression1

then expression2

else expression3

endif

Une construction if-then-else est toujours ponctuée d'une instruction endif. L'instruction else n'est pas obligatoire. Les instructions if, else et endif commencent toujours sur une nouvelle ligne. Les expressions (conditionnelles) peuvent se présenter sur plusieurs lignes. Une contrainte de validation peut être définie sans instruction if-then-else. Cette contrainte commence alors par "c:.

Une contrainte peut être accompagnée de commentaires identifiés pas le signe "|". Lors du processus de configuration, vous pouvez générer des messages à l'aide de la variable message (80 x 25 lignes de texte maximum).

Variables de contrainte

Vous pouvez utiliser des variables globales et locales dans les expressions de contrainte. Les variables globales sont des caractéristiques produit et des variables de contrainte définies par l'utilisateur qui sont déclarées "globales". Les variables prédéfinies par le configurateur de produits, telles que la saisie, l'affichage, la longueur, la largeur, etc., sont des variables locales. Les variables globales conservent leur valeur pendant tout le processus de configuration, sauf si leurs valeurs ont été modifiées.

Une variable de contrainte peut présenter des déclarations de type :

  • chaîne (alphanumérique) (par exemple : chaîne machine global)
  • long (entiers) (par exemple : long i)
  • double (fractions) (par exemple : double j)

Les variables de contrainte définies par l'utilisateur doivent toujours être déclarées en début de contrainte. Toutes les variables locales sont initialisées avant que la contrainte ne soit exécutée. Les variables alphanumériques sont effacées et les variables numériques deviennent nulles. La saisie et la validation des variables globales sont initialisées avec la valeur "vrai".

Utilisation des variables de contrainte

Dans les expressions de contrainte, les caractéristiques produit doivent se présenter entre crochets ([......]). Les variables restantes peuvent être directement utilisées dans des expressions. Les variables alphanumériques (tableaux de chaînes) peuvent être indexées en fonction de la notation : (position de départ[;longueur]).

Exemple

[couleur] = "rouge"

validation = vrai

Les valeurs des variables peuvent être alphanumériques ou numériques. Les valeurs alphanumériques doivent se présenter entre guillemets ("...."). Le valeurs numériques peuvent être saisies directement. Le signe décimal est un point (".").

Exemple

machine(1;2) = "A5"

volume = 28.673

Les constantes vrai/faux peuvent être utilisées pour les expressions booléennes.

Fonctions arithmétiques
  • arrondir(X,Y,Z) : permet d'obtenir la valeur arrondie de X ; Y correspond au nombre de décimales et Z à la méthode d'arrondi (0 = vers le bas, 1 = normal, 2 = vers le haut)
  • val(A) : permet d'obtenir la valeur numérique de A (val("8.7") = 8.7)
  • abs(X) : calcule la valeur absolue de X (abs(-10.3) = 10.3)
  • int(X) : permet d'obtenir la valeur entière de X (int(11.6) = 11)
  • pow(X,Y) : élève X à la puissance Y (pow(10,2) = 100)
  • sqrt(X) : permet d'obtenir la racine carrée de X (sqrt(16) = 4)
  • min(X,Y) : indique quelle est la plus petite valeur entre X et Y (min(6,10) = 6)
  • max(X,Y) : indique quelle est la plus grande valeur entre X et Y (max(6,10) = 6)
  • pi : valeur pi (3.1415926...)
Fonctions goniométriques
  • sin(X), cos(X), tan(X) : permet d'obtenir le sinus, le cosinus ou la tangente de X (radiaux)
  • asin(X), acos(X), atan(X) : permet d'obtenir le sinus, le cosinus ou la tangente d'un arc de X
  • hsin(X), hcos(X), htan(X) : permet d'obtenir le sinus, le cosinus ou la tangente hyperbolique de X
Fonctions logarithmiques
  • exp(X) : élève e à la puissance X
  • log(X) : permet d'obtenir le logarithme naturel de X à partir de e
  • log10(X) : permet d'obtenir la valeur logarithmique de X à partir des puissances de 10
Fonctions chaîne
  • edit(X,Y) : conçoit le format de la valeur X en fonction du format de Y (edit(10.3,"ZZZ9V.99") = " 10.30"
  • str(X) : transforme une valeur numérique en chaîne (str(10.3) = "10.3")
  • len(X) : permet d'obtenir la longueur de la chaîne X (len("abc") = 3)
  • strip(X) : supprime les espaces après le dernier caractère (strip("A ") "A")
  • pos(X,Y) : indique la position de la chaîne Y dans la chaîne X à partir de la gauche
  • rpos(X,Y) : indique la position de la chaîne Y dans la chaîne X à partir de la droite
Fonctions de date
  • date() : indique le nombre de jours entre le jour 0 et la date courante
  • date(y,m,d): indique le nombre de jours entre le jour 0 et la date saisie
Exemple

date(1995,06,01) = 728445