| # 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 |