Scripts di interrogazione: le variabili

Scripts di interrogazione: le variabili

La variabile è l'elemento fondamentale degli scripts di interrogazione.
Una variabile è un contenitore capace di contenere un valore di un certo tipo (stringa, numero, data, ...) e che viene dotato di caratteristiche e funzionalità attraverso la sintassi che viene qui di seguito descritta.

SINTASSI DI DEFINIZIONE DELLE VARIABILI
La sintassi da usare per la definizione delle variabili in uno script di interrogazione è la seguente:

VARIABILE=tipo;/OPZ1=opzione1;/OPZ2=opzione2; .....

VARIABILE: è il nome (o codice) della variabile; può essere composto da numeri, lettere e dal segno di sottolineatura. Non deve iniziare con un numero.
Codici validi sono ad esempio:  ASSE=.....   DIMENSIONE_X=....  PROVA_20=....

TIPO: tipo di valore; deve essere uno tra i seguenti valori: 

bulletS stringa
bulletI numero intero
bulletF numero decimale (Floating point)
bulletB valore booleano; i valori ammessi sono T (True, vero) e F (False, falso)
bulletD data; non sono mai ammesse date non valide (tutt'al più date NULLE)

I parametri definiscono aspetti secondari del tipo (lunghezza, dimensioni del campo, eccetera).

Se il tipo di variabile è preceduto da un punto esclamativo, il valore è obbligatorio, altrimenti solo facoltativo.
Per la variabili numeriche il valore 0 è considerato come 'valore non presente' e non è ammesso se è presente il !.
Ad esempio:

DT_PARTENZA=!D;/DES=data di partenza
IMPORTO=!F;/DES=importo da pagare;/VALUES=*100:500;/NOCOMBO

OPZIONI
Le opzioni devono iniziare con una barra e sono tra loro separate da un punto e virgola. Le opzioni riconosciute sono le seguenti (tra parentesi vengono indicate le abbreviazioni che possono essere utilizzate in alternativa alla sintassi estesa):

/DESCRIZIONE= (/DES=)descrizione della variabile; l'opzione è indispensabile

/VALORI= (/VAL=) ALFA|BETA|GAMMA|DELTA|....; elenco opzionale dei valori ammessi per la variabile separati dal carattere pipe (|) (è il carattere che si trova 'sopra' la barra rovesciata, ovvero sul tasto sopra il tabulatore, alla sinistra del tasto "1", sotto il tasto ESC). Se l'elenco viene omesso non vi sarà controllo sul valore inserito per la variabile.
Se il primo carattere dopo il segno di uguale è un * (asterisco) la variabile potrà avere valori diversi da quelli indicati nell'elenco (salvo le eventuali condizioni di validazione).

Se uno dei valori è il valore *blank* (scritto esattamente così) la variabile potrà avere valore blank (nessun valore). Tale opzione è disponibile solo per tipi di variabile STRINGA e DATA.

I valori per variabili di tipo stringa non devono essere racchiusi tra apici o virgolette.

Per il tipo STRINGA è possibile indicare tra parentesi graffe un codice che rappresenta il valore reale assunto dalla variabile e che viene utilizzato dal programma in tutti i contesti ad eccezione della visualizzazione (ad esempio: nelle formule, nelle condizioni, eccetera). Questa scissione di descrizione e codice consente di utilizzare codici corti (efficienti) e descrizioni lunghe (chiare).
Qualora sia presente il codice, la descrizione può contenere al suo interno anche il carattere spazio.
Se il codice non viene indicato, la descrizione funge contemporaneamente da descrizione e da codice.
NB: ovunque ci si riferisca ad un determinato valore di una opzione (nelle condizioni, nella clausola DEFAULT, in tutte le circostanze!), è necessario utilizzare il codice, e non la descrizione
Il formato dei valori per il tipo stringa è il seguente:

descrizione{codice}

I valori per le variabili di tipo numerico potranno essere scritti secondo la notazione A:B ad indicare che sono ammessi i valori tra A e B (estremi compresi). Ad esempio: 1|3|5|11:20.
I valori ammessi per le variabili di tipo boolean sono quelli predefiniti (T, F). Le variabili di tipo boolean non costituiscono di per sè un predicato (vero/falso) ma sono da considerare in pratica delle variabili di testo con valori limitati a T e F.

Ad ogni valore è possibile collegare una condizione che determina se il valore deve essere presentato oppure no. La condizione deve seguire immediatamente il valore ed essere compresa tra parentesi quadre. Per coerenza costitutiva, all'interno della condizione è possibile fare riferimento solo alle variabili che precedono la variabile in oggetto, non quelle che seguono. Per eseguire verifiche che riguardano i valori assunti da più variabili è possibile utilizzare le istruzioni di validazione.
Ad esempio: /VALORI=1|3|5[ASSI>4]|7|9 indica che la variabile può assumere i valori 1,3,7,9, oppure il valore 5 se la variabile ASSI assume un valore maggiore di 4.

/NOCOMBO (/NCB) evita che il programma usi un controllo di tipo combo per la variabile specificata; l'opzione è utile ad esempio, in caso di caricamento di valori numerici con ampi ranges di validità (esempio: 1:10000) che sarebbero pesanti o impossibili da caricare su una combo
/FORMATO= (/FMT=) descrive il formato della variabile; l'opzione è facoltativa e non è ancora stata implementata
/MOSTRASE= (/SIF=) condizione che definisce se la variabile sarà mostrata; se la condizione è vera la variabile sarà mostrata; l'opzione è facoltativa; la versione abbreviata sta per 'Show IF'
/CHECK= (/CHK=) condizione di verifica del valore inserito; se la condizione risulta FALSA il valore viene rifiutato; l'opzione è facoltativa e ripetibile

/DEFAULT= (/DEF=) valore default per la variabile;
la sintassi /DEFAULT={FILE} fa in modo che il valore default può essere letto dal file di inizializzazione; viene assegnato il valore della riga identificata dal NOME della variabile (o dall'identificatore specificato nell'opzione INIT_FILE_ID, o in subordine alla DESCRIZIONE della variabile; se tale riga non esiste il programma emette un messaggio di errore 

/INIT_FILE_ID=identificatore specifica l'identificatore in base al quale viene caricato il valore default dal file di inizializzazione; in assenza dell'opzione viene utilizzato il codice della variabile

/NOTE= note sul significato e sull'uso della variabile; il testo inserito viene visualizzato come suggerimento in fase di compilazione; l'opzione è facoltativa

/COLORE_TESTO= (/CT=) e /COLORE_SFONDO= (/CS=) rispettivamente colore del testo e colore dello sfondo; il valore rappresenta il valore RGB (in formato decimale) o il valore SIMBOLICO DI SISTEMA (in formato decimale) del colore; se l'opzione non viene indicata la variabile assume i valori default del gruppo cui appartiene
/LUNGHEZZA= (LEN=) lunghezza massima del testo
/RIGHE= (LINES=) numero di righe (valido solo se tipo = Stringa); il valore default è 1 (una sola riga);
/ESEGUI=[condizione]OPERAZIONE (EXEC=) quando il valore della variabile viene modificato il programma esegue l'operazione specificata; se viene specificata una condizione (fra parentesi quadre) l'operazione viene eseguita solo se la condizione è verificata; il valore può essere indicato da una espressione; il simbolo @ viene sostituito con il valore assegnato alla variabile;
ecco qui di seguito alcuni esempi di uso (si suppone che sia definita una variabile di nome ASSI):

/ESEGUI=ASSI=4
(assegna il valore 4 alla variabile ASSI)

/ESEGUI=ASSI=[@=12]4
(esegue ASSI=4 se il valore assegnato alla variabile è 12)

/ESEGUI=ASSI=SE(@=12;100;200)
(assegna un valore alla variabile ASSI: se il valore @ è pari a 12 assegna il valore 100, altrimenti assegna 200)

Sulla stessa variabile è possibile specificare più volte questa opzione, per eseguire più assegnazioni.
Le assegnazioni eseguite scatenano l'esecuzione a cascata delle assegnazioni automatiche eventualmente presenti sulle variabili modificate. ATTENZIONE: questo comportamento può generare loops infiniti.
In deroga alla regola generale in base alla quale è necessario definire un simbolo prima di referenziarlo, le variabili referenziate nel comando ESEGUI possono essere definite anche DOPO la variabile da cui sono referenziate.
NB: l'opzione ha effetto solo all'interno della finestra di modifica dei valori variabili; la modifica diretta delle variabili (all'interno delle proprietà del progetto) non ha alcun effetto.

ESEMPI

// numero di assi della macchina
ASSI=I;/DES=numero di assi;/VALUES=3|4|5

// posizione di montaggio;
// si noti l'uso dei codici (SX, DX, ANT, POST) in associazione alle descrizioni
ASSI=I;/DES=lato montaggio;/VALUES=sinistra{SX}|destra{DX}|posizione anteriore{ANT}|posizione posteriore{POST}

// tipo dell'asse 04; MOSTRASE indica che la variabile viene domandata solo se ci sono almeno quattro assi; i valori valori sono A|B|C se la macchina ha quattro assi, oppure C|D|E se la macchina ha cinque assi
TIPOASSE_04=S;/DES=tipo di asse quattro; _
/VALORI=A|B|C|D|E;/MOSTRASE=$ASSI>=4; _
/CHECK=($ASSI=4) && (@ = {A|B|C}) || $ASSI=5 && @={C|D|E})

// la lunghezza può essere 100, 120 (se la macchina ha 4 o 5 assi) oppure un qualunque valore tra 150 e 180 (se la macchina ha 5 assi)
LUNGHEZZA=F;DES=lunghezza della macchina; _
VALORI=*100|120[$ASSI={4|5}]|150:180[$ASSI=5]

// sarà richiesto se la condizione 'CLIENTE' è vera o falsa
CLIENTE=B

Pagina base del manuale di JOLLY

aggiornato il 23/01/2010

home

scrivimi, se ti va