Editor dei vincoliSintassi delle espressioni di vincolo La sintassi delle espressioni di vincolo è un sottoinsieme della sintassi degli strumenti di LN. È possibile creare espressioni di vincolo utilizzando le seguenti istruzioni di base. Operatori aritmetici:
Operatori logici:
Operatori relazionali:
Espressioni di dominio A è {a1,a2,a3-a4,..} significa: (A=a1 o A=a2 o A >= a3 e A <= a4 e così via). La sintassi dell'espressione di dominio è una notazione abbreviata per espressioni logiche riguardanti il dominio di una variabile. Priorità all'interno delle espressioni Gli operatori aritmetici hanno una priorità più alta rispetto alle operazioni relazionali. Le operazioni relazionali hanno una priorità più alta rispetto agli operatori logici. La sequenza della priorità per gli operatori aritmetici è la seguente: * / \ + - La sequenza della priorità per gli operatori logici è la seguente: not, and, or È possibile utilizzare le parentesi tonde ('()') per modificare la sequenza della priorità per gli operatori aritmetici e logici. Esempio 3 + 4 * 5 = 23 (3 + 4) * 5 = 35 Espressioni booleane Le espressioni booleane possono restituire un valore true o false (1 o 0). Possono essere utilizzate nei vincoli e in particolare nelle espressioni condizionali. Esempio If not e then ' significa: If e = false then' oppure If e = 0 then' Costruzioni if-then-else Nei vincoli è possibile utilizzare costruzioni if-then-else complesse. È consentita la nidificazione di istruzioni. Esempio If espressione1 then espressione2 else espressione3 endif Una costruzione if-then-else è sempre chiusa da un'istruzione endif. L'istruzione else non è obbligatoria. Le istruzioni if, else ed endif iniziano sempre su una nuova riga. Le espressioni, anche di tipo condizionale, possono essere suddivise su più righe. È possibile definire un vincolo di convalida senza istruzioni if-then-else. In tal caso, il vincolo deve iniziare con c:. È possibile aggiungere commenti a un vincolo utilizzando il simbolo |. Durante il processo di configurazione, è possibile generare messaggi utilizzando la variabile "message", che può contenere fino a 80x25 righe di testo. Variabili di vincolo Nelle espressioni di vincolo è possibile utilizzare sia variabili globali che variabili locali. Le variabili globali sono variabili di vincolo definite dall'utente e caratteristiche di prodotto dichiarate come globali. Le variabili predefinite da Configurazione prodotti, ad esempio per quanto riguarda l'input, la visualizzazione, la lunghezza, la larghezza e così via, sono di tipo locale. Le variabili globali mantengono il valore assegnato durante tutto il processo di configurazione, a meno che il valore non venga modificato dall'utente. In una variabile di vincolo è possibile utilizzare le seguenti dichiarazioni del tipo:
Le variabili di vincolo definite dall'utente devono essere sempre dichiarate al livello superiore del vincolo. Tutte le variabili locali vengono inizializzate prima dell'esecuzione del vincolo, il che significa che le variabili alfanumeriche vengono cancellate e alle variabili numeriche viene assegnato il valore zero. Le variabili globali relative all'input e alla convalida vengono inizializzate con il valore true. Utilizzo delle variabili di vincolo Nelle espressioni di vincolo le caratteristiche di prodotto devono essere racchiuse tra parentesi quadre di apertura e di chiusura ([......]). Le altre variabili possono essere utilizzate direttamente. Le variabili alfanumeriche (matrici di stringhe) possono essere indicizzate in base alla seguente notazione: (posizioneiniziale[;lunghezza]). Esempio [colore] = "rosso" validating = true I valori delle variabili possono essere alfanumerici o numerici. I valori alfanumerici devono essere racchiusi tra virgolette ("...."). I valori numerici possono essere immessi direttamente. Il separatore decimale è il punto ('.'). Esempio macchina(1;2) = "A5" volume = 28.673 Le costanti true/false possono essere utilizzate per espressioni booleane. Funzioni aritmetiche
Funzioni goniometriche
Funzioni logaritmiche
Funzioni per valori stringa
Funzioni di data
Esempio date(1995,06,01) = 728445
| |||