Scripts di interrogazione: condizioni

Le macro parametriche negli scripts di interrogazione

Ovunque nella stesura degli scripts di interrogazione (nella definizione, nella referenziazione, nelle condizioni, nelle formule di determinazione della quantità degli articoli, ecc.) è possibile fare uso delle macro.

(NB: per chi è un po' pratico di programmazione: il concetto di macro è sostanzialmente quello implementato dal linguaggio C)

Definire una macro significa associare ad un simbolo (la macro) un testo (il valore della macro). Ogni volta che la macro viene referenziata, al simbolo viene sostituito il valore della macro.
La sintassi di definizione delle macro è la seguente:

#NOMEMACRO=definizione

#NOMEMACRO()=definizione

#NOMEMACRO1(PARM)=definizione #PARM continua definizione

#NOMEMACRO1(PARM1,PARM2)=definizione #PARM1 continua #PARM2 definizione

Ad esempio:

#QTA_PIASTRE=120
#LUNGHEZZA=if($TIPO=ABC;100;200)
#SQL_INS(NOME,COGNOME)=INSERT INTO table (str_nome, str_cognome) VALUES ('#NOME', '#COGNOME');

Le macro sono definite all'interno dei singoli progetti nella linguetta di gestione degli scripts di interrogazione.
Le macro possono essere referenziate ovunque sia possibile utilizzare le variabili di progetto.
Il simbolo della macro viene sostituito rigidamente dal valore cui è stato associato. La sostituzione avviene prima di qualsiasi valutazione del valore. Ad esempio (usando le definizioni fornite più sopra):

se(#QTA_PIASTRE > 100;10000;20000)
diventa
se(120 > 100;10000;20000)

se(#QTA_PIASTRE > 100;#LUNGHEZZA;#LUNGHEZZA+1000)
diventa
se(120 > 100;if($TIPO=ABC;100;200);if($TIPO=ABC;100;200) + 1000)

#SQL_INS(ALESSANDRO,MANZONI)=INSERT INTO table (str_nome, str_cognome) VALUES ('ALESSANDRO', 'MANZONI');

LIVELLI GERARCHICI MACRO

E' possibile definire MACRO su diversi livelli:

Ogni livello può utilizzare le definizioni dei livelli precedenti.
A parità di nome macro ogni livello prevale e ridefinisce i livelli precedenti.

PERCHE' USARE LE MACRO
Come sanno tutti i programmatori, le macro sono *BELLISSIME* perché:

Pagina base del manuale di JOLLY