GESSTR - Gestione stringhe e testi¶
Posizione nel menu Programma non a menu Linkage section
| Tipo | Dato | Formato | Contenuto |
|---|---|---|---|
| INPUT | GESSTR-OPE | x(20) | Vedi argomenti successivi |
| I/O | GESSTR-N-RIGHE | 9(04) comp | |
| GESSTR-LEN-RIGA | 9(04) comp | ||
| GESSTR-LEN-NOTE | 9(08) comp | ||
| GESSTR-SYMBOL-SET | x(30) | ||
| GESSTR-BACKSLASH | x(05) | Indica come deve essere convertito il carattere backslash Vale solo per l'operazione "CONV-TESTO-X-ESPORT" |
|
| GESSTR-ESITO | x(01) | Esito dell'operazione | |
| GESSTR-MSG | x(80) | Messaggio di esito | |
| GESSTR-SOST-DA | x(100) | Stringa da sostituire e stringa sostituente, in caso di operazione "REPLACE" | |
| GESSTR-SOST-A | x(100) | ||
| GESSTR-CHAR | x(02) | Carattere da usare in determinate operazioni | |
| GESSTR-REPLACE-DONE | x(01) | La "REPLACE" ha fatto qualche sostiutuzione? (S/N) serve ad indicare se il testo da sostituire è stato trovato o no | |
| GESSTR-CASE-SENSITIVE | x(01) | La ricerca deve tenere conto del case? |
|
| GESSTR-TRIM-LEFT | x(01) | Il risultato deve essere trimmato a sx? |
|
| GESSTR-SOST-ESCLUDI-SX | x(01) | Se significativo, la funzione "REPLACE" non avrà effetto se la stringa da sostituire è preceduta da questo carattere (ad esempio quando devo sostituire "0A" con "0D0A" |
|
| GESSTR-TARGET-POS | 9(08) comp | Posizione del testo trovato (operazione FIND) | |
| FILLER | x(174) | ||
| GESSTR-NOTE | x(64000) | Campo note su cui lavorare | |
| GESSTR-TAB-RIGHE | Tabella di 1000 elementi che contiene le righe scomposte o da comporre | ||
| x(1000) | Singola riga all'interno della tabella | ||
| GESSTR-TAB-RIGHE-AGG | Dati aggiuntivi collegati alle righe | ||
| Elemento tabella (1000 elementi) | |||
| x(01) | Contiene: |
||
| x(10) |
Logica generale Raccolta di funzioni di utilità su testi e stringhe Maschera del programma Nessuna maschera. Elaborazione L'elaborazione cambia a seconda dell'operazione richiesta.
Operazione: BINARY-TO-NOTE¶
Descrizione Questa operazione preleva il contenuto di un file binario, il cui nome è GESSTR-RIGA (1), e restituisce il contenuto nel campo GESSTR-NOTE
Il limite è dato dalla lunghezza di GESSTR-NOTE: 64000 byte Chiamata standard
| Tipo | Dato | Contenuto |
|---|---|---|
| INPUT | GESSTR-OPE | "BINARY-TO-NOTE" |
| GESSTR-N-RIGHE | Numero di righe passate (1) | |
| GESSTR-RIGA (1) | Contiene il nome del file binario | |
| OUTPUT | GESSTR-NOTE | Contenuto del file binario |
| GESSTR-LEN-NOTE | Lunghezza del campo note restituito |
call "GESSTR" using stringhe util-gesstr gesstr-note gesstr-tab-righe
Operazione: NOTE-TO-BINARY¶
Descrizione Questa operazione salva su un file binario il contenuto di GESSTR-NOTE. Il nome del file da creare è GESSTR-RIGA (1)
Chiamata standard
| Tipo | Dato | Contenuto |
|---|---|---|
| INPUT | GESSTR-OPE | "BINARY-TO-NOTE" |
| GESSTR-NOTE | Contiene il nome del file binario | |
| GESSTR-LEN-NOTE | Lunghezza del campo note passato | |
| GESSTR-RIGA (1) | Il nome del file da creare | |
| GESSTR-N-RIGHE | Numero di righe passato (1) | |
| OUTPUT | GESSTR-ESITO | Esito dell'operazione |
call "GESSTR" using stringhe util-gesstr gesstr-note gesstr-tab-righe
Operazione: JSON-FIND¶
Descrizione Con questa operazione viene esaminato il contenuto di GESSTR-NOTE, dando per scontato che sia in formato JSON. All'interno delle note viene cercato un "tag", passato in GESSTR-SOST-DA e viene restituito il contenuto in GESSTR-NOTE Ad esempio: {"error":"invalid_grant","error_description":"Invalid user credentials"} oppure, formattato: { "error":"invalid_grant", "error_description":"Invalid user credentials" } In rosso sono indicati i tag, in verde il risultato Chiamata standard
| Tipo | Dato | Contenuto |
|---|---|---|
| INPUT | GESSTR-OPE | "JSON-FIND" |
| GESSTR-NOTE | Contiene il testo su cui effettuare la ricerca | |
| GESSTR-LEN-NOTE | Lunghezza del campo di testo da analizzare | |
| GESSTR-SOST-DA | TAG da cercare | |
| GESSTR-CASE-SENSITIVE | Modalità di ricerca: default |
|
| OUTPUT | GESSTR-ESITO | Qui viene restituito "S" se il tag è stato trovato |
| GESSTR-NOTE | Contenuto del tag |
call "GESSTR" using stringhe util-gesstr gesstr-note
Operazione: SCOMPONI-NOTE¶
Descrizione Scompone un campo testo ricevuto in input in righe da GESSTR-LEN-RIGA caratteri. Le parole intere vengono mandate a capo. Se GESSTR-LEN-RIGA non è significativo, il programma si aspetta che sia passato GESSTR-SOST-DA; in questo caso la stringa verrà separata quando verrà trovato il carattere di separazione. NB: tenere presente che le righe di output potranno essere lunghe al massimo la lunghezza di GESSTR-RIGA (n) Da implementare Chiamata standard
| Tipo | Dato | Contenuto |
|---|---|---|
| INPUT | GESSTR-OPE | "SCOMPONI-NOTE" |
| GESSTR-LEN-RIGA | Lunghezza righe richiesta | |
| GESSTR-SOST-DA | Carattere separatore delle righe, in alternativa a GESSTR-LEN-RIGA | |
| GESSTR-LEN-NOTE | Lunghezza del campo note, se conosciuta (altrimenti l’analisi sarà effettuata su tutto il campo note, quindi con un peggioramento di prestazioni) | |
| GESSTR-NOTE | Campo note su cui lavorare | |
| GESSTR-TRIM-LEFT | Indica se le righe devono essere trimmate a sx |
|
| OUTPUT | GESSTR-N-RIGHE | Numero righe create |
| GESSTR-TAB-RIGHE | Tabella con le righe create | |
| GESSTR-AGG-A-CAPO (n) | Conterrà “S” se la riga contiene un “a capo” al termine del testo |
Operazione: COMPONI-NOTE¶
Descrizione Ricevo in input una tabella di "n" righe e con questa compongo un campo note editabile a video in un campo memo Ad ogni ". " trovato separo il paragrafo Ad ogni flag "a capo" trovato separo il paragrafo Chiamata standard
| Tipo | Dato | Contenuto |
|---|---|---|
| INPUT | GESSTR-OPE | "COMPONI-NOTE" |
| GESSTR-N-RIGHE | Numero righe presenti in tabella | |
| GESSTR-LEN-RIGA | Lunghezza righe passate in input | |
| GESSTR-TAB-RIGHE | Tabella che contiene le righe con cui comporre il testo | |
| GESSTR-AGG-A-CAPO (n) | Contiene: |
|
| OUTPUT | GESSTR-NOTE | Campo note creato dall’insieme delle righe |
| GESSTR-LEN-NOTE | Lunghezza del campo note creato |
Operazione: CERCA-PREPARA¶
Descrizione Questa operazione fa parte di un set di operazioni necessarie per eseguire una ricerca di una o piu' parole all'interno di un testo. Ricevo in input una stringa contenente le parole da cercare, e prepara la w/s necessaria. La string potrà contenenere fino a 3 parole con il wildchar "*" prima o dopo la parola stessa. A differenza di "CERCA-TUTTO-PREPARA", se le stringhe in input non hanno il wildchar, la ricerca sarà per parola intera. Questa operazione è in alternativa a "CERCA-PREPARA"; successivamente si dovrà eseguire l'operazione "CERCA-ESEGUI" Chiamata standard
| Tipo | Dato | Contenuto |
|---|---|---|
| INPUT | GESSTR-OPE | "CERCA-PREPARA" |
| GESSTR-NOTE | Campo note in cui passare la stringa contenente le parole da cercare | |
| GESSTR-LEN-NOTE | Lunghezza del campo note passato | |
| OUTPUT | GESSTR-ESITO | Esito dell'operazione (S/N) |
020
Operazione: CERCA-TUTTO-PREPARA¶
Descrizione Questa operazione fa parte di un set di operazioni necessarie per eseguire una ricerca di una o piu' parole all'interno di un testo. Ricevo in input una stringa contenente le parole da cercare, e prepara la w/s necessaria. La stringa potrà contenenere fino a 3 parole, che saranno considerate sempre come se avessero il wildchar "*" prima e dopo (ricercherà sempre per contenuto) Questa operazione è in alternativa a "CERCA-PREPARA"; successivamente si dovrà eseguire l'operazione "CERCA-ESEGUI" Chiamata standard
| Tipo | Dato | Contenuto |
|---|---|---|
| INPUT | GESSTR-OPE | "CERCA-PREPARA" |
| GESSTR-NOTE | Campo note in cui passare la stringa contenente le parole da cercare | |
| GESSTR-LEN-NOTE | Lunghezza del campo note passato | |
| OUTPUT | GESSTR-ESITO | Esito dell'operazione (S/N) |
Operazione: CERCA-ESEGUI¶
Descrizione Questa operazione fa parte di un set di operazioni necessarie per eseguire una ricerca di una o piu' parole all'interno di un testo. Da eseguire dopo avere eseguito l'operazione "CERCA-PREPARA" Ricevo in input una testo su cui effettuare la ricerca delle stringhe passate con l'operazione precedente Verrà restituito l'esito dell'operazione: * "S": Il testo contiene tutte le parole richieste * "N": Il testo non contiene tutte le parole richieste Chiamata standard
| Tipo | Dato | Contenuto |
|---|---|---|
| INPUT | GESSTR-OPE | "CERCA-ESEGUI" |
| GESSTR-NOTE | Campo note in cui passare il testo su cui effettuare la ricerca | |
| GESSTR-LEN-NOTE | Lunghezza del campo note passato | |
| OUTPUT | GESSTR-ESITO | Esito dell'operazione (S/N) |
Operazione: COMPONI-WORDMDL¶
Descrizione
Ricevo in input una tabella di "n" righe e con questa compongo un campo note editabile a video in un campo memo
Ad ogni ". " trovato separo il paragrafo
Ad ogni flag "a capo" trovato separo il paragrafo
Come COMPONI-WORDMDL, con la differenza che i caratteri di "a capo" utilizzati sono "
| Tipo | Dato | Contenuto |
|---|---|---|
| INPUT | GESSTR-OPE | "COMPONI-NOTE" |
| GESSTR-N-RIGHE | Numero righe presenti in tabella | |
| GESSTR-LEN-RIGA | Lunghezza righe passate in input | |
| GESSTR-TAB-RIGHE | Tabella che contiene le righe con cui comporre il testo | |
| GESSTR-AGG-A-CAPO (n) | Contiene: |
|
| OUTPUT | GESSTR-NOTE | Campo note creato dall’insieme delle righe |
| GESSTR-LEN-NOTE | Lunghezza del campo note creato |
Operazione: CONV-TESTO-IMPORTATO¶
Descrizione Questa operazione potrebbe essere necessaria dopo aver importato un testo da un file memorizzato su disco. L'operazione converte i caratteri speciali (lettere accentate, e se necessario, altro), in modo che siano visibili nel modo corretto all'interno dei campi testo del programma. NB: questa funzione viene usata anche, solo quando TRANSLATE-TO-ANSI = 1, per mostrare i messaggi a video in modo corretto (chiamata in AREAMSG) La conversione attualmente viene effettuata, quando è impostato il valore environment "TRANSLATE-TO-ANSI 1", sui seguenti caratteri:
| Carattere | Valore importato | Valore convertito |
|---|---|---|
| à | E0 | 85 |
| è | E8 | 8A |
| é | E9 | 82 |
| ì | EC | 8D |
| ò | F2 | 95 |
| ù | F9 | 97 |
| ° | B0 | F8 |
| β | DF | E1 |
| ӧ | F6 | 94 |
| À | C0 | B7 |
| È | C8 | D4 |
| Ì | CC | DE |
| Ò | D2 | E3 |
| Ù | D9 | EB |
24-07-2017 La conversione attualmente viene effettuata, quando è impostato il valore environment "TRANSLATE-TO-ANSI 0", sui seguenti caratteri: (L'operazione inversa alla precedente)
| Carattere | Valore importato | Valore convertito |
|---|---|---|
| à | 85 | E0 |
| è | 8A | E8 |
| é | 82 | E9 |
| ì | 8D | EC |
| ò | 95 | F2 |
| ù | 97 | F9 |
| ° | F8 | B0 |
Conversione "0A' In certi casi (compilazione campi testo da Areagate/Scheduler) il comando "A capo" contiene solo "0A". In questo caso dovremo aggiungere "0D" in modo che venga riconosciuto in modo corretto dal gestionale. Quindi verrà effettuata la sostituzione di "0A" in "0D0A" solo quando non è già preceduto da "0D". A questo scopo verrà invocata la funzione "REPLACE" con opportuni parametri
Operazione: CONV-TESTO-X-ESPORT¶
Descrizione Questa operazione potrebbe essere necessaria prima di esportare un testo da una tabella interna la gestionale ad una fonte dati esterna, L'operazione converte i caratteri speciali (lettere accentate, e se necessario, altro), in modo che siano visibili nel modo corretto all'interno della fonte dati esterna.
TRANSLATE-TO-ANSI = 1 La conversione attualmente viene effettuata, quando è impostato il valore environment "TRANSLATE-TO-ANSI 1", sui seguenti caratteri:
| Carattere | Valore da esportare | Valore esportato |
|---|---|---|
| à | 85 | E0 |
| è | 8A | E8 |
| é | 82 | E9 |
| ì | 8D | EC |
| ‘ | 91 | 27 |
| ’ | 92 | 27 |
| ò | 95 | F2 |
| ù | 97 | F9 |
| TAB | 09 | 20 (spazio) |
| ° | F8 | B0 |
| β | E1 | DF |
| ӧ | 94 | F6 |
| À | B7 | C0 |
| È | D4 | C8 |
| Ì | DE | CC |
| Ò | E3 | D2 |
| Ù | EB | D9 |
Inoltre verrà eseguito anche un trattamento del carattere "\": se trovato sarà convertito nel carattere ricevuto in input su GESSTR-BACKSLASH.
TRANSLATE-TO-ANSI = 0 La conversione attualmente viene effettuata, quando è impostato il valore environment "TRANSLATE-TO-ANSI 0", sui seguenti caratteri:
| Carattere | Valore da esportare | Valore esportato |
|---|---|---|
| ‘ | 91 | 27 |
| ’ | 92 | 27 |
| 93 | 22 | |
| 94 | 22 | |
| 99 | 32 (" ") |
Chiamata standard
| Tipo | Dato | Contenuto |
|---|---|---|
| INPUT | GESSTR-OPE | "CONV-TESTO-IMPORTATO" |
| GESSTR-NOTE | Contiene il testo da convertire | |
| GESSTR-LEN-NOTE | Lunghezza del campo di testo da analizzare | |
| GESSTR-BACKSLASH | Indicare il valore relativo al carattere "\" | |
| OUTPUT | GESSTR-NOTE | Campo note convertito |
| GESSTR-LEN-NOTE | Lunghezza del campo note convertito |
Operazione: CONV-PER-STAMPA¶
Descrizione Questa operazione potrebbe essere necessaria per stampare correttamente un testo in funzione del symbol set utilizzato Poichè il codice binario memorizzato potrebbe variare a seconda della presenza di TRANSLATE-TO-ANSI, la conversione viene fatta se il codice corrispondente di partenza differisce da quello di destinazione; quindi nella seguente tabella a fronte di ciascun carattere viene indicato se la conversione verrà fatta oppure no a seconda della valore di TRANSLATE-TO-ANSI (1/0)
TRANSLATE-TO-ANSI = 1
| Carattere | PC8 |
|---|---|
| à | */85 |
| è | */8A |
| é | */82 |
| ì | */8D |
| ò | */95 |
| ù | */97 |
| ° | A7/A7 |
* Invariato perchè corrisponde all'originale Codice ASCII memorizzato dal runtime in presenza di TRANSLATE-TO-ANSI (1) oppure no (0) (evidenzio in rosso le differenze), e relativo valore nei symbol set previsti NB: * il symbol set e' memorizzato nella configurazione "PRNTSTBOLL"-"EUTA-C022-SYMBOL-*" * Link da cui ricavare informazioni riguardanti i symbol set: * http://www.pclviewer.com/resources/pcl_symbolset.html * http://pclhelp.com/pcl-symbol-sets/ * Programma di test per stampare i caratteri speciali di una certa famiglia: * Scommentare la parte "Test" di COGP41L * Impostare in configurazione il set desiderato
| Carattere | 1 | 0 | PC8 (341) |
Roman8 (277) |
PC-858 (437) |
|---|---|---|---|---|---|
| à | 85 | E0 | 85 | C8 | 85 |
| è | 8A | E8 | 8A | C9 | 8A |
| é | 82 | E9 | 82 | C5 | 82 |
| ì | 8D | EC | 8D | D5 | 8D |
| ò | 95 | F2 | 95 | CA | 95 |
| ù | 97 | F9 | 97 | CB | 97 |
| ° | F8 | B0 | A7 | B3 | F8 |
| # | 23 | 23 | 23 | 23 | 23 |
| @ | 40 | 40 | 40 | 40 | 40 |
| 7C | 7C | 7C | 7C | ||
| £ | 9C | A3 | 9C | non trovato? (BB) | 9C |
| $ | 24 | 24 | 24 | 24 | 24 |
| % | 25 | 25 | 25 | 25 | 25 |
| & | 26 | 26 | 26 | 26 | 26 |
| / | 2F | 2F | 2F | 2F | 2F |
| ( | 28 | 28 | 28 | 28 | 28 |
| ) | 29 | 29 | 29 | 29 | 29 |
| [ | 5B | 5B | 5B | 5B | 5B |
| ] | 5D | 5D | 5D | 5D | 5D |
| { | 7B | 7B | 7B | 7B | 7B |
| } | 7D | 7D | 7D | 7D | 7D |
| € | 5F | 80 | "E" | "E" | D5 |
| ç | 87 | E7 | 87 | B5 | 87 |
| § | F5 | A7 | " " | BD | F5 |
| ø | 9B | F8 | ED | D6 | 9B |
| Ø | 9D | D8 | ED | D2 | 9D |
| µ | E6 | B5 | E6 | F3 | E6 |
| © | B8 | A9 | "C" | "C" | B8 |
Chiamata standard
| Tipo | Dato | Contenuto |
|---|---|---|
| INPUT | GESSTR-OPE | "CONV-PER-STAMPA" |
| GESSTR-NOTE | Contiene il testo da convertire | |
| GESSTR-LEN-NOTE | Lunghezza del campo di testo da analizzare | |
| GESSTR-SYMBOL-SET | Symbol set a cui convertire; valori previsti: NB: accetta anche i valori tra parentesi |
|
| OUTPUT | GESSTR-NOTE | Campo note convertito |
| GESSTR-LEN-NOTE | Lunghezza del campo note convertito |
Operazione: CONV-PER-XML¶
Descrizione Questa operazione viene eseguita per convertire i caratteri memorizzati e visualizzati dal programma in un file XML, allo scopo di non generare errori di parsing. Simile a CONV-PER-WORD, ma verranno aggiunti alcuni caratteri. Poichè il codice binario memorizzato potrebbe variare a seconda della presenza di TRANSLATE-TO-ANSI, la conversione viene fatta se il codice corrispondente di partenza differisce da quello di destinazione; quindi nella seguente tabella a fronte di ciascun carattere viene indicato se la conversione verrà fatta oppure no a seconda della valore di TRANSLATE-TO-ANSI (1/0)
Codice ASCII memorizzato dal runtime in presenza di TRANSLATE-TO-ANSI (1) oppure no (0) (evidenzio in rosso le differenze), e relativo valore trovato su WORD (per il momento testato con font "Calibri")
| Carattere | 1 | 0 | Calibri (default) | Note |
|---|---|---|---|---|
| à | 85 | E0 | E0 | |
| è | 8A | E8 | E8 | |
| é | 82 | E9 | E9 | |
| ì | 8D | EC | EC | |
| ò | 95 | F2 | F2 | |
| ù | 97 | F9 | F9 | |
| ° | F8 | B0 | "D" | |
| # | 23 | 23 | 23 | |
| @ | 40 | 40 | 40 | |
| 7C | 7C | 7C | ||
| £ | 9C | A3 | A3 | |
| $ | 24 | 24 | 24 | |
| % | 25 | 25 | 25 | |
| & | 26 | 26 | 26 | |
| / | 2F | 2F | 2F | |
| ( | 28 | 28 | 28 | |
| ) | 29 | 29 | 29 | |
| [ | 5B | 5B | 5B | |
| ] | 5D | 5D | 5D | |
| { | 7B | 7B | 7B | |
| } | 7D | 7D | 7D | |
| Ø | 9D | 9D | "D" | |
| Ø | 9B | "D" | ||
| ÷ | F6 | F7 | "-" | |
| ¦ | DD | " " | ||
| Ï | D8 | "D" | (*) | |
| ¸ | F7 | "-" | ||
| ¦ | B0 | " " | ||
| ¾ | F3 | "3/4" | Per ora verranno convertiti a " " per motivi di performance | |
| ½ | AB | "1/2" | ||
| µ | B5 |
(*) Questi caratteri vengono convertiti come i due precedenti: presso Idrolux, una merce la cui descrizione conteneva i caratteri "Ø" e "÷" (visto in Notepad++) nel gestionale venivano visti come quelli qui indicati: probabilmente frutto di una importazione merce. Per il momento non analizzo il caso TRANSLATE-TO-ANSI = 0 Inoltre vengono eseguite alcune conversioni generiche, necessarie per risolvere comportamenti anomali di Word:
| Carattere | Diventa | Note |
|---|---|---|
| ^ | ^^ | Il carattere "^" singolo comporta che il tag non venga risolto. |
Chiamata standard
| Tipo | Dato | Contenuto |
|---|---|---|
| INPUT | GESSTR-OPE | "CONV-PER-WORD" |
| GESSTR-NOTE | Contiene il testo da convertire | |
| GESSTR-LEN-NOTE | Lunghezza del campo di testo da analizzare | |
| GESSTR-SYMBOL-SET | Symbol set (nome font) a cui convertire; valori previsti: |
|
| OUTPUT | GESSTR-NOTE | Campo note convertito |
| GESSTR-LEN-NOTE | Lunghezza del campo note convertito |
Operazione: CONV-PER-WORD¶
Descrizione Questa operazione viene eseguita per convertire i caratteri memorizzati e visualizzati dal programma in un file destinato ad essere visualizzato su WORD. Simile a CONV-PER-STAMPA, ma alcuni caratteri diventano diversi. Poichè il codice binario memorizzato potrebbe variare a seconda della presenza di TRANSLATE-TO-ANSI, la conversione viene fatta se il codice corrispondente di partenza differisce da quello di destinazione; quindi nella seguente tabella a fronte di ciascun carattere viene indicato se la conversione verrà fatta oppure no a seconda della valore di TRANSLATE-TO-ANSI (1/0)
Codice ASCII memorizzato dal runtime in presenza di TRANSLATE-TO-ANSI (1) oppure no (0) (evidenzio in rosso le differenze), e relativo valore trovato su WORD (per il momento testato con font "Calibri")
| Carattere | 1 | 0 | Calibri (default) |
|---|---|---|---|
| à | 85 | E0 | E0 |
| è | 8A | E8 | E8 |
| é | 82 | E9 | E9 |
| ì | 8D | EC | EC |
| ò | 95 | F2 | F2 |
| ù | 97 | F9 | F9 |
| ° | F8 | B0 | B0 |
| # | 23 | 23 | 23 |
| @ | 40 | 40 | 40 |
| 7C | 7C | ||
| £ | 9C | A3 | A3 |
| $ | 24 | 24 | 24 |
| % | 25 | 25 | 25 |
| & | 26 | 26 | 26 |
| / | 2F | 2F | 2F |
| ( | 28 | 28 | 28 |
| ) | 29 | 29 | 29 |
| [ | 5B | 5B | 5B |
| ] | 5D | 5D | 5D |
| { | 7B | 7B | 7B |
| } | 7D | 7D | 7D |
Inoltre vengono eseguite alcune conversioni generiche, necessarie per risolvere comportamenti anomali di Word:
| Carattere | Diventa | Note |
|---|---|---|
| ^ | ^^ | Il carattere "^" singolo comporta che il tag non venga risolto. |
Chiamata standard
| Tipo | Dato | Contenuto |
|---|---|---|
| INPUT | GESSTR-OPE | "CONV-PER-WORD" |
| GESSTR-NOTE | Contiene il testo da convertire | |
| GESSTR-LEN-NOTE | Lunghezza del campo di testo da analizzare | |
| GESSTR-SYMBOL-SET | Symbol set (nome font) a cui convertire; valori previsti: |
|
| OUTPUT | GESSTR-NOTE | Campo note convertito |
| GESSTR-LEN-NOTE | Lunghezza del campo note convertito |
Operazione: FIND¶
Descrizione Questa operazione esegue la scansione di GESSTR-NOTE, e restituisce esito positivo se la stringa GESSTR-SOST-DA è presente all'interno del campo note. La stringa cercata deve essere significativa (non cerca un campo vuoto) Per il momento la riga
Chiamata standard
| Tipo | Dato | Contenuto |
|---|---|---|
| INPUT | GESSTR-OPE | "FIND" |
| GESSTR-NOTE | Contiene il testo su cui effettuare la ricerca | |
| GESSTR-LEN-NOTE | Lunghezza del campo di testo da analizzare | |
| GESSTR-SOST-DA | Stringa da cercare | |
| GESSTR-CASE-SENSITIVE | Modalità di ricerca: default |
|
| OUTPUT | GESSTR-ESITO | Qui viene restituito "S" se la stringa cercata è stata trovata |
| GESSTR-TARGET-POS | Posizione del primo carattere del testo cercato |
Operazione: IS-NUMERIC¶
Descrizione Questa operazione permette di riconoscere se una determinata string può essere considerata numerica. Questo sarà vero se la string contiene, oltre a numeri, solo i caratteri di separazione di migliaia, il punto decimale, e l'eventuale segno; Caratteri consentiti: * "." * "," * "-" * "+"
Chiamata standard
| Tipo | Dato | Contenuto |
|---|---|---|
| INPUT | GESSTR-OPE | "IS-NUMERIC" |
| GESSTR-NOTE | Contiene la string da controllare | |
| GESSTR-LEN-NOTE | Lunghezza del campo da analizzare | |
| OUTPUT | GESSTR-ESITO | Restituirà: |
call "GESSTR" using stringhe util-gesstr gesstr-note
Operazione: MISURA¶
Descrizione Ricevo in input una descrizione e una eventuale lunghezza iniziale. Misuro la lughezza della descrizione (tutti caratteri significativi prima degli ' ') e restituisco il risultato in GESSTR-LEN-NOTE La lunghezza viene ottenuta cercando il primo carattere a dx diverso da GESSTR-CHAR (default " ") Esempio
| GESSTR-NOTE | I:GESSTR-LEN-NOTE | O:GESSTR-LEN-NOTE |
|---|---|---|
| " ROSSI MARIO" | 40 | 13 |
| " ROSSI MARIO" | 40 | 17 |
| " ROSSI MARIO" | 15 | 7 |
Chiamata standard
| Tipo | Dato | Contenuto |
|---|---|---|
| INPUT | GESSTR-OPE | "MISURA" |
| GESSTR-NOTE | Testo da misurare | |
| GESSTR-LEN-NOTE | Lunghezza del testo passato in input | |
| GESSTR-CHAR | Il carattere su cui misurare | |
| OUTPUT | GESSTR-LEN-NOTE | misurato |
Parametri richiesti call "GESSTR" using stringhe util-gesstr gesstr-note
Operazione: REPLACE¶
Descrizione Questa operazione esegue la scansione di GESSTR-NOTE, e sostituisce la stringa GESSTR-SOST-DA con GESSTR-SOST-A La sostituzione avverrà per tutte le occorrenze trovate.
Chiamata standard
| Tipo | Dato | Contenuto |
|---|---|---|
| INPUT | GESSTR-OPE | "REPLACE" |
| GESSTR-NOTE | Contiene il testo da convertire | |
| GESSTR-LEN-NOTE | Lunghezza del campo di testo da analizzare | |
| GESSTR-SOST-DA | Stringa cercata | |
| GESSTR-SOST-A | Stringa che sostituira' la stringa cercata | |
| GESSTR-SOST-ESCLUDI-SX | Carattere che impedisce la sostituzione | |
| OUTPUT | GESSTR-NOTE | Campo note convertito |
| GESSTR-LEN-NOTE | Lunghezza del campo note convertito | |
| GESSTR-REPLACE-DONE | La REPLACE ha fatto qualche sostiutuzione? (S/N) serve ad indicare se il testo da sostituire è stato trovato o no |
call "GESSTR" using stringhe util-gesstr gesstr-note
Operazione: RIMUOVI-DELIMITATO¶
Descrizione Questa operazione esegue la scansione di GESSTR-NOTE, e rimuove il contenuto compreso tra GESSTR-SOST-DA e GESSTR-SOST-A La sostituzione avverrà per tutte le occorrenze trovate. Attenzione * I delimitatori devono essere presenti entrambi * I delimitatori devono essere diversi * La sostituzione avviene solo quando sono presenti entrambi i delimitatori nell'ordine corretto Esempio Se viene passato: GESSTR-NOTE="Inizio note <##testo da rimuovere##> Fine note" GESSTR-SOST-DA = "<##" GESSTR-SOST-A = "##>" Il testo risultante sarà: "Inizio note Fine note" Chiamata standard
| Tipo | Dato | Contenuto |
|---|---|---|
| INPUT | GESSTR-OPE | "RIMUOVI-DELIMITATO" |
| GESSTR-NOTE | Contiene il testo da controllare | |
| GESSTR-LEN-NOTE | Lunghezza del campo di testo da analizzare | |
| GESSTR-SOST-DA | Delimitatore iniziale | |
| GESSTR-SOST-A | Delimitatore finale | |
| OUTPUT | GESSTR-NOTE | Campo note convertito |
| GESSTR-LEN-NOTE | Lunghezza del campo note convertito | |
| GESSTR-REPLACE-DONE | L'operazione ha effettuato una rimozione? (S/N) |
call "GESSTR" using stringhe util-gesstr gesstr-note
Operazione: SOSTITUISCI-CARET¶
Descrizione Operazione molto specifica creata in attesa di creare una operazione "SOSTITUISCI" generica, che però dovrebbe usare le espressioni regolari per poter esaminare situazioni come questa. Questa operazione sostituisce "^" con "^^", purchè non sia già presente doppio; quindi: * "^" -> "^^" * "^^" -> "^^" La sostituzione avverrà per tutte le occorrenze del carattere in GESSTR-NOTE Questa operazione è necessaria in ambito passaggio dati su WORD, altrimenti non risolve i tag.
Chiamata standard
| Tipo | Dato | Contenuto |
|---|---|---|
| INPUT | GESSTR-OPE | "SOSTITUISCI-CARET" |
| GESSTR-NOTE | Contiene il testo da convertire | |
| GESSTR-LEN-NOTE | Lunghezza del campo di testo da analizzare | |
| OUTPUT | GESSTR-NOTE | Campo note convertito |
| GESSTR-LEN-NOTE | Lunghezza del campo note convertito |
Operazione: TRIM-LEFT¶
Descrizione Ricevo in input una descrizione e una eventuale lunghezza. Restituisco la descrizione trimmata a "sx" del carattere contenuto in GESSTR-CHAR (il primo carattere) Esempio
| GESSTR-NOTE | GESSTR-CHAR | GESSTR-NOTE risultante |
|---|---|---|
| " ROSSI MARIO" | " " | "ROSSI MARIO" |
| "0000001234,000" | "0" | "1234,000" |
Chiamata standard
| Tipo | Dato | Contenuto |
|---|---|---|
| INPUT | GESSTR-OPE | "TRIM-LEFT" |
| GESSTR-NOTE | Testo da trimmare | |
| GESSTR-LEN-NOTE | Lunghezza del testo passato in input | |
| GESSTR-CHAR | Carattere da trimmare. Se vuoto è " " | |
| OUTPUT | GESSTR-NOTE | Testo trimmato |
Parametri richiesti call "GESSTR" using stringhe util-gesstr gesstr-note
Operazione: TRIM-SPACES¶
Descrizione Ricevo in input una descrizione e una eventuale lunghezza. Restituisco la descrizione eliminando tutti gli spazi consecutivi interni, limitando gli spazi ad 1. Viene anche effettuato il trim sugli spazi iniziali. Esempio
| GESSTR-NOTE | GESSTR-NOTE risultante |
|---|---|
| " ROSSI MARIO" | "ROSSI MARIO" |
| "Dimensione: 1000,00 x 500,00" | "Dimensione: 1000,00 x 500,00" |
Chiamata standard
| Tipo | Dato | Contenuto |
|---|---|---|
| INPUT | GESSTR-OPE | "TRIM-SPACES" |
| GESSTR-NOTE | Testo da trimmare | |
| GESSTR-LEN-NOTE | Lunghezza del testo passato in input | |
| OUTPUT | GESSTR-NOTE | Testo trimmato |
Operazione: TRONCA-DES-PAROLA¶
Descrizione Ricevo in input una descrizione e una lunghezza. Restituisco la descrizione troncata alla lunghezza richiesta, ma togliendo l'eventuale parola mozzata. Esempio Ricevo in input la stringa "TESTO DI PROVA", e la lunghezza di 12. Il troncamento standard restituirebbe: "TESTO DI PRO" Il troncamento con questa funzione invece restituisce "TESTO DI" e lunghezza = 8 Chiamata standard
| Tipo | Dato | Contenuto |
|---|---|---|
| INPUT | GESSTR-OPE | "TRONCA-DES-PAROLA" |
| GESSTR-NOTE | Testo da troncare | |
| GESSTR-LEN-NOTE | Lunghezza a cui troncare | |
| OUTPUT | GESSTR-NOTE | Testo troncato |
| GESSTR-LEN-NOTE | Lunghezza del testo troncato |
Operazione: ESTRAI-BASENAME¶
Descrizione Ricevo in input un testo contenente il percorso completo di un file, o un nome di file senza percorso. Restituisco il "basename" (il nome del file senza estensione). Esempio Ricevo in input la stringa "/server/percorso1/percorso2/nomefile.arc'. La funzione restituisce "nomefile". Ricevo in input la stringa "nomefile.arc'. La funzione restituisce "nomefile". NB: al momento la funzione lavora indipendentemente dal tipo percorso, perche' esamina la presenza di "/" e "\" contemporaneamente. Chiamata standard
| Tipo | Dato | Contenuto |
|---|---|---|
| INPUT | GESSTR-OPE | "ESTRAI-BASENAME" |
| GESSTR-LEN-NOTE | Lunghezza del testo passato in input | |
| OUTPUT | GESSTR-NOTE | Basename trovato |
| GESSTR-LEN-NOTE | Lunghezza del basename trovato |
Operazione: ESTRAI-ESTENSIONE¶
Descrizione Ricevo in input un testo contenente il percorso completo di un file, o un nome di file senza percorso. Restituisco l'estensione del file. La routine dà per scontato che l'estensione sia singola (non contempla ad esempio "nomefile.aaa.bbb": in questo caso restituisce "bbb". Esempio Ricevo in input la stringa "/server/percorso1/percorso2/nomefile.arc'. La funzione restituisce "arc". Ricevo in input la stringa "nomefile.arc'. La funzione restituisce "arc". Chiamata standard
| Tipo | Dato | Contenuto |
|---|---|---|
| INPUT | GESSTR-OPE | "ESTRAI-ESTENSIONE" |
| GESSTR-NOTE | Nome file su cui effettuare la ricerca | |
| GESSTR-LEN-NOTE | Lunghezza del testo passato in input | |
| OUTPUT | GESSTR-NOTE | Estensione trovata |
| GESSTR-LEN-NOTE | Lunghezza dell'estensione trovata |
Operazione: ESTRAI-PATH¶
Descrizione Ricevo in input un testo contenente il percorso completo di un file. Restituisco il percorso del file (quindi viene tolto il nome del file e l'ultima barra) Esempio Ricevo in input la stringa "/server/percorso1/percorso2/nomefile.arc'. La funzione restituisce "/server/percorso1/percorso2". NB: al momento la funzione lavora indipendentemente dal tipo percorso, perche' esamina la presenza di "/" e "\" contemporaneamente. Chiamata standard
| Tipo | Dato | Contenuto |
|---|---|---|
| INPUT | GESSTR-OPE | "ESTRAI-PATH" |
| GESSTR-LEN-NOTE | Lunghezza del testo passato in input | |
| OUTPUT | GESSTR-NOTE | Percorso trovato |
| GESSTR-LEN-NOTE | Lunghezza del percorso trovato |
Operazione: ESTRAI-NOMEFILE¶
Descrizione Ricevo in input un testo contenente il percorso completo di un file. Restituisco il nome file al netto del path in cui è posizionato. Esempio Ricevo in input la stringa "/server/percorso1/percorso2/nomefile.arc'. La funzione restituisce "nomefile.arc". NB: al momento la funzione lavora indipendentemente dal tipo percorso, perche' esamina la presenza di "/" e "\" contemporaneamente. Chiamata standard
| Tipo | Dato | Contenuto |
|---|---|---|
| INPUT | GESSTR-OPE | "ESTRAI-NOMEFILE" |
| GESSTR-LEN-NOTE | Lunghezza del testo passato in input | |
| OUTPUT | GESSTR-NOTE | Nome file trovato |
| GESSTR-LEN-NOTE | Lunghezza del nome file trovato |
Estratto da documentazione interna ClickUp