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:
- funzioni di sistema
- funzioni di gestione delle stringhe
- funzioni di conversione
- funzioni informative e di controllo
- funzioni aritmetiche
- funzioni numeriche
- codici a barre
- variabili statiche
- funzioni SQL
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 | |
| 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 |
| 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 |
| 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 |
| 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 | |
| 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 |
| 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 | |
| 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 |
| 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 |
| serial_section | numero | nessuno | rende un numero progressivo che identifica l'ultima sezione che è stata impaginata | 2.57 27/12/2005 |