Funzioni

Le funzioni di GALATEO

All'interno delle formule di GALATEO è possibile fare uso di numerose funzioni, che per comodità espositiva possono essere raggruppate nelle seguenti categorie:

vedi anche: il concetto di pagina in Galateo

funzione valore restituito parametri
fra parentesi quadre i parametri facoltativi
descrizione disponibile a partire dalla versione
FUNZIONI DI SISTEMA
pagina numero nessuno rende il numero della pagina (fisica) corrente
pagina_progressiva numero nessuno rende il numero della pagina (fisica) come generato o restituito dalla procedura di generazione automatica dei numeri progressivi di pagina; può essere usata solo se è stata attivata la funzione di generazione automatica dei progressivi di pagina 2.66
20/03/2006
pagina_progressiva_operatore stringa nessuno rende l'operatore che ha eseguito la stampa originale; vedi anche procedura di generazione automatica dei numeri progressivi di pagina in fase di implementazione
pagina_progressiva_datastampa stringa nessuno rende data e ora della stampa originale; vedi anche procedura di generazione automatica dei numeri progressivi di pagina in fase di implementazione
pagina_sezione numero nessuno rende il numero di pagina fisica all'interno della pagina logica 2.32
13/10/2001
tot_pagine_sezione numero nessuno rende il numero totale di pagine fisiche della pagina logica 2.32
13/10/2001
pagina_record numero nessuno rende il numero di pagina del record corrente
tot_pagine_record numero nessuno rende il numero totale di pagine occupato dal record corrente
section_group_first() boolean nessuno per ogni record di una sezione: rende T se il valore del campo di accorpamento (group by)  è differente dal valore del record precedente (in pratica: se è cambiato); rende sempre T sul primo record di ogni sezione
consente di stampare certi campi o di eseguire salti pagina in occasione della modifica del campo di accorpamento
per usare questa funzione è necessario assegnare il campo di accorpamento per la sezione
2.82
11/07/2008
section_group_middle() boolean nessuno vedi note per section_group_first()
rende T se il valore del campo di accorpamento (group by)  è uguale al valore del campo precedente e del campo successivo; in pratica se non sono nè sul primo né sull'ultimo record del gruppo
2.82
11/07/2008
section_group_last() boolean nessuno vedi note per section_group_first()
rende T se il valore del campo di accorpamento (group by)  è differente dal valore del record successivo; in pratica se sono sull'ultimo record del gruppo
2.82
11/07/2008
numero_etichetta_sezione numero nessuno numero progressivo di etichetta (ovvero: pagina virtuale) (nella pagina logica) 2.64
07/11/2005
numero_etichetta_pagina numero nessuno numero progressivo di etichetta (pagina virtuale) nella pagina fisica 2.64
07/11/2005
tot_etichette_sezione numero nessuno numero totale di etichette (pagina virtuale) nella pagina logica 2.64
07/11/2005
numero_etichette_pagina numero nessuno numero (teorico) di etichette (pagine virtuali) contenute sulla pagina fisica 2.64
07/11/2005
pos_ultima_etichetta_stampata numero [1: nome della stampante] rende la posizione dell'ultima etichetta stampata sulla stampante specificata; se non viene specificata nessuna stampante, l'informazione si riferisce alla stampante default di sistema; l'informazione è salvata sul registry per la sessione corrente (e quindi per ogni account Windows); vengono salvate sequenze differenti per ciascun codice di formato di etichetta (da specificare sullo opzioni generali del report-etichetta)
rende 0 se la prossima etichetta da stampare è la prima del foglio, 1 se è la seconda e così via
di norma questa funzione è utilizzata in associazione con l'opzione che consente di iniziare a stampare il foglio di etichette saltando le prime NN (che si suppone non più disponibili perchè già stampate in precedenza)
2.95
24/10/2009
salta_pagine_virtuali testo (blank) numero pagine da saltare salta il numero specificato di pagine virtuali (etichette); le pagine saltate sono completamente vuote; le pagine vengono inserite dopo la pagina su cui viene chiamata la funzione 2.65
30/01/2006
prossima_pagina_fisica testo (blank) nessuno salta alla prossima pagina fisica lasciando vuote le pagine virtuali necessarie; se emesso sull'ultima pagina virtuale di una pagina fisica non fa nulla (l'effetto della chiamata è nullo) 2.65
30/01/2006
pagina_logica_numero numero nessuno rende il numero di pagina logica 2.46
28/10/2003
pagina_logica_descrizione stringa nessuno rende la descrizione estesa della pagina logica; se la descrizione estesa non esiste rende la descrizione breve 2.46
28/10/2003
pagina_logica_descrizione_breve stringa nessuno rende la descrizione breve della pagina logica; se la descrizione breve non esiste rende la descrizione estesa 2.63
28/09/05
ora stringa nessuno rende l'ora di stampa
data stringa [formato] rende la data di stampa; formato può assumere i seguenti valori:
0: dd/mm/yy
1: dd/mm/yyyy
2: yyyy-mm-dd (sql ASA)
3: yyyymmdd (sql server)
4: yy/mm/dd
5: mm/dd/yy
6: mm/dd/yyyy
parametro aggiunto il 11/07/2088
messagebox numero 1: testo
2: numero
[3: obsoleto]
emette una MessageBox con il testo specificato; tipo determina il tipo di MessageBox(); i valori accettati sono i seguenti (usare il valore numerico, il simbolo è inserito solo come spiegazione del significato)
000 (MB_OK)
001 (MB_OKCANCEL)
002 (MB_ABORTRETRYIGNORE)
003 (MB_YESNOCANCEL)
004 (MB_YESNO)
005 (MB_RETRYCANCEL)
016 (MB_ICONSTOP)
032 (MB_ICONQUESTION)
048 (MB_ICONEXCLAMATION)
064 (MB_ICONASTERISK)
256 (MB_DEFBUTTON2)
la funzione rende un valore in funzione della scelga operata dall'utente:
1 IDOK The user chose the OK button.
2 IDCANCEL The user chose the Cancel button.
3 IDABORT The user chose the Abort button.
4 IDRETRY The user chose the Retry button.
5 IDIGNORE The user chose the Ignore button.
6 IDYES The user chose the Yes button.
7 IDNO The user chose the No button.
2.19
05/04/2000

sintassi e comportamento modificati il 17/11/2007

abort 1: testo emette un messaggio con il testo specificato e blocca l'esecuzione 2.19
05/04/2000
char stringa 1: codice rende il carattere corrispondente al codice (ASCII) passato come parametro 2.34
15/11/2005
fileexists stringa 1: nomefile rende T se nomefile esiste, F altrimenti 2.34
26/04/2002
findfullfilename string 1: nomefile
2: default_ path
cerca nomefile; rende il nome del file completo di path; se è impossibile trovare nomefile rende una stringa vuota;
la ricerca avviene nel seguente ordine:
1) nomefile nella forma in cui viene specificato;
2) nomefile (senza path) nella cartella corrente;
3) nomefile in default_ path; default_ path può essere composto da più percorsi di ricerca separati da puntoevirgola;
2.34
26/04/2002
read_text_file() stringa 1: filename
[2: modalità = 0]
legge il file specificato, fino a 32k caratteri; modalità può asssumere uno dei seguenti valori:
0=interrompi in caso di errore
1=in caso di errore emette una segnalazione
2=in caso di errore domanda all'utente se proseguire
3=in caso di errore non succede nulla
2.40
20/01/2003
report_filename stringa [1: parm=0] rende il nome del report; se parm non è indicato oppure vale 0 rende solo il nome del file, se vale 1 anche il path completo, se vale NN rende il path completo ridotto ad una stringa di NN caratteri (ma rende sempre almeno il nome del file) 2.40
20/01/2003
report_datetime stringa [1: parm=0] rende la data di modifica del report; se parm non è indicato oppure vale 0 rende solo la data, se vale 1 rende data e ora 2.48
27/01/2004
valuta_formula stringa 1: formula forza la valutazione della formula fornita come stringa di testo

FUNZIONI STRINGA

acapo stringa nessuno sequenza che manda il resto del testo sulla riga successiva
len numero 1: stringa rende la lunghezza di stringa
copy stringa 1: stringa
2: i_start
[3: i_len=maxint]
rende una porzione di stringa di i_len caratteri a partire dalla posizione i_start (passare 1 per il primo carattere); se i_len non viene specificato, copia tutto il resto della stringa
sostituisci stringa 1: stringa
2: vecchio
3: nuovo
all'interno di stringa sostituisce il testo vecchio con il nuovo; è case-insensitive 2.38
27/10/2003
maiuscolo stringa 1: stringa trasforma stringa in maiuscolo
minuscolo stringa 1: stringa trasforma stringa in minuscolo
togliblanks stringa 1: stringa toglie spazi e tabulatori all'inizio e alla fine della stringa
quotedstr stringa 1: stringa racchiude stringa tra apici, e raddoppia eventuali apici contenuti all'interno 277
str2SQL stringa 1: stringa come quotedstr 277
dt2SQL stringa 1: stringa
[2:inapicia="T"]
[3:delta days=0]
legge una data in formato dd/mm/yyyy oppure dd/mm/yy e rende una data in formato  'YYYY-MM-DD'
se il valore in ingresso è blank rende NULL;
se il valore in ingresso non è valido rende la stringa nulla (senza apici)
se il parametro #2 è T rende la data inapiciata, altrimenti non inapiciata
alla data viene aggiunto il numero di giorni specificato dal parametro #3
2.72
16/05/2007

i parametri #2 e #3 sono stati aggiunti con la versione 4.09 del 28/01/2024
inapicia stringa 1: stringa
2: modalità
racchiude tra apici la stringa S secondo le modalità evidenziate dai seguenti esempi:
0     LUNA,SOLE,NETTUNO
1     'LUNA,SOLE,NETTUNO'
2     'LUNA','SOLE','NETTUNO'
3     ''LUNA','SOLE','NETTUNO''
4     ''LUNA'',''SOLE'',''NETTUNO''
5     '''LUNA'',''SOLE'',''NETTUNO'''
NB: gli apici utilizzati sono tutti SINGOLI (ascii 0x27)
2.71
20/04/2007
disapicia stringa 1: stringa toglie gli apici esterni dalla stringa 4.09
28/01/2024
pos intero 1: sottostringa
2: stringa
rende la posizione di SOTTOSTRINGA in STRINGA; rende 0 se SOTTOSTRINGA non fa parte di STRINGA 2.73
06/06/2007
coalesce stringa 1: stringa1
[2: stringa=""]
[3: stringa=""]
rende la prima stringa non blank 2.57
10/04/2005
puntato stringa 1: numero rende il numero con i punti di separazione delle migliaia 2.63
stringofchar stringa 1: stringa
2: num di ripetizioni
Genera una stringa composta dal numero specificato di ripetizioni di una stringa data 2.94
11/06/2009
zeri stringa 1: lunghezza formatta il numero premettendo degli zeri fino a raggiungere lunghezza 2.06
27/09/1999

FUNZIONI DI CONVERSIONE

numero numero 1: stringa converte stringa in numero 275
string stringa 1: numero  converte  numero in stringa 275
formatta_numero stringa 1: stringa
2: campo
3: decimali
formatta il numero con dimensione campo, allineando a destra (a sx se campo è minore di zero), con il numero indicato di decimali (come la funzione str() del pascal) 
L2E numero 1: numero converte numero da lire a euro 2.01
07/08/1999
E2L numero 1: numero converte 2.01
07/08/1999
valuta numero 1: importo
2: valuta1
3: valuta2
converte importo dalla valuta1 alla valuta2 2.29
12/03/2001
formatta_valuta
formatta_valuta_max
formatta_valuta_calc
stringa 1: importo
[2: valuta=EURO]
formatta importo secondo il formato della valuta specificata; se non viene specificata alcuna valuta, viene usato il formato EURO 2.95
18/11/2009
codifica_numero stringa 1: numero
2: codifica
effettua una trasposizione delle cifre di numero secondo il formato codifica; codifica deve essere di 10 caratteri; la cifra 1 viene sostituita con il primo carattere di codifica, 2 con il secondo e così via fino a 0 che viene sostituita dal decimo carattere  2.28
22/01/2001
data_in_lettere stringa 1: stringa (data) rende una data in formato testo; esempio: data_in_lettere("28/09/2005") diventa 28 marzo 2005 2.11
27/01/2000
num2str stringa 1: numero scrive numero in lingua italiana;
esempio: num2str(123) = centoventitre 
2.12
15/02/2000
num2strd stringa 1: numero
2: decimali
come num2str, ma gestisce il numero indicato di cifre decimali 2.12
15/02/2000
cf_to_datanascita stringa 1: stringa se stringa è un codice fiscale italiano valido, rende la data di nascita del soggetto, altrimenti rende blank 2.45
12/10/2003
min_2_hours stringa 1: minuti
[2: bo_spazio:boolean]
trasforma i minuti in ore
esempio: min2hours(200)=3h 20'
se bo_spazio = "F" viene omesso lo spazio: min2hours(200, "F")=3h20'
(bo_spazio introdotto 2022-09-08, ver 
2.08
07/12/1999
min_2_days numero 1: minuti
2: ore_giorno
trasforma i minuti in giorni, se ogni giorno è formato da ore_giorno ore 2.08
07/12/1999
secondi_2_string stringa secondi trasforma i secondi in un formato testo  adattando automaticamente la modalità di visualizzazione all'ordine di grandezza del valore 2.56
23/03/2005
mese stringa 1: numero rende il nome del mese specificato (in italiano)
text2XML stringa 1: stringa codifica i caratteri speciali XML ( ; < > ' " ) 3.23
13/12/2015
XML2text stringa 1: stringa decodifica i caratteri speciali XML 3.23
13/12/2015

FUNZIONI INFORMATIVE E DI CONTROLLO

codice_fiscale stringa 1: codice fiscale rende T se il codice fiscale è formalmente corretto (in base al CIN), F se errato 3.39
13/08/2016
partita_IVA stringa 1: numero di partita IVA rende T se il numero di partita IVA è formalmente corretto (in base al CIN), F se errato 3.39
13/08/2016
IBAN stringa 1: codice IBAN rende T se il codice IBAN è formalmente corretto (in base al CIN internazionale), F se errato 3.39
13/08/2016
BISESTILE stringa 1: anno rende T se l'anno passato come parametro è bisestile, F se non lo è 3.52
27/07/2019
CODICE_CIN numero (1 cifra) 1: numero da trattare rende il codice di controllo (CIN) corrispondente al parametro 4.06
16/05/2021
CIN stringa 1: numero da trattare
[2: separatore]
rende una stringa formata dal numero stesso cui viene postfisso il CIN, eventualmente separato dal separatore 4.06
16/05/2021
CHECK_CIN stringa 1: stringa contenente il numero con CIN rende T se il CIN è corretto, F altrimenti; gestisce eventuale separatore 4.06
16/05/2021
DECODE_FROM_CIN stringa 1: stringa contenente il numero con CIN
[2: separatore]
rende il numero originale se la stringa è dotata di CIN corretto, altrimenti rende 0;
gestisce eventuale separatore
4.06
16/05/2021

FUNZIONI ARITMETICHE

mod numero 1: numero
2: divisore
rende numero mod divisore 2.11
27/01/2000
round numero 1: numero
2: decimali
arrotonda numero a decimali decimali; se decimali < 0 arrotonda a decine, centinaia, ... 277
and numero 1: numero1
2: numero2
esegue l'AND logico tra numero1 e numero2 2.25
27/08/2000
or numero 1: numero1
2: numero2
esegue l'OR logico tra numero1 e numero2 2.25
27/08/2000
xor numero 1: numero1
2: numero2
esegue lo XOR logico tra numero1 e numero2 2.25
27/08/2000
abs numero 1: numero rende il valore assoluto di numero

FUNZIONI NUMERICHE

pari stringa 1: [numero] rende T se il numero è pari, F altrimenti; se non viene specificato nessun parametro, la funzione rende alternativamente PARI e DISPARI (in funzione del record SQL letto)  4.04
22/03/2021
dispari stringa 1: numero rende T se il numero è dispari, F altrimenti; se non viene specificato nessun parametro, vedi PARI() 4.04
22/03/2021
primo numero 1: numero rende l'i-esimo numero primo 4.04
22/03/2021
is_primo stringa 1: numero rende T se il numero è primo, F altrimenti 4.04
22/03/2021
primo_pos numero 1: numero rende la posizione di NUMERO nella sequenza dei numeri primi; rende 0 se NUMERO non è un numero primo; esempio: primo_pos(11) = 5 4.04
22/03/2021
fibonacci numero 1: numero
2: decimali
rende il numero i-esimo della successione di Fibonacci;
fibonacci(0)=0; fibonacci(1)=1;fibonacci(2)=1; fibonacci(3)=2; fibonacci(4)=3
4.04
22/03/2021
is_fibonacci stringa 1: numero1
2: numero2
rende T se il numero appartiene alla successione di Fibonacci, F altrimenti 4.04
22/03/2021
fibonacci_pos numero 1: numero1
2: numero2
rende la posizione del numero nella successione di Fibonacci; rende -1 se il numero non appartiene alla successione di Fibonacci 4.04
22/03/2021

CODICI A BARRE

ean13 stringa 1: numero genera un codice a barre del tipo specificato
code39 stringa 1: stringa genera un codice a barre del tipo specificato
EAN128_A
EAN128_B
stringa 1: stringa genera un codice a barre del tipo specificato; il tipo B è di utilizzo più generale rispetto al tipo A 2.77
20/11/2007
EAN128_C stringa 1: stringa genera un codice a barre del tipo specificato; molto efficiente per stringhe numeriche (o a forte prevalenza numerica); inadatto per stringhe letterali (usare in sua vece il B o l'A) 2.77
20/11/2007
EAN128_AUTO string 1: stringa genera un codice a barre del tipo specificato; sceglie il tipo di codifica adottata (A/B/C)  in base al tipo di dato da codificare 2.77
20/11/2007
INTERLEAV2OF5_MOD10 string 1: stringa genera un codice a barre del tipo specificato

VARIABILI STATICHE

get_var stringa 1: stringa rende il valore della variabile specificata; se la variabile non esiste l'esecuzione viene interrotta 2.61
15/08/2005
get_numvar numero 1: stringa come get_var, ma solo per variabili numeriche 2.61
15/08/2005
get_textvar stringa 1: stringa come get_var, ma solo per variabili di tipo stringa 2.61
15/08/2005
exists_var stringa 1: stringa rende T se variabile esiste, F altrimenti 2.61
15/08/2005

FUNZIONI SQL

list stringa 1: query
[2: delimitatore=,]
[3: bo_distinct=T]
esegue la query e rende tutti i valori separati da delimitatore; è equivalente alla funzione list() definita da SQL Anywhere; se BO_DISTINCT=T vengono caricati solo valori distinti 2.57
10/04/2005
isnull boolean 1: nome dell'oggetto serve per testare il valore NULL di di oggetti SQL;
rende T se l'oggetto rappresenta un campo SQL che ha valore NULL, F in tutti gli altri casi
NB (banale): le stringhe vuote non sono considerate NULL
NB: questa funzione è applicabile a prescindere dal tipo di rappresentazione adottata per gli oggetti NULL
vedi anche COMPORTAMENTO IN CASO DI VALORE NULL
3.26
01/07/2016

FUNZIONI DEBUG

serial_section numero nessuno rende un numero progressivo che identifica l'ultima sezione che è stata impaginata 2.57
27/12/2005

Pagina base del manuale di JOLLY