| # Editor de restricciones Sintaxis de expresiones de restricción La sintaxis de expresiones de restricción es un subconjunto de la sintaxis de LN Herramientas. Puede componer expresiones de restricción con las siguientes instrucciones básicas. Operadores aritméticos: * (multiplicación) / (división) + (suma) - (resta) \ (resto tras la división) & (vectores alfanuméricos vinculantes) Operadores lógicos: o y no Operadores relacionales: = (igual que) > (mayor que) >= (mayor o igual que) <> (no igual a) < (menor que) <= (menor o igual que) Expresiones de dominio A es {a1,a2,a3-a4,..} significa: (A=a1 o A=a2 o A >= a3 y A <= a4, etc.). La sintaxis de expresión de ámbito es una anotación abreviada de expresiones lógicas referentes al ámbito de una variable. Prioridad en las expresiones Los operadores aritméticos tienen una prioridad mayor que las operaciones relacionales. Las operaciones relacionales tienen una prioridad mayor que los operadores lógicos. La secuencia de prioridad para operadores aritméticos: * / \ + - La secuencia de prioridad para operadores lógicos: no, y, o Los paréntesis ('()') pueden utilizarse para cambiar la secuencia de prioridad de operadores aritméticos y lógicos. Ejemplo 3 + 4 * 5 = 23 (3 + 4) * 5 = 35 Expresiones booleanas Las expresiones booleanas pueden tener el valor verdadero o falso (1 o 0). Esto puede aplicarse en restricciones, especialmente en expresiones condicionales. Ejemplo If not e then ' significa: If e = false then' o If e = 0 then' Construcciones If-then-else En las restricciones se pueden utilizar construcciones if-then-else extensas. La agrupación de sentencias está permitida. Ejemplo If expresión 1 then expresión 2 else expresión 3 endif Una construcción if-then-else siempre se cierra con una sentencia endif. La sentencia else no es obligatoria. Las sentencias if, else y endif siempre empiezan en una nueva línea. Las expresiones (condicionales) pueden dividirse en varias líneas. Una restricción de validación se puede definir sin sentencias if-then-else; esta restricción debe comenzar por c:. Una restricción puede incluir comentarios utilizando el signo |. Durante el proceso de configuración, puede generar mensajes mediante la variable de mensaje (hasta 80 x 25 líneas de texto). Variables de restricción Las variables globales y locales pueden utilizarse en expresiones de restricción. Las variables globales son características de productos y variables de restricción definidas por el usuario declaradas como globales. Las variables definidas previamente por el configurador de productos, como la especificación, la visualización, la longitud, la anchura, etc., son locales. Las variables locales conservan su valor durante todo el proceso de configuración, a menos que se cambien sus valores. Una variable de restricción puede tener las siguientes declaraciones de tipo: cadena (alfanumérica) (por ejemplo: cadena máquina global) largo (enteros) (por ejemplo: largo i) doble (fracciones) (por ejemplo: doble j) Las variables de restricción definidas por el usuario siempre deben declararse en la parte superior de la restricción. Todas las variables se inicializan antes de ejecutarse la restricción: las variables alfanuméricas se borran y las variables numéricas adoptan el valor cero. Las variables globales introducción y validando se inicializan con el valor verdadero. Utilización de variables de restricción Las características de producto se deben proporcionar con corchetes de apertura y de cierre ([......]) en las expresiones de restricción. Las variables restantes pueden utilizarse directamente en expresiones. Las variables alfanuméricas (vectores de cadenas) pueden indexarse según la anotación: (startposition[;longitud]). Ejemplo [color] = "rojo" validando = verdadero Los valores de las variables pueden ser alfanuméricos o numéricos. Los valores alfanuméricos deben escribirse entre comas ("...."). Los valores numéricos pueden especificarse directamente. La coma decimal es una coma (','). Ejemplo máquina(1;2) = "A5" volumen = 28.673 Las constantes verdadero/falso pueden utilizarse para expresiones booleanas. Funciones aritméticas round(X,Y,Z): produce un valor redondeado de X; Y es el número de decimales y Z es el método de redondeo (0 = a la baja, 1 = normal, 2 = al alza) val(A): crea un valor numérico de la cadena A (val("8,7") = 8,7) abs(X): calcula el valor absoluto de X (abs(-10,3) = 10,3) int(X): crea el valor entero de X (int(11,6) = 11) pow(X,Y): eleva X a la potencia de Y (pow(10,2) = 100) sqrt(X): crea la raíz cuadrada de X (sqrt(16) = 4) min(X,Y): crea el valor más pequeño de X e Y (min(6,10) = 6) max(X,Y): crea el valor más grande de X e Y (max(6,10) = 10) pi: constante con valor PI (3,1415926...) Funciones trigonométricas sin(X), cos(X), tan(X): produce el seno, el coseno o la tangente de X (radiales) asin(X), acos(X), atan(X): produce el arcoseno, el arcocoseno o la arcotangente de X hsin(X), hcos(X), htan(X): produce el seno, el coseno o la tangente hiperbólicos de X Funciones logarítmicas exp(X): eleva e a la potencia de X log(X): produce un logaritmo natural de X con base e log10(X): produce un valor logarítmico de X con base de potencias de 10 Funciones de cadena edit(X,Y): da forma al valor numérico X según el formato Y (edit(10,3,"ZZZ9V,99") = "10,30" str(X): coloca valor numérico en cadena (str(10,3) = "10,3") len(X): produce longitud de cadena X (len("abc") = 3) strip(X): borra espacios después del último carácter (strip("A ") "A") pos(X,Y): produce posición de cadena Y en cadena X desde la izquierda rpos(X,Y): produce posición de cadena Y en cadena X desde la derecha Funciones de fecha fecha(): produce el número de días entre el día 0 y la fecha actual date(a,m,d): produce el número de días entre el día 0 y la fecha especificada Ejemplo date(1995,06,01) = 728445 |