di tipo alfanumerico: espresse sia tra apici ('), sia tra doppi apici ("). Ecco due esempi di stringhe valide:
| "E' sicuro" |
| 'una "stringa" particolare' |
di tipo numerico: espresse con un punto decimale se necessario. Ecco due esempi di costanti numeriche valide:
| -2.5 |
| 123000 |
di tipo data: espresse sotto forma [ giorno / mese / anno ]. Si noti che l'anno deve essere obbligatoriamente espresso su 4 cifre. Ecco due esempi di costanti date valide:
| [15/3/2002] |
| [21/05/1819] |
di tipo logico: si confonde con le costanti numeriche: 1 (e per estensione ogni valore non nullo) equivale a Vero, 0 equivale a Falso.
Gli operatori validi sono i seguenti:
| + | addizione di due numeri, di una data e di un numero di giorni o concatenazione di due stringhe di caratteri. |
| - | sottrazione di due numeri, di una data e di un numero di giorni o concatenazione di due stringhe di caratteri inserendo uno spazio tra le due stringhe. |
| * | moltiplicazione di due numeri |
| / | divisione di due numeri |
| ^ | elevamento alla potenza |
| < <= > >= <> | operatori di confronto |
|
and or xor not | operatori logici, che possono anche essere abbreviati & | ? ! |
Si dispone anche della possibilità di utilizzare delle parentesi senza alcun limite.
Una variabile si esprime generalmente sotto la forma:
| [ classe ] nomvar ( indice ) |
Per esempio, è possibile definire le seguenti variabili:
| [F:BPC]BPCNAME |
| MIA_VARIABILE |
| ELEMENTO(33) |
Il nome della variabile nomvar si esprime sotto forma di lettere e/o di cifre, dove il primo carattere è sempre una lettera e anche il carattere sottolineato viene ammesso. La lunghezza significativa di un nome di variabile è limitata a 12 caratteri. Tutti i nomi sono autorizzati, eccetto alcune keyword riservate al linguaggio (File, Until o Commit fanno per esempio parte di queste parole chiave). Quando si digita un nome di variabile in lettere minuscole, viene trasformato automaticamente in lettere maiuscole, salvo che non si tratti di una keyword.
Alcune variabili possono essere dimensionate, cioè corrispondere a dei riquadri di elementi (sono possibili da 1 a 4 dimensioni). In questo caso, va indicato il o gli indici sotto forma di espressioni numeriche, separate da delle virgole se sono tante, tra parentesi (per esempio M_TB(1,2,8) è una sintassi valida).
Una classe corrisponde ad un insieme di variabili legate ad un contesto. Le classi più correnti sono le seguenti:
[V] : classe di variabili globali. Una variabile di questo tipo è collegata alla sessione ADONIX. Una volta creata, rimane accessibile fino a quando non sarà distrutta o finchè lnon si chiuderà a sessione ADONIX. La sua dichiarazione si fa con l'aiuto di istruzioni dedicate (secondo il tipo, si utilizzano le istruzioni Integer, Decimal, Char, Date, Libelle, Shortint, Float, Double).
[L] : classe di variabili locali. E' collegata ad un ciclo di sotto programmi (ogni istruzione Call crea una nuova classe di variabili locali che nasconde la classe precedente). La dichiarazione di variabili di questo tipo si fa come per le variabili precedenti, ma facendo precedere la dichiarazione della keyword Local.
[C]: classe di variabili di tipo contatore. Si tratta di variabili comuni a tutte le postazioni di un dossier. La loro creazione si fa tramite una funzione di sviluppo dedicata.
[F:abb] o ancora [abb]: si tratta della classe delle variabili collegate ad una tabella dichiarata dall'istruzione File. Vi si trovano i valori del record corrente.
[M:abb] o ancora [abb]: si tratta della classe delle variabili collegate ad una videata di inserimento dichiarata dall'istruzione Mask. Vi si trovano i valori che sono stati inseriti o in grado di essere visualizzati (ogni folder di una videata è considerato come una maschera).
La classe non è obbligatoria, poichè le regole permettono di conoscere la classe di default.
Esistono un insieme di variabili dette sistema, in quanto gestite direttamente da adonix. Mentre le altre variabili sono trasformate, in fase di inserimento in maiuscolo, queste variabili, che fanno parte delle keyword del linguaggio, sono visualizzate in minuscolo. Ecco alcune variabili di sistema utilizzabili (lista non esauriente):
Nome | Tipo | Definizione |
nomap | stringa | nome del dossier corrente |
datesyst | data | data sistema modificabile |
adxdir | stringa | directory di base adonix |
nolign | numerico | numero di riga corrente |
fstat | numerico | stato di ritorno dopo lettura o scrittura di una tabella |
Una funzione si esprime sotto forma di funzione (lista di argomenti). Esistono numerose funzioni: elaborazione di stringhe di caratteri, calcoli su date, funzioni numeriche classiche, funzioni di troncatura e arrotondamento, funzioni statistiche…
Un elenco delle principali funzioni utilizzabili in ADONIX si trova qui in basso. Nel riquadro delle funzioni, le convenzioni di scrittura sono le seguenti:
v è un argomento di qualunque tipo (idem per v1,v2,v3...)
è un argomento di tipo stringa di caratteri
x è un argomento di tipo numerico
n, p, q... sono degli argomenti di tipo intero
V è una variabile
lista è un elenco di variabili o di espressioni. In questo tipo di lista, una variabile TABLO di tipo riquadro può essere utilizzata sotto la forma TABLO(I) (si considera solo un indice), TABLO (si percorrono tutti gli indici) o TABLO(I..J) (si percorrono gli indici da I a J inclusi).
Sintassi | Tipo | Definizione |
date$ | data | data corrente |
sin(x), cos(x), tan(x) | numerico | funzioni trigonometriche |
asin(x),acos(x)... | numerico | funzioni trigonometriche inverse |
log(x),exp(x),ln(x) | numerico | funzioni logaritmiche |
abs(x), sgn(x) | numerico | valore assoluto, segno |
ar2(x), arr(x,y) | numerico | arrotondamento a 2 decimali, arrotondamento da x a y |
int(x), mod(x,y) | numerico | parte intera, modulo |
len(c) | numerico | lunghezza di una stringa |
day(d),month(d),year(d) | numerico | estrazione giorno, mese, anno di una data |
dayn(d),week(d) | numerico | numero del giorno nella settimana, numero della settimana |
num$(x) | stringa | converte un numero in una stringa (rappresentazione decimale) |
space$(n), chr$(n) | stringa | stringa composta da n spazi, da 1 carattere di codice interno n |
string$(n,c), string$(n,x) | stringa | stringa composta da n caratteri c (o n carattere di codice x) |
day$(d), month$(d) | stringa | nome del giorno, nome del mese |
addmonth(d,n) | data | la data d a cui si è aggiunto n mesi |
eomonth(d) | data | l'ultimo giorno del mese corrispondente alla data d |
left$(c,n), right$(c,n) | stringa | parte sinistra/destra di una stringa su n caratteri |
mid$(c,n,p), seg$(c,n,p) | stringa | estrazione di sub-stringhe di una determinata stringa |
gdat$(n,p,q) | data | costruzione di una data (n=giorno, p=mese, q=anno) |
pat(c1,c2) | numerico | verifica la conformità di una stringa c1 ad un modello c2 (1 se conforme, altrimenti 0). Il modello può includere i meta-caratteri * (numero qualsiasi di caratteri qualsiasi), ? (un carattere qualsiasi), # (una cifra qualsiasi). |
min(lista), max(lista) | tutti i tipi | minimo o massimo di un insieme di variabili o valori |
sum(lista), prd(lista) | numerico | somma, prodotto di un insieme di variabili o valori |
avg(lista), var(lista) | numerico | media, varianza di un insieme di variabili o valori |
sum(lista) | stringa | concatenazione di un insieme di variabili o valori stringa |
uni(lista) | numerico | verifica di unicità su un insieme di variabili o valori |
find(v,lista) | numerico | ricerca di un valore di tipo qualunque in una lista |
evalue(c) | tutti i tipi | valutazione di una stringa di carattere contenente un'espressione |
format$(c,v) | stringa | formattazione di un valore con un determinato formato c. |
toupper(c),tolower(c) | stringa | trasformazione in minuscolo, in maiuscolo |
sigma(V=v1,v2,v3) | numerico | somma (V varia da v1 a v2), dell’espressione v3 funzione di V. |
Esistono anche delle funzioni definite da sviluppatori e utilizzabili nelle espressioni calcolate, tramite la seguente sintassi:
func PROGR.FUNZ(lista di argomenti)
PROGR è il nome del programma, e FUNZ il nome della funzione interessata. Si noti che le funzioni utilizzabili sono documentate nella tabella dei sotto-programmi.