WinPulisci edizione 1.31
|
Sostituzione modulare di stringhe
in file di testo
|
Guida all'uso del programma |
IMPORTANTE
Si dà per scontato che, prima di iniziare a servirsi del programma
WinPulisci, ogni utilizzatore prenda visione della
licenza
per la distribuzione e l'uso ed accetti e rispetti integralmente le norme in essa contenute. Chi è in disaccordo anche con una sola delle condizioni deve rinunciare a qualunque impiego di questo software.
1.0. Premessa
Questo documento costituisce la guida di riferimento per il programma
WinPulisci. Coloro che già conoscono il programma
PULISCI per MS-DOS possono iniziare leggendo il
[¶14] che compendia sinteticamente le variazioni apportate nella versione per Windows.
Malgrado sussistano varie analogie, occorre comunque consultare il resto del manuale per informazioni particolareggiate sulle nuove caratteristiche. Infatti, al pari della versione MS-DOS, il programma
WinPulisci può essere usato efficacemente soltanto conoscendo in modo approfondito i principi che lo regolano.
Per possibili problemi o malfunzionamenti v.
[¶15.3].
Le tabelle allegate al programma vanno intese come esempi elementari che forniscono suggerimenti sul modo di sfruttare le caratteristiche di WinPulisci e non come applicazioni pronte all'uso [¶13].
Gli utilizzatori sono invitati a fare buon uso di questo manuale, la cui stesura ha richiesto un impegno rilevante per fornire uno strumento completo, particolareggiato e il più possibile chiaro e corretto. L'autore di WinPulisci non è disponibile né a ripetere le spiegazioni già esposte nel manuale né a fornire assistenza nella redazione delle tabelle.
1.1. Introduzione
Lo scopo del programma
WinPulisci è agevolare la sostituzione in qualunque file di testo di determinate stringhe di caratteri con altre opportunamente predisposte. La tecnica modulare di definizione delle corrispondenze consente una vasta gamma di conversioni, grazie anche agli accorgimenti disponibili, fra i quali le direttive che si possono specificare singolarmente per ciascuna corrispondenza.
L'uso di questo programma risulta vantaggioso quando l'intervento va ripetuto su numerosi file (ad esempio, per correggere gli errori di riconoscimento sistematici che si verificano nei file di puro testo prodotti da un programma OCR).
L'elaborazione può avvenire sia in modo interattivo sia in modo batch, cioè assegnando i parametri al prompt dei comandi o per mezzo di un file batch.
La definizione delle stringhe di caratteri da sostituire e di quelle che devono prendere il loro posto è svolta dalle tabelle di sostituzione, che vanno preparate in anticipo a seconda delle necessità. Il programma è in grado di caricare simultaneamente numerose tabelle: distribuendo le corrispondenze secondo criteri opportuni, si possono ottenere molte combinazioni, rendendo così il procedimento assai flessibile.
Le tabelle sono ordinari file di testo per la cui redazione si devono seguire le regole descritte in [¶7]. Sono fornite a corredo alcune tabelle che presentano le varie possibilità e possono servire da esempio per la preparazione di altre (v. i file contenuti nella sottocartella tab della cartella di lavoro).
Nelle tabelle sono previsti costrutti per la definizione di corrispondenze multiple: il carattere jolly che varia entro insiemi di caratteri assegnati dall'utilizzatore [¶7.6] e gli array che consentono anche di associare stringhe appartenenti a due o più liste [¶7.11].
Vedere inoltre le corrispondenze speciali [¶8.13].
È previsto l'uso di variabili utente, nel cui valore si possono inserire le variabili predefinite di WinPulisci e le variabili di ambiente di Windows, v. [¶7.9] e [¶7.10].
Si possono elaborare insieme tutti i file di una cartella o i file che corrispondono a una specificazione comprendente caratteri jolly di Windows, includendo eventualmente i file contenuti nelle sottocartelle fino a una profondità prestabilita dall'utilizzatore (elaborazione multipla, [¶4.10]).
Alcune caratteristiche del procedimento di elaborazione.
-
Si può richiedere che la stringa da sostituire coincida esattamente con una parola oppure che si trovi in una posizione particolare entro la parola (direttive P1 P2 ... P6).
-
La sostituzione può essere resa insensibile alle maiuscole/minuscole.
-
Si può confinare la sostituzione all'interno oppure all'esterno di un blocco di testo delimitato da opportune etichette.
-
Si può scegliere se eliminare o conservare gli spazi vuoti che si trovano in testa o in coda ad ogni riga del file da elaborare.
-
Si può reimpaginare il testo in modo che la lunghezza delle righe sia prossima ad un determinato valore.
-
Con la funzione di taglio si può selezionare una parte di file da elaborare basandosi su una stringa iniziale e una stringa finale oppure sul numero di byte.
-
Si può aggiungere un blocco in testa o in coda al file.
-
Il procedimento di sostituzione può essere reso interattivo (per una o più corrispondenze a piacere).
-
La sostituzione può coinvolgere l'intera riga che contiene una data stringa.
-
È disponibile la funzione di traslitterazione (direttiva T).
-
È prevista la possibilità di eseguire sostituzioni mediante espressioni regolari (direttiva E).
Quando si termina una sessione, il programma memorizza i parametri di funzionamento in un apposito file di inizializzazione, in modo da riproporre le ultime condizioni al successivo utilizzo
[¶11].
Sono infine previste varie opzioni utilizzabili dal prompt dei comandi
[¶10].
Torna al sommario.
2. Download, installazione, avvio del programma
Il programma
WinPulisci può essere usato, copiato e distribuito gratuitamente, purché vengano accettate e rispettate rigorosamente tutte le condizioni specificate nella
licenza.
Per installare il programma svolgere le operazioni indicate di seguito.
-
Aprire con il browser la pagina Web del programma
www.artico.name/soft/wpulisci/
e da essa scaricare
l'archivio di installazione, detto anche file di setup.
Nota.
Una volta installato il programma, il link suddetto è raggiungibile direttamente premendo Alt+F11. Ciò permette di verificare facilmente se è disponibile una nuova versione.
-
Avviare l'installazione con un doppio click o Invio sul file di setup.
-
Leggere e accettare la licenza (doppio click su Accetta).
-
Scegliere la cartella di installazione desiderata, dove verranno posti i file del programma, e premere Installa.
-
Al termine si apre una finestra informativa che riassume le novità del programma e presenta alcuni link per consultare la documentazione.
Per concludere l'installazione si preme Alt+F4.
Importante.
Se si altera l'impostazione predefinita per la cartella di installazione, il setup richiede che sia specificata esplicitamente la cartella contenitore per i file del programma.
Scegliere una cartella nuova oppure la cartella di una precedente installazione di WinPulisci e in ogni caso evitare le cartelle contenenti altro materiale, ad esempio C:\Programmi o D:\, perché l'intero contenuto dell'archivio verrebbe decompresso direttamente in quella posizione, mischiando i file del programma con quelli già esistenti.
Generalmente il programma va avviato con l'icona
WPulisci presente sul desktop al termine dell'installazione
[¶2.3].
2.1. Cartella di lavoro
In questo manuale sono usati i termini
cartella di installazione e
cartella di lavoro.
La cartella di installazione o cartella del programma è quella che contiene il file eseguibile, il manuale e la licenza.
La cartella di lavoro ospita vari file necessari per il funzionamento e alcune sottocartelle per i file originali, i file elaborati e le tabelle.
La sua collocazione è diversa a seconda del tipo di installazione [¶2.2].
L'ambiente di lavoro prevede tre cartelle che, per impostazione predefinita, sono contenute nella cartella di lavoro ma che possono essere impostate diversamente (mediante opportune opzioni da avvio o con chiavi del file di inizializzazione).
- Orig\
-
cartella origine predefinita, dove l'utilizzatore colloca i file origine, cioè quelli da elaborare
(opzione /O e chiave KDefOrigDir).
- Dest\
-
cartella destinazione predefinita, dove il programma pone i file risultanti dall'elaborazione
(opzione /D e chiave KDefDestDir).
- tab\
-
cartella predefinita delle tabelle, dove vanno poste tutte le tabelle contenenti le corrispondenze richieste per l'elaborazione
(opzione /P e chiave KTabDir).
Nota.
Il programma riconosce l'abbreviazione
^\ per indicare la cartella di lavoro nei percorsi di file e cartelle.
Nell'immissione da prompt occorre indicare
^^\.
2.2. Installazione ordinaria e installazione portable
La versione minima del sistema operativo richiesta per installare il programma
WinPulisci è Windows XP con
Service Pack 3.
Nella
cartella di lavoro si trovano tutti i file necessari al funzionamento (tabelle, file di inizializzazione, resoconti, file temporanei).
In particolare, in questa cartella si trovano le tre cartelle predefinite
tab,
orig e
dest.
La posizione della cartella di lavoro dipende dal modo in cui il programma viene installato durante l'esecuzione del setup.
- Installazione ordinaria
-
La cartella di installazione è contenuta nella cartella dei programmi a 32 bit.
La cartella di lavoro ha nome prefissato WinPulisci e si trova nella cartella dei file locali dell'utente attuale.
- Installazione portable
-
La cartella di installazione non è contenuta nella cartella dei programmi.
In questo caso, la cartella di installazione e la cartella di lavoro coincidono, cioè la stessa cartella ospita sia il programma sia tutti i file di servizio.
Nota.
Rientra in questo caso anche la cartella WinPulisci contenuta nei programmi di Windows XP.
La seconda situazione consente che il programma
WinPulisci possa essere ospitato per intero in un'unità scelta a piacere, ad esempio in un'unità esterna
USB, rimanendo così indipendente dalla particolare versione del sistema operativo
[¶2.3].
Se si riscontrano inconvenienti con altre versioni di Windows o con emulazioni di Windows in ambienti diversi, si raccomanda di verificare per prima cosa le proprietà dell'icona sul desktop, adattando il contenuto dei campi alla situazione reale. In ogni caso è possibile cancellare il collegamento prodotto dall'installazione e sostituirlo con uno nuovo, ottenuto mediante le apposite funzioni del sistema operativo.
Non è necessario disattivare la protezione UAC (User Access Control) e, per motivi di sicurezza, non è consigliabile farlo.
2.3. Avvio del programma dal desktop
Normalmente il setup di
WinPulisci colloca sul desktop l'icona
WPulisci per avviare il programma.
Una situazione particolare si verifica se la cartella scelta durante l'installazione si trova in un'unità removibile. In questa circostanza il setup colloca sul desktop uno script di nome WPulisci.vbs che sostituisce l'ordinario collegamento. Infatti, se dopo un riavvio il sistema modificasse la lettera abbinata all'unità, il normale collegamento non funzionerebbe, mentre lo script è in grado di individuare il cambiamento.
In ogni caso una copia dello script WPulisci.vbs si trova nella sottocartella demo\ perché viene utilizzato dai file batch dimostrativi presenti nella cartella stessa [¶13.1].
. Questa cartella può essere spostata in qualunque altra posizione, ma lo script non deve essere separato dai file batch.
2.3.1. Avvio dal menù contestuale
Il programma
WinPulisci può essere avviato dal menù contestuale (richiamabile con il tasto applicazioni oppure con
Shift+F10).
Dopo aver selezionato un elemento in
Esplora file, utilizzare la voce
Elabora con WinPulisci del sottomenù
Invia a.
Se l'elemento è una cartella, l'elaborazione riguarderà tutti i file contenuti in essa e nelle sue sottocartelle fino al livello prestabilito per l'elaborazione multipla
[¶4.10].
Avviando il programma in questo modo, viene mostrata la finestra interattiva con il nome del file o della cartella già presenti nei campi File Orig e Cart Orig. Prima di premere F2 per procedere, è possibile selezionare le tabelle desiderate o impostare altri parametri.
2.4. Archivio di setup e regolarità dell'installazione
Il file di setup di
WinPulisci è un archivio generato con il software di compressione dati
WinRAR.
È indispensabile che l'installazione avvenga correttamente nel modo illustrato più sopra.
Le operazioni indicate di seguito devono essere evitate perché danno luogo a installazioni irregolari.
- Decompressione dell'archivio di setup con un software di archiviazione-.
- Copia della cartella del programma da un PC a un altro PC.
- Copia della cartella del programma da un'unità removibile a un'unità fissa, qualora l'installazione sia stata effettuata in un diverso PC.
In caso di installazione irregolare potrebbero verificarsi malfunzionamenti anche gravi e perciò è possibile avviare il programma soltanto in
modo ristretto, modo nel quale non è consentita l'elaborazione dei file. Notare che per accedere al modo ristretto occorre digitare l'username dell'utente attuale.
Si raccomanda di non cancellare il file di inizializzazione e di non alterare la chiave di sblocco perché in mancanza di questi due elementi l'unica possibilità di utilizzare il programma in modo regolare sarebbe di eseguire una nuova installazione. Per informazioni sulla chiave di sblocco v. [¶15.2].
2.5. Utilizzo da parte di diversi utenti
In merito all'utilizzo multiutente,
WinPulisci si comporta in modi diversi a seconda del sistema operativo. Notare però che l'installazione in un'unità removibile
USB è considerata regolare anche se l'unità viene collegata a un diverso PC, indipendentemente dal sistema operativo in cui è avvenuta l'installazione e di quello in cui viene utilizzato il programma.
- Windows XP
-
Normalmente il programma deve essere avviato dall'utente che ha effettuato l'installazione. Affinché WinPulisci possa essere usato da più utenti, occorre operare in uno dei modi indicati di seguito.
- Effettuare l'installazione in una cartella distinta per ciascun utente e rinominare opportunamente l'icona che ogni volta viene posta sul desktop.
- Installare il programma una sola volta in un'unità removibile.
- Windows 7 e versioni successive
-
Sono possibili tre alternative.
-
Effettuare l'installazione per ciascun utente utilizzando sempre la cartella proposta dal setup (non occorre rinominare l'icona sul desktop).
- Effettuare l'installazione in cartelle distinte, una per ciascun utente, che si trovino in un disco fisso ma che non siano contenute nella cartella dei programmi. In questo caso occorre rinominare opportunamente l'icona che ogni volta viene posta sul desktop.
- Installare il programma una sola volta in un'unità removibile.
2.6. Impostazione del browser
WinPulisci utilizza un browser di pagine Web per visualizzare i testi di aiuto e per accedere a Internet.
A partire dalla versione 1.20, è possibile specificare il browser da abbinare a
WinPulisci, scegliendolo fra quelli installati nel sistema.
I browser supportati dipendono dalla versione di Windows e ad ognuno è attribuita una specifica sigla (v. il prospetto più avanti).
L'abbinamento del browser preferito si compie con il file di inizializzazione
WPulisci.ini assegnando alla chiave
KWebBrowser la sigla propria del browser desiderato come nell'esempio seguente:
KWebBrowser = CHROME
BROWSER |
SIGLA |
SISTEMA MINIMO |
Predefinito |
PREDEF |
WINDOWS XP SP3 |
Internet Explorer |
IE |
WINDOWS XP SP3 |
Mozilla Firefox |
FIREFOX |
WINDOWS XP SP3 |
Google Chrome |
CHROME |
WINDOWS 7 |
Opera |
OPERA |
WINDOWS 7 |
Microsoft Edge |
EDGE |
WINDOWS 10 |
Osservazioni.
-
Ora il browser Microsoft Edge in Windows 10 è selezionabile come gli altri browser (non è più necessario che esso sia impostato come browser predefinito).
-
È possibile utilizzare un browser qualunque, anche se non è compreso nella tabella precedente. Ad esempio, se Safari è installato nel PC, basta impostarlo come browser predefinito del sistema e in WinPulisci selezionare la voce predefinito.
2.7. Contenuto nel setup
I file presenti nell'archivio di setup sono:
-
WPulisci.exe, programma;
-
licenza.htm, licenza per la distribuzione e l'uso del programma;
-
WPulisci.htm, manuale del programma;
-
WPulisci.ini, file di inizializzazione;
-
file_id.diz, file di testo con descrizione sintetica dell'archivio.
-
Varie tabelle e file dimostrativi nelle sottocartelle Tab\ e Demo\.
2.8. Disinstallazione del programma
Il programma
WinPulisci non genera voci in
Installazione applicazioni del
Pannello di controllo.
La disinstallazione consiste semplicemente nel cancellare gli elementi indicati di seguito:
- la cartella del programma scelta durante l'installazione (WinPulisci nella cartella dei programmi a 32 bit C:\Programmi (x86), o la diversa cartella prescelta),
- in ambiente Windows 7 o successivo la cartella di lavoro [¶2.1],
- l'icona di avvio sul desktop (a seconda dei casi, il collegamento WPulisci o lo script WPulisci.vbs),
- la voce Elabora con WinPulisci.bat nel menù contestuale Invia a.
Torna al sommario.
3. Il modo interattivo
Il modo normale di funzionamento è quello interattivo (per il modo batch v.
[¶5]).
La schermata che si presenta all'avvio è detta finestra principale. Ci sono quattro campi, in altrettante righe, destinati all'immissione dei dati. I più importanti sono i primi due, etichettati rispettivamente File Orig e
File Dest, che servono per indicare il nome del file originale e di quello prodotto dopo l'elaborazione.
Quest'ultimo è detto file destinazione e i due nomi possono coincidere, ammesso che si accetti di perdere il file originale. Nel campo File Dest si può indicare semplicemente il nome di una cartella esistente e in tal caso il file destinazione conserva il nome del file originale, ma viene collocato nella cartella indicata.
I due campi rimanenti servono per mostrare ed eventualmente impostare le cartelle origine e destinazione.
- Cart Orig (cartella origine)
-
Specifica la posizione corrente da cui il programma preleva i file originali da elaborare: se essa è una sottocartella della cartella di lavoro, viene mostrato il percorso relativo, altrimenti viene mostrato il percorso completo.
Può differire dalla cartella origine predefinita [¶2.1].
- Cart Dest (cartella destinazione)
-
Specifica la posizione corrente nella quale il programma colloca i file risultanti al termine dell'elaborazione: se essa è una sottocartella della cartella di lavoro, viene mostrato il percorso relativo, altrimenti viene mostrato il percorso completo.
Può differire dalla cartella destinazione predefinita [¶2.1].
Può coincidere con la cartella origine corrente (scelta non consigliata).
L'impostazione predefinita prevede l'uso di una cartella destinazione distinta dalla cartella origine. Ciò offre fra l'altro il vantaggio di raggruppare insieme tutti i file elaborati. Notare che, non appena immesso il nome del file origine nel primo campo, il programma propone automaticamente nel secondo campo il nome del file destinazione e adatta in conformità i percorsi delle cartelle nel terzo e nel quarto campo.
In mancanza di indicazioni contrarie, le due cartelle origine e destinazione predefinite [¶2.1]
sono assunte come cartelle di uso corrente. Per la loro impostazione v. le opzioni /O e /D [¶10],
nonché le chiavi KDefOrigDir e KDefDestDir del file di inizializzazione [¶11].
Il trattamento del file origine viene avviato premendo F2 oppure Ctrl+Invio. Normalmente, prima di avviare l'elaborazione, si deve controllare quali sono le tabelle selezionate, entrando con F3 nell'apposita schermata di selezione delle tabelle.
Lo stato dei parametri di funzionamento [¶4.7])
è mostrato nella riga di stato che si trova nella parte inferiore della finestra principale e può essere modificato agendo sugli appositi tasti [¶3.1].
Per evitare cancellazioni indesiderate il programma prevede due precauzioni.
-
Per sovrascrivere il file destinazione, qualora preesistente, rispondere con S alla domanda che in questo caso viene posta alla fine dell'elaborazione. Se si batte N viene aggiunto al nome del file destinazione un numero progressivo racchiuso fra parentesi tonde.
-
Le cartelle che sono considerate critiche non possono essere utilizzate come cartelle destinazione [¶3.2].
Si possono svolgere inoltre altre operazioni preliminari quali l'esplorazione delle unità disco
[¶4.2], l'aggiunta di una nuova tabella
[¶4.8] e l'apertura con l'editor del file origine
[¶4.5].
Alla conclusione compare sullo schermo un rapporto sintetico sul lavoro svolto. Un resoconto particolareggiato viene trascritto nell'apposito file se il parametro Log è impostato a Sì [¶9].
3.1. Elenco dei tasti utilizzabili nella finestra principale
- Esc o Alt+F4
-
Uscita.
- FrecciaGiù/FrecciaSu
-
Campo successivo/precedente. Idem con Tab/Shift+Tab. La pressione è accompagnata da un breve segnale acustico.
- F1
-
Testo di aiuto con elenco comandi e documentazione.
- Ctrl+H
-
Novità del programma.
- Ctrl+C/Ctrl+M
-
Copia/accoda il campo attuale negli appunti di Windows.
- Ctrl+V
-
Incolla nel campo attuale l'ultima riga degli appunti di Windows.
- Shift+F1
-
Apre la licenza del programma.
- Ctrl+F1
-
Sommario delle opzioni disponibili da prompt.
- F2 o Ctrl+Invio
-
Avvia il procedimento di sostituzione.
- Shift+F2 o Alt+L
-
Attiva/disattiva la scrittura dei resoconti.
- F3 o Alt+T
-
Apre la finestra di scelta delle tabelle, nella quale le stesse possono essere attivate o disattivate.
- Shift+F3 o Alt+K
-
Immissione dei quattro parametri di riga.
- F4 o Alt+E
-
Apre una nuova tabella detta extra.
- Shift+F4 o Alt+M
-
Chiude e salva l'attuale tabella extra.
- F5 o Alt+A
-
Attiva/disattiva la funzione Auto (riconoscimento automatico della sequenza di ritorno a capo).
- Shift+F5 o Alt+P
-
Attiva/disattiva la funzione di taglio.
- F6 o Alt+S
-
Attiva/disattiva le segnalazioni acustiche.
- Shift+F6 o Alt+R
-
Attiva/disattiva la reimpaginazione.
- F7 o Alt+C
-
Commutatore a quattro posizioni per impostare il parametro Conserva (conservazione degli spazi a inizio e fine riga).
- Shift+F7 o Alt+Y
-
Attiva/annulla la protezione delle chiavi critiche.
- F8 o Alt+D
-
Esplorazione delle unità disco.
- Shift+F8 o Alt+Z
-
Attiva/annulla la protezione delle cartelle critiche.
- F9 o Alt+G
-
Apre il manuale del programma.
- Shift+F9
-
Apre la finestra di scelta dell'editor.
- F10, Invio o Alt+F
-
Nei campi File origine e File destinazione apre con l'editor il file specificato.
- Shift+F10
-
Apre con l'editor il file di inizializzazione (sono ammesse modifiche nella sezione [CONFIG]).
- F11/F12
-
Riduce/aumenta il volume delle segnalazioni acustiche.
- Shift+F11
-
Apre con l'editor il file resoconto.
- Shift+F12
-
Apre con l'editor il resoconto delle tabelle attive.
- Alt+F1, Alt+F2, Alt+F3
-
Questi comandi possono essere sfruttati dagli utilizzatori non vedenti in quanto replicano le informazioni di stato presenti sullo schermo, cosicché lo screen reader in sintesi vocale vocalizza tali informazioni. I tre tasti si riferiscono rispettivamente alle informazioni riepilogative sulle tabelle, allo stato dei parametri di funzionamento e alla riga con i suggerimenti
[¶4.7], [¶6].
- Alt+F11
-
Permette di scaricare la versione più aggiornata del programma.
- Alt+O
-
Copia nel campo File origine il nome del file destinazione.
- Alt+Q
-
Nasconde o ripristina la riga dei parametri e il riepilogo delle tabelle.
- Alt+W
-
Avvia l'editor senza parametri.
3.2. Cartelle critiche
Una cartella è considerata
critica se contiene file aventi una fra le estensioni
EXE,
COM,
DLL,
OCX,
PIF. Una cartella critica non può essere utilizzata come cartella destinazione quando il parametro
PrDir è posto a
Sì (condizione predefinita). Per cambiare lo stato del parametro
PrDir usare
Shift+F8 o
Alt+Z, dal prompt l'opzione
/Z.
Nota bene.
Indipendentemente dallo stato del parametro PrDir, non è mai consentito utilizzare le seguenti cartelle come cartella destinazione:
- la cartella di Windows o una sua sottocartella;
- la cartella dei programmi di Windows o una sua sottocartella, eccezion fatta in Windows XP per la cartella del programma WinPulisci;
- le cartelle di sistema RECYCLER (cestino) e System Volume Information in qualunque unità.
Nella finestra di esplorazione
[¶4.2] l'accesso alla cartella di Windows e alla cartella dei programmi è consentito quando il parametro
PrDir (protezione delle cartelle critiche) è posto a
No.
Torna al sommario.
4. Operazioni
In questo capitolo sono descritte le operazioni preparatorie alla vera e propria fase di elaborazione, vale a dire l'applicazione delle sostituzioni.
4.1. Scelta e attivazione delle tabelle
Premendo il tasto
F3 nella finestra principale si apre la finestra di scelta delle tabelle. Ogni videata mostra le proprietà di una tabella. Fra le altre informazioni (grandezza in byte, data, eccetera) è mostrato il commento, desunto dalla parte iniziale della tabella: in fase di redazione è importante prevedere una descrizione che aiuti a rammentare il significato delle singole tabelle.
La tabella in esame viene attivata o disattivata premendo Spazio. Se essa è attiva, il suo nome è evidenziato in nero su fondo bianco (reverse) e la comparsa delle informazioni è accompagnata da un segnale acustico particolare.
Sono disponibili vari comandi di movimento e ricerca (v. il prospetto più avanti).
In particolare, si notino i tasti F5 e F6 (o anche - e +) che permettono di portare una tabella indietro o avanti nell'elenco
(l'ordine con cui le tabelle vengono caricate è significativo).
La ricerca di una stringa avviene nei nomi delle tabelle e nelle loro descrizioni. Con F3 si immette una nuova stringa (viene proposta la stringa che è già stata specificata in precedenza), con Ctrl+PgUP e Ctrl+PgDn si cerca la stringa attuale.
Una volta selezionato un certo gruppo di tabelle, esso rimane attivo per tutti i file che si elaborano in seguito, anche in sessioni successive, salvo richiamare nuovamente la finestra di scelta per possibili modifiche.
Premendo Esc si torna alla finestra principale. È anche possibile premere F2 o Ctrl+Invio per avviare direttamente l'elaborazione dalla finestra di scelta delle tabelle, ammesso naturalmente che in precedenza sia già stato specificato un file da elaborare.
Segue l'elenco dei comandi disponibili nella finestra di scelta (quelli contrassegnati con (*) comportano la rilettura delle tabelle e annullano la corrispondenza prompt
e l'array prompt [¶7.7]).
- Esc o Alt+F4
-
Ritorno alla finestra principale.
- F1 o Alt+H
-
Testo di aiuto con elenco comandi e documentazione.
- Ctrl+H
-
Novità del programma.
- Spazio
-
attiva e disattiva la tabella visualizzata (*).
- FrecciaSu
-
Mostra la tabella precedente. Si possono usare anche , (virgola) o < (minore).
- FrecciaGiù
-
Mostra la tabella successiva.. Si possono usare anche . (punto) o > (maggiore).
- PgUp/PgDn
-
Sposta il contatore indietro/avanti di dieci posizioni.
-
Home/End
-
Mostra la prima/ultima tabella dell'elenco.
- Tab/Shift+Tab
-
Mostra la tabella attiva successiva/precedente.
- F2 o Ctrl+Invio
-
Chiude la finestra e avvia il procedimento di sostituzione.
- F3 o Alt+R
-
Ricerca di una stringa nei nomi delle tabelle e nei loro commenti.
- F4
-
Riordina l'elenco mantenendo attive le tabelle selezionate (*).
- Shift+F4
-
Riordina l'elenco e deseleziona tutte le tabelle attive (*).
- F5 o -
-
Scambia la tabella evidenziata con la precedente (*).
- F6 o +
-
Scambia la tabella evidenziata con la successiva (*).
- F7 o Ctrl+PgUp
-
ricerca all'indietro la stringa già impostata con F3.
- F8 o Ctrl+PgDn
-
ricerca in avanti la stringa già impostata con F3.
- F9 o Alt+G
-
Apre il manuale del programma.
- F10, Invio o Alt+F
-
Apre con l'editor la tabella (*).
- F11/F12
-
Riduce/aumenta il volume delle segnalazioni acustiche.
- Lettera A-Z, cifra 0-9
-
Mostra la tabella il cui nome inizia con il carattere premuto.
- Alt+W
-
Avvia l'editor senza parametri.
- Alt+F1, Alt+F2, Alt+F3
-
Questi comandi possono essere sfruttati dagli utilizzatori di screen reader per replicare le informazioni di stato nelle righe a fondo schermo (Alt+F1 è equivalente a BackSpace).
Il resoconto delle tabelle, che viene aggiornato se intervengono variazioni, è consultabile premendo
Shift+F12 nella finestra principale.
Se si specifica una o più tabelle con l'opzione /T [¶10], il programma ignora il precedente stato di selezione memorizzato nel file di inizializzazione e considera attive solo le tabelle nell'ordine in cui sono state indicate nel comando di avvio. Se la sessione è interattiva, la finestra di scelta risulta aggiornata secondo il nuovo stato e questo verrà memorizzato al termine nel file di inizializzazione. Se l'elaborazione è in modo batch, ugualmente non viene considerato il precedente stato di selezione, ma in questo caso il file di inizializzazione non subisce alcuna modifica.
Nota.
Nella finestra di scelta il numero di corrispondenze di una tabella può talvolta risultare impreciso perché qui viene fatta un'analisi rapida che non tiene conto né di incoerenze reciproche fra le direttive né delle corrispondenze espanse in relazione a eventuali array [¶7.11].
4.2 Esplorazione delle unità disco
Il file da elaborare può essere selezionato con l'apposita funzione di esplorazione delle unità disco.
Nella finestra principale premere F8 oppure Alt+D. La prima volta che si usa questo comando si apre la cartella origine predefinita, le volte successive l'ultima cartella consultata. Nell'elenco che compare si può spostare il cursore con vari comandi, come specificato di seguito. Notare il comportamento di Spazio e di Invio in questo contesto.
- Esc o Alt+F4
-
Ritorno alla finestra principale.
- F1 o Alt+H
-
Aiuto contestuale della funzione di esplorazione.
- Ctrl+H
-
Novità del programma.
- Spazio
-
Se l'elemento puntato dal cursore è un file esso viene accettato come file origine, se è una cartella essa diventa la cartella origine corrente. In entrambi i casi si esce dall'esplorazione e si torna alla finestra principale.
- FrecciaGiù/FrecciaSu
-
Sposta il cursore nella riga successiva/precedente. Idem con Tab/Shift+Tab. La pressione è accompagnata da un breve segnale acustico.
- PgUp/PgDn
-
Sposta il cursore su/giù di una videata.
- Home/End
-
Seleziona il primo/ultimo elemento dell'elenco.
- Ctrl+Home/Ctrl+End
-
Sposta il cursore a inizio/fine schermo.
- BackSpace
-
Risale alla directory di livello precedente.
- Ctrl+C/Ctrl+M
-
Copia/accoda la voce attuale negli appunti di Windows.
- F2
-
Apre la cartella origine corrente.
- F3
-
Apre la cartella origine predefinita.
- F4
-
Salta le directory e va al primo file.
- Da F5 a F8
-
Aprono le quattro cartelle memo.
- Da Shift+F5 a Shift+F8
-
La cartella corrente viene memorizzata come una delle quattro cartelle memo.
- F9 o Alt+G
-
Apre il manuale del programma.
- F10 o Invio
-
Se l'elemento puntato dal cursore è un file esso viene aperto, se è una cartella si ottiene la visualizzazione della stessa.
- F11/F12
-
Riduce/aumenta il volume delle segnalazioni acustiche.
- Lettera A-Z, cifra 0-9
-
Portano il cursore su un file o una cartella che iniziano con quel carattere.
- Alt+W
-
Avvia l'editor senza parametri.
I file di testo vengono aperti normalmente con l'editor impostato. Usare la chiave
KExtProc del file di inizializzazione per specificare i tipi di file che si vuole vengano aperti con le applicazioni associate dal sistema.
Le cartelle critiche [¶3.2] non sono elencate quando la loro protezione è attiva [¶4.7.
4.3. Funzione di reimpaginazione
La reimpaginazione, se attivata, viene svolta al termine del procedimento di sostituzione. Essa consiste nel riscrivere il testo con righe di lunghezza vicina all'apposito parametro
lunghezza di riga 4.6.
Inoltre, se il parametro
lunghezza parola a fine riga ha un valore diverso da
0, vengono mandate a capo le parole a fine riga la cui lunghezza non supera tale valore: questo accorgimento può favorire una miglior leggibilità del testo.
La reimpaginazione è attivata quando il parametro
Reimpagina è posto a
Sì [¶4.7]: premere
Shift+F6 o
Alt+R per cambiarne lo stato o avviare il programma con l'opzione
/R [¶10].
La reimpaginazione, se attivata in occasione di un'elaborazione multipla [¶4.10], viene eseguita senza alcuna richiesta di consenso.
4.4. Funzione di taglio
La funzione di taglio permette di restringere l'elaborazione a una porzione del file origine. Se attivata, viene svolta all'inizio, prima delprocedimento di sostituzione.
La scelta della parte di file da trattare può essere svolta con due criteri distinti:
- specificando una stringa iniziale e una stringa finale.
- specificando un intervallo in byte.
4.4.1. Taglio delimitato da stringhe
Viene elaborata solo la parte di file origine compresa fra una
stringa iniziale e una
stringa finale (la parte restante del file viene ignorata).
Se si omette la stringa iniziale, viene considerata tutta la parte di file che precede la stringa finale.
Se si omette la stringa finale, viene considerata la parte di file successiva alla stringa iniziale.
Nella sezione [CONFIG] [¶7.2]
di una delle tabelle selezionate si specifica almeno una fra le due stringhe suddette utilizzando le chiavi _StIni e _StFin come indicato di seguito.
_StIni=["]stringa_iniziale["]
_StFin=["]stringa_finale["]
Occorre che almeno una fra
stringa_iniziale e
stringa_finale sia non vuota in una tabella attiva. Le virgolette che racchiudono la stringa sono facoltative e possono essere usate per evidenziare eventuali spazi agli estremi della stringa (che altrimenti verrebbero ignorati).
Oltre all'impostazione delle stringhe di cui sopra, occorre indicare alcune modalità per l'applicazione del taglio mediante le chiavi _nSIni (per la stringa iniziale) e _nSFin (per la stringa finale). In ciascuna di esse si possono specificare da uno a tre numeri separati da virgole nel modo seguente (anche qui i termini facoltativi sono indicati fra parentesi quadre, che non devono essere digitate):
_nSIni=n1[,m1[,e1]]
_nSFin=n2[,m2[,e2]]
Nell'ordine, il significato dei tre numeri in ciascuna chiave è il seguente:
- numero n
-
È un contatore che indica il numero di occorrenza della stringa: se è positivo (1, 2, 3, eccetera) specifica che si cerca l'occorrenza della stringa partendo dall'inizio del file, se è negativo (-1, -2, -3, eccetera) l'occorrenza è contata a ritroso partendo dalla fine.
Il valore 0 equivale ad annullare la corrispondente stringa_iniziale o stringa_finale.
- numero m
-
Specifica che la ricerca è insensibile alle maiuscole/minuscole (valore 1) o che viceversa le maiuscole e le corrispondenti minuscole sono considerate lettere distinte (valore 0).
L'insensibilità alle maiuscole/minuscole delle lettere accentate è basata sulla codifica impostata con la chiave _AnsiC [¶8.10].
- numero e
-
Specifica che la stringa deve essere eliminata insieme con la parte tagliata (valore 1) o che deve essere mantenuta (valore 0).
Vediamo due esempi nei quali, usando come stringa il simbolo che rappresenta la sequenza di ritorno a capo, vengono eliminate parte delle righe di un file.
Il primo esempio mostra come eliminare le prime sette e le ultime dieci righe (cioè la parte di file che precede l'occorrenza 7 e la parte che segue l'occorrenza -10 del ritorno a capo). È contata come riga anche quella finale, che potrebbe terminare con un carattere di fine file e sono contate tutte le righe vuote.
_StIni=$CR
_nSIni=7,0,1
_StFin=$CR
_nSFin=-10,0,1
Con le seguenti impostazioni si conservano le prime cento righe, cioè si eliminano le righe dalla numero
101 in poi:
_StFin=$CR
_nSFin=101,0,1
4.4.2. Taglio con intervallo di byte
Viene elaborato un intervallo del file origine che inizia con un dato byte iniziale e ha lunghezza pari a un dato numero di byte. In una tabella attiva si usa la chiave
_tByte come segue:
_tByte = ByteIniziale [, NumeroByte]
I valori a destra del segno di uguale sono soggetti alle condizioni indicate di seguito.
- ByteIniziale
-
Numero diverso da 0 che indica la posizione del primo byte dell'intervallo. Se il numero è positivo (1, 2, 3, eccetera) la posizione è contata dall'inizio del file, se è negativo (-1, -2, -3, eccetera) la posizione è contata a ritroso partendo dalla fine (-1 per l'ultimo byte, -2 per il penultimo e così via). Il numero indicato non deve superare la grandezza del file.
- NumeroByte
-
Numero facoltativo che specifica la lunghezza in byte dell'intervallo. Se il numero è omesso o se vale 0, l'intervallo viene esteso fino alla fine del file.
Il numero viene opportunamente ridotto se esso è tale da eccedere la grandezza del file.
4.4.3. Osservazioni sulla funzione di taglio
Se le informazioni per il taglio sono presenti in più di una tabella, vengono accettate quelle presenti nella prima di esse seguendo l'ordine di caricamento (le informazioni per il taglio nelle tabelle successive sono ignorate). In particolare, non è consentito inserire in una tabella la stringa iniziale e in una diversa tabella la stringa finale.
Se una stessa tabella contiene informazioni valide per entrambi i metodi di taglio, prevale la specificazione per il metodo dell'intervallo di byte.
Attenzione!
Queste chia vi vanno usate con la massima circospezione: se esse sono presenti in una qualunque tabella attiva, il programma applicha il taglio a tutti i file elaborati. Perciò, per motivi di prudenza, la funzione di taglio è disattivata ad ogni avvio e occorre attivarla intenzionalmente: premere Shift+F5 o Alt+P per cambiarne lo stato oppure avviare il programma con l'opzione /+ [¶10].
Parimenti, le chiavi relative alla funzione di taglio non sono ammesse nel file di inizializzazione (come, per lo stesso motivo, nel programma PULISCI per MS-DOS ne veniva sconsigliato l'uso nella tabella PULISCI.TAB).
4.5. Editor per apertura di file e tabelle
Prima di avviare l'elaborazione è possibile utilizzare un editor per modificare manualmente un file o una tabella.
Al momento del primo avvio, il programma
WinPulisci esegue una ricerca per identificare la presenza nel sistema di alcuni editor di uso comune e ne adotta uno in modo automatico. Per modificare la scelta premere
Shift+F9 e utilizzare i comandi descritti di seguito.
Di seguito sono elencati gli editor predefiniti. I nomi in grassetto sono quelli che nella schermata di assegnazione di cui sopra compaiono via via premendo
Tab.
- pspad
-
PSPad,
freeware, installabile o portable, menù in italiano.
Nota.
Nel 2013 avevo preparato un archivio con la
versione 4.5.7 portable
di PSPad già configurata e con poche istruzioni elementari in italiano. Anche se datata, questa versione è ancora utilizzabile: basta decomprimere l'archivio e collocare l'intera sottocartella pspad nella posizione desiderata, rispettando le indicazioni fornite in [¶ 4.5.2].
- notepad++
-
Notepad++,
freeware, menù in italiano.
- GMEditor
-
GMEditor,
editor freeware di tipo portable, di uso elementare. Come i due precedenti, mantiene la posizione di lettura.
- uedit32
-
UltraEdit,
shareware, ben documentato in italiano, uno degli editor più potenti sul mercato.
- textpad
-
TextPad,
shareware, italiano (anche il manuale).
- notepad2
-
Notepad2
freeware, leggero e versatile, solo in inglese.
- biblos
-
Biblos,
freeware, italiano, con funzioni specifiche per non vedenti.
- winword
-
WinWord, il programma di videoscrittura di Microsoft Office.
- notepad
-
Il Blocco note di Windows.
- write
-
WordPad, il programma di videoscrittura incorporato in Windows.
- dspeech
-
DSpeech,
programma gratuito che riunisce funzioni di editor e di TTS (Text-To-Speech), capace cioè di trasformare file di testo in parlato e in file Mp3; è pratico da usare, ricco di funzioni, non richiede installazione.
- balabolka
-
Balabolka,
altro eccellente programma gratuito con funzioni sia di editor sia di TTS.
L'impostazione dell'editor può essere effettuata anche con l'opzione
/E [¶10] e la chiave
KEditor del file di inizializzazione
[¶11].
4.5.1. Opzioni facoltative per gli editor
Per impostazione predefinita, il programma
WinPulisci completa il comando che avvia ciascun editor aggiungendo al percorso del file eseguibile uno spazio e il parametro
%f, che rappresenta il nome del file da aprire. Ad esempio:
C:\Programmi\Notepad++\Notepad++.exe %f
Nella finestra che si apre con
Shift+F9, per ciascun editor è consentito specificare, oltre al percorso del file eseguibile, eventuali opzioni aggiuntive ed è inoltre possibile indicare liberamente la posizione del parametro
%f, in base alla sintassi prevista da ciascun editor:
PercorsoFileEseguibile [opzioni] %f [opzioni]
Se il percorso del file eseguibile contiene spazi, esso deve essere delimitato da virgolette:
"C:\Percorso con spazi\Nome editor.exe" %f [opzioni]
Ad esempio, se il programma
mioeditor.exe richiede l'opzione
-x prima del nome del file, si può impostare il comando nel modo seguente:
mioeditor.exe -x %f
Le estensioni ammesse da WinPulisci per il file eseguibile di un editor sono .exe (predefinita), .bat, .vbs, .cmd (per usare altre estensioni occorre appoggiarsi a un file batch).
4.5.2. Collocazione dell'editor
Alcuni editor, tipicamente quelli di tipo
portable, non possono essere collocati entro i programmi di Windows 7 o versione successiva a causa della protezione
UAC perché i file di configurazione si trovano nella stessa cartella del programma, il quale ha la necessità di accedere in scrittura a questi file.
Nel corso della ricerca automatica o dalla finestra di scelta [¶ 4.5], per facilitare l'individuazione dell'editor, il programma WinPulisci considera le cartelle appartenenti alle due categorie indicate di seguito.
- Prima categoria.
-
Fanno parte di questa categoria le cartelle elencate di seguito. In esse l'editor viene cercato anche in tutte le sottocartelle fino al secondo livello:
-
per gli editor predefiniti, la cartella di installazione standard,
-
la cartella dei programmi a 32 bit,
-
la cartella dei documenti dell'utente,
-
la cartella in cui si trova il file WPulisci.exe attualmente in uso,
-
nelle unità su disco fisso o nell'unità in cui si trova il file WPulisci.exe in uso (quest'ultima può essere removibile), le cartelle in radice di nome ut o con il nome che inizia con uti (C:\util, D:\ut, F:\utility, eccetera).
Esempio.
Il programma PSPad, che in Windows 7 o versione successiva non può trovarsi nella cartella dei programmi, può essere collocato nella seguente cartella, dopo di che sarà sufficiente scrivere pspad nella finestra di scelta (tasto Shift+F9) affinché WinPulisci sia in grado di individuarlo:
D:\utility\editor\pspad\
- Seconda categoria.
-
Sono le cartelle elencate nel path di sistema, in ciascuna delle quali l'editor viene cercato senza esplorare le sottocartelle, a meno che la cartella non faccia già parte della prima categoria.
4.6. Parametri di riga
Il programma prevede quattro
parametri di riga:
due per la funzione di reimpaginazione
[¶4.3],
uno relativo alle direttive di riga
[¶8.5]
e uno relativo alle corrispondenze speciali
[¶8.13].
- Lunghezza di riga (reimpaginazione)
-
Numero che indica la massima lunghezza consentita per le righe del testo.
Può variare fra 10 e 9999, valore predefinito 80.
- Lunghezza parola a fine riga (reimpaginazione)
-
Numero che indica la lunghezza massima di una parola da mandare a capo se presente a fine riga.
Può variare fra 0 e 5, valore predefinito 0.
- Limitazione sostituzione riga (direttive di riga)
-
Numero che indica la lunghezza massima di una riga che è consentito sostituire.
Può variare fra 1 e 9999. Per impostazione predefinita coincide con il parametro Lunghezza di riga di cui sopra.
- Limitazione testo jolly (corrispondenze speciali)
-
Numero che indica la lunghezza massima del testo rappresentato dal jolly.
Può variare fra 1 e 9999. Per impostazione predefinita coincide con il parametro Lunghezza di riga di cui sopra.
I quattro parametri possono essere impostati premendo
Shift+F3 o
Alt+K nella finestra principale, con l'opzione
/n [¶10] o con la chiave
KParLin del file di inizializzazione
[¶11].
I primi due si possono assegnare anche quando si preme
Shift+F6 o
Alt+R nella finestra principale per attivare la reimpaginazione.
4.7. Parametri di funzionamento
Sono parametri che determinano il funzionamento del programma riguardo ad aspetti che non si impostano con le tabelle di sostituzione.
Essi possono assumere i valori
Sì e
No, ad eccezione di
Conserva che può assumere un valore numerico variabile da
0 a
3.
La condizione di questi parametri è mostrata nella
riga di stato e può essere modificata premendo i tasti opportuni (v. il prospetto in
[¶3.1]).
Ad ognuno di questi parametri è abbinata un'opzione, da specificare al prompt dei comandi per fargli assumere, in avvio di programma, la condizione desiderata. Per i particolari v. [¶10].
Con l'eccezione di Reimpagina e Taglia, lo stato dei parametri è memorizzato nel file di inizializzazione [¶11].
- Auto
-
Condizione predefinita: No.
Si modifica con F5 o Alt+A (dal prompt con l'opzione /A).
Normalmente la sequenza di ritorno a capo nei file di testo è costituita dalla coppia di caratteri CR+LF (codici ASCII 13 e 10) ma alcuni file non rispettano questa regola. Se il parametro Auto è posto a Sì, il programma individua automaticamente tale sequenza, altrimenti l'intercettazione non ha luogo e viene usata la sequenza standard.
- Conserva
-
Condizione predefinita: 1.
si modifica con F7 o Alt+C (dal prompt con l'opzione /C seguita da un numero fra 0 e 3).
Gli spazi che si trovano all'inizio o alla fine delle righe in un file di testo possono essere conservati o eliminati agendo sul parametro Conserva. Sono possibili quattro condizioni, che corrispondono alle quattro situazioni seguenti:
- valore 0: non sono conservati né gli spazi iniziali né quelli finali.
- valore 1: sono conservati gli spazi iniziali ma non quelli finali.
- valore 2: sono conservati gli spazi finali ma non quelli iniziali.
- valore 3: sono conservati sia gli spazi iniziali sia quelli finali.
Le condizioni 0 e 1 sono quelle di uso più frequente. La conservazione degli spazi all'inizio delle righe (condizioni 1 e 3) permette, ad esempio, di mantenere le tabulazioni esistenti. La necessità di conservare gli spazi finali si presenta solo in casi molto particolari.
- PrKey
-
Condizione predefinita: Sì.
Si modifica con Shift+F7 o Alt+Y (dal prompt con l'opzione /Y).
Se lo stato è Sì (protezione attiva), le quattro chiavi critiche possono essere impostate solo con il file di inizializzazione mentre i relativi comandi eventualmente presenti nelle tabelle sono ignorati [¶7.2.1].
- PrDir
-
Condizione predefinita: Sì.
Si modifica con Shift+F8 o Alt+Z (dal prompt con l'opzione /Z).
Se lo stato è Sì (protezione attiva), non è possibile né adottare una cartella critica come cartella destinazione [¶3.2] né accedere dalla finestra di esplorazione [¶4.2] alla cartella di Windows e alla cartella dei programmi.
- Suoni
-
Condizione predefinita: Sì.
Si modifica con F6 o Alt+S (dal prompt con l'opzione /S).
Sono previste varie segnalazioni acustiche che possono essere escluse ponendo a No lo stato di questo parametro. Anche l'opzione /Q ha influenza sull'emissione di suoni.
- Log
-
Condizione predefinita: Sì.
Si modifica con Shift+F2 o Alt+L (dal prompt con l'opzione /L).
Attiva o esclude la scrittura dei resoconti su file [¶9].
- Reimpagina
-
Condizione predefinita: No.
si modifica con Shift+F6 o Alt+R, dal prompt con l'opzione /R [¶10].
Se questo parametro è posto a Sì, al termine del procedimento di sostituzione viene svolta la reimpaginazione, cioè il testo viene riscritto con righe di lunghezza massima prestabilita. Se necessario, due righe consecutive vengono riunite. Non vengono riunite le righe separate da una riga vuota (cioè da due ritorni a capo consecutivi) e quelle che terminano o iniziano con particolari caratteri, impostati nel file di inizializzazione rispettivamente con le chiavi _FRiga e _IRiga.
Nella reimpaginazione sono utilizzati i parametri di riga descritti in [¶4.6].
- Taglia
-
Condizione predefinita: No.
si modifica con Shift+F5 o Alt+P, dal prompt con l'opzione /+ [¶10].
Se questo parametro è posto a Sì, prima che abbia inizio il procedimento di sostituzione viene attivata la funzione di taglio, qualora opportunamente prevista in qualche tabella, come spiegato in [¶4.4].
4.8. Tabella extra
Nella finestra principale, alla pressione di
F4 viene aperta con l'editor una nuova tabella chiamata
extra, utile per definire corrispondenze
al volo o per effettuare prove.
Se vengono inseriti almeno una corrispondenza valida oppure un blocco
ARRAY/ENDARRAY, la tabella viene automaticamente attivata e un file con nome del tipo
extra0.tab,
extra1.tab, ...
extra9999.tab viene temporaneamente memorizzato nella cartella delle tabelle (verificare la finestra di scelta delle tabelle,
F3). La descrizione provvisoria, che andrà opportunamente adattata, contiene l'orario di creazione del file.
Nella sezione [CONFIG] compaiono le impostazioni attualmente vigenti che, essendo riportate solo a titolo di promemoria, sono espresse in forma di commento (con la marcatura ## a inizio riga).
Al termine della sessione il programma chiede se si vuole mantenere la tabella extra. Nel corso della sessione si può chiudere e memorizzare stabilmente la tabella extra premendo Shift+F4 oppure Alt+M, cosicché è possibile aprire una nuova tabella extra premendo F4.
4.9. Aggiunta di testo iniziale e finale
È possibile predisporre blocchi di testo da aggiungere all'inizio o alla fine dei file da elaborare. L'aggiunta viene effettuata al termine di tutte le operazioni, dopo le sostituzioni e dopo l'eventuale reimpaginazione.
I blocchi di testo da aggiungere vanno predisposti mediante le tabelle di aggiunta testo come spiegato in [¶7.8].
4.10. Elaborazione multipla
Il programma
WinPulisci consente di svolgere un'elaborazione
multipla, trattando più file specificati con un unico comando. Basta indicare come origine (al prompt dei comandi o nel campo
File origine della finestra principale:
- una specificazione contenente uno fra i caratteri * e ?, oppure
- il percorso di una cartella esistente.
È prevista la possibilità di includere i file che si trovano nelle sottocartelle specificando il livello di sottocartella cui si vuole estendere la ricerca. Tale profondità viene determinata con l'opzione
/M o con la chiave
KMaxScanLv del file di inizializzazione. Il valore predefinito è
1. Il valore
0 indica che viene esaminata solo la cartella specificata senza le sue eventuali sottocartelle. Se si vuole estendere la ricerca a tutte le sottocartelle, basta indicare un valore elevato ad esempio
999.
Se vengono trovati file che corrispondono alla specificazione indicata, il programma chiede il consenso per procedere con l'elaborazione.
- Elaborazione multipla immediata
-
Se si risponde premendo S, l'elaborazione ha inizio e prosegue automaticamente fino all'esaurimento dei file. I file risultanti vengono posti tutti in una nuova sottocartella che viene generata appositamente nella cartella destinazione corrente e che ha nome multi, multi1, multi2, eccetera. In questa sottocartella viene riprodotta la struttura di sottocartelle dei file originali.
Dato che la sottocartella è sempre nuova, non può verificarsi il caso che ci siano file omonimi preesistenti.
Se la verifica del file destinazione è attivata con eliminazione in caso di identità rispetto al file origine, può accadere che una o più sottocartelle non compaiano nella struttura riprodotta (opzione /V e chiave KVerif del file di inizializzazione).
- Elaborazione multipla differita
-
Se la risposta alla richiesta di consenso è N, rimane ugualmente la possibilità di svolgere l'elaborazione multipla in modo differito. Essa ha luogo con l'appoggio di un file batch di nome WPul-bat.bat che viene generato appositamente e che viene posto nella cartella di lavoro. Basta chiudere il programma e, dopo aver selezionato il file stesso, avviarne l'esecuzione. Il file batch adotta le impostazioni correnti che erano in vigore nel momento in cui è stato generato, comprese quelle desunte dalla riga di comando. Vengono anche utilizzate le tabelle che risultavano selezionate in quel momento.
In questo caso la sottocartella che ospita i file elaborati ha nome fisso multi, sempre nella cartella destinazione corrente. Se esiste già tale sottocartella, è necessario spostarla o rinominarla manualmente.
Considerare che l'elaborazione multipla immediata, che è molto più efficiente, è decisamente da preferire rispetto a quella differita.
La reimpaginazione, se specificata nel contesto di un'elaborazione multipla (tanto immediata quanto differita), viene eseguita senza alcuna richiesta di consenso.
Per la specificazione che avvia l'elaborazione multipla, se immessa dal prompt dei comandi, valgono le condizioni indicate di seguito.
-
Se si forza l'attivazione del modo interattivo con la semplice opzione /F, la specificazione viene annullata, mentre viene mantenuta e mostrata a schermo se si usa /F1 (in quest'ultimo caso controllare attentamente i parametri e le tabelle attive).
-
Per chiarezza è opportuno indicare sempre un percorso completo perché altrimenti la specificazione è considerata relativa alla cartella corrente (e non alla cartella origine).
Il file batch abbinato all'elaborazione multipla differita si avvale di un file temporaneo che ospita alcuni dati riguardanti l'elaborazione svolta. Viene inoltre utilizzata l'opzione
/G, valida unicamente in questo contesto, i cui parametri sono impostati dal programma in modo opportuno per prevenire errori accidentali.
4.11. Data/ora del file destinazione
Normalmente il file destinazione assume l'orario (timestamp) del momento in cui è terminata l'elaborazione (che chiamiamo
orario attuale). Mediante la chiave
_TSAdj (file di inizializzazione o tabelle) oppure con l'opzione
/J si può impostare un orario diverso. Si possono utilizzare due criteri distinti.
- Aggiustamento relativo
-
Si assegna un unico numero x:
_TSAdj = x
Se x vale -1 si ha la situazione predefinita (orario attuale). Eccettuato tale valore, x indica uno scostamento in secondi (offset) che determina l'orario del file destinazione in base alla regola seguente:
- Se x è maggiore o uguale di 0 l'orario è posteriore di x secondi rispetto all'orario del file originale
- Se x è negativo (e diverso da -1), l'orario è anteriore all'istante attuale di un numero di secondi pari al modulo di x.
Ad esempio, se il numero vale 0, il file destinazione ha lo stesso orario del file origine, mentre se vale 1800 l'orario viene incrementato di 30 minuti.
Nota.
Se lo scostamento rispetto all'orario attuale comporta una data anteriore al 1/1/1980, il dato è ignorato e viene adottata l'impostazione predefinita.
- Aggiustamento assoluto
-
Si esprime una data indicando sei numeri separati da virgole nel modo seguente:
_TSAdj = anno,mese,giorno,ore,minuti,secondi
Occorre indicare una data valida. Ad esempio 2017,2,29, viene rifiutata perché l'anno 2017 non è bisestile.
Naturalmente, se si utilizza l'aggiustamento assoluto durante un'elaborazione multipla, risulta che tutti i file ottenuti hanno lo stesso orario.
Entrambi i criteri si applicano nello stesso modo all'opzione
/J.
Ad esempio, sono valide entrambe le opzioni
/J-1800 e
/J2016,3,30,12,0,0.
Torna al sommario.
5. Il modo batch
L'elaborazione viene svolta direttamente (modo batch) quando il nome del file è indicato al prompt dei comandi come primo parametro, a meno che non si specifichi l'opzione
/F che forza l'ingresso nel modo interattivo.
Il nome di file indicato al prompt, se non include un percorso assoluto, viene dapprima considerato relativo alla cartella corrente e solo in seconda battuta alla cartella origine. Ad esempio, il seguente comando cerca il file testo.txt prima nella cartella D:\MieiFile\ e, solo se non lo trova in tale posizione, nella cartella origine:
D:\MieiFile>WPulisci.exe testo.txt
Se il primo parametro è un nome di cartella oppure se contiene caratteri jolly, viene avviata l'elaborazione
multipla [¶
4.10].
Si può indicare facoltativamente come secondo parametro il nome del file destinazione, che può anche essere il nome di una cartella esistente.
Se si avvia l'elaborazione in modo batch, si possono immettere al prompt dei comandi le idonee opzioni per far conoscere al programma i dati necessari: in questo caso, di solito conviene servirsi di file batch opportunamente predisposti che corrispondano alle specifiche esigenze (a titolo di esempio v. i file batch nella cartella Demo\ [¶13.1]).
Per la descrizione completa delle opzioni disponibili v. [¶10].
L'opzione più importante è /T mediante la quale si scelgono le tabelle da caricare. Si possono specificare più tabelle come nell'esempio seguente:
WPulisci.exe testo.txt d:\cartella\ /t tab1 tab2 tab3 tab4
Tutte le tabelle devono avere la stessa estensione, normalmente
.tab, che non è necessario indicare sulla linea di comando. Ad esempio, il comando precedente equivale a:
WPulisci.exe testo.txt d:\cartella\ /t tab1.tab tab2.tab tab3.tab tab4.tab
Si può modificare l'estensione valida per le tabelle avviando il programma con l'opzione
/X. Ad esempio, per assegnare l'estensione
.mia si può usare il comando:
WPulisci.exe /x.mia
Lo stato delle tabelle memorizzato nel file di inizializzazione viene ignorato durante l'esecuzione batch, dove le tabelle attive sono unicamente quelle che vengono specificate con l'opzione
/T.
Un'altra opzione utile nel funzionamento in modo batch è /Q che determina il controllo sulla cancellazione del file e la comparsa dei messaggi a video. Sono previsti 6 livelli selezionabili con i numeri da 0 (predefinito) a 5. Nel modo interattivo il livello è posto automaticamente al valore 0.
Osservazione.
Quando si specifica un nome di file sulla riga di comando, invece di indicare come secondo parametro un nome di cartella, è possibile usare l'opzione /D seguita dal nome della cartella stessa. Si noti però che in tal caso, se si forza con /F l'ingresso nel modo interattivo, la cartella indicata assume in seguito il ruolo di cartella destinazione predefinita perché il dato viene memorizzato nel file di inizializzazione.
Torna al sommario.
6. Funzioni di aiuto
Nel normale funzionamento interattivo si può premere il tasto
F1 che fornisce alcune istruzioni sulle azioni da compiere e sui tasti utilizzabili. Alcuni suggerimenti essenziali sono indicati nell'ultima riga in basso dello schermo. Premere
Ctrl+H per visualizzare una descrizione sintetica delle novità dell'ultima versione.
La finestra principale mostra anche le informazioni riepilogative sulle tabelle, presentate secondo lo schema seguente:
Tabelle attive 5/53, PRE-TXT, taglio=primo_cr.tab
Corrispondenze 4 (J2 S1 R1 E1)
Auto NO|Conserva 1|PrDir SI|PrKey SI|Suoni SI|Log SI|Reimpag NO|Taglia NO|Ins
Il significato delle informazioni è esplicitato di seguito.
-
Sono attive cinque tabelle delle 53 disponibili.
-
Sono indicati il numero complessivo di corrispondenze caricate e inoltre il numero di quelle fra esse che hanno caratteristiche particolari (J se dotate di jolly, S se speciali, R se dotate di direttive di riga, ? se interattive, N se iterate, E se corrispondenze EReg, P o A se sono definite la corrispondenza prompt) o l'array prompt.
-
La sigla PRE-TXT indica che una delle tabelle attive è una tabella di aggiunta testo iniziale.
-
La tabella primo_cr.tab contiene le impostazioni per la funzione di taglio: per poter applicare il taglio occorre attivare il parametro Taglia che al momento è posto a NO.
- Non essendo citata, la modalità Word Star non è attiva.
Infine è mostrata una riga con lo stato dei parametri di funzionamento
[¶4.7.
La visualizzazione di questa riga e dei dati riepilogativi delle tabelle può essere esclusa o ripristinata con
Alt+Q.
Sono previste segnalazioni acustiche differenziate per varie circostanze: qualora esse arrechino disturbo, possono essere escluse con F6 o anche con l'opzione /S al prompt dei comandi.
Dal prompt dei comandi si può ottenere la sintassi del programma con l'elenco completo delle opzioni disponibili eseguendo il
comando: WPulisci /H. La stessa finestra di aiuto può essere aperta dalla finestra principale premendo Ctrl+F1.
Torna al sommario.
7. Le tabelle di sostituzione
Le tabelle di sostituzione sono ordinari file di testo con estensione
.tab, estensione che può essere modificata con la chiave
KExtTab del file di inizializzazione o con l'opzione
/X dal prompt dei comandi. Le regole per la loro redazione sono descritte in questo capitolo.
Le tabelle sono collocate tutte insieme in una cartella che, per impostazione predefinita, è la sottocartella tab della cartella di lavoro. È possibile utilizzare una diversa cartella assegnandone il percorso con la chiave KTabDir del file di inizializzazione o con l'opzione /P al prompt dei comandi.
Per il significato del termine carattere e per considerazioni sulla codifica v. [¶7.16].
7.1. Struttura delle tabelle
Ogni tabella può essere composta da varie sezioni, ognuna delle quali inizia con un'etichetta identificativa. Queste etichette devono trovarsi all'inizio di una riga e il corpo della rispettiva sezione inizia con la riga successiva. Le sezioni possibili sono elencate qui di seguito (le principali sono le prime due).
Le etichette non devono essere necessariamente in caratteri maiuscoli.
- Etichetta [CONFIG]
-
Sezione di configurazione (detta anche sezione simboli) per l'assegnazione dei simboli.
- Etichetta [CORR]
-
Sezione per definire le corrispondenze o coppie di stringhe. Può comparire più volte nella stessa tabella.
Questa sezione può inoltre ospitare uno o più blocchi ARRAY/ENDARRAY per definire e utilizzare array semplici o associati [¶7.11].
- Etichetta [VAR]
-
Sezione per definire le variabili dell'utente [¶7.9].
- Etichette [PRE-TXT] e [POST-TXT]
-
Sezioni utilizzabili solo nelle tabelle di aggiunta testo, particolari tabelle per l'aggiunta di un blocco di testo all'inizio o alla fine del file [¶7.8].
- Etichetta [END]
-
Quando il programma trova questa etichetta ignora tutta la parte del file da quella riga in avanti.
La prima riga di ciascuna tabella è un'intestazione che deve iniziare con l'etichetta identificativa di apertura
[WinPulisci] (essa serve per assicurare la validità della tabella). Tutta la parte di file compresa fra tale etichetta e la prima etichetta di una sezione è un testo libero che può essere utile per commentare e ricordare il contenuto. Il programma utilizza la parte iniziale di questo testo, fino a circa
1500 byte, nella finestra di scelta delle tabelle quale descrizione delle stesse.
Facciamo sempre riferimento alle varie sezioni indicandole con le rispettive etichette.
La sezione [CONFIG] deve essere posta sempre per prima. Se presente, la sezione [VAR] deve trovarsi dopo la sezione [CONFIG] ma prima delle altre sezioni.
Infine la presenza di una sezione [CORR] comporta che le sezioni [PRE-TXT] e [POST-TXT] vengono ignorate.
Nota.
Per mantenere la compatibilità con PULISCI per MS-DOS, il programma WinPulisci accetta le etichette [PULISCI], [SIMBOLI], [CORRISPONDENZE], [FINE] [¶14.A].
7.2. Sezione [CONFIG]
La sezione
[CONFIG] non è indispensabile perché tutti i simboli convenzionali hanno un valore predefinito. Se si desidera assegnare in una tabella qualche valore diverso, si raccomanda di impiegare lo stesso simbolo in tutte le tabelle attive durante l'elaborazione
[¶11.4].
Normalmente, per i comandi che lo consentono, basta utilizzare il file di inizializzazione
WPulisci.ini [¶11]
per impostare stabilmente i valori desiderati, che prendono il posto di quelli predefiniti, e omettere, nella maggior parte dei casi, la sezione
[CONFIG] in tutte le tabelle.
Ovviamente, volendo modificare qualche simbolo, è necessario scegliere simboli che non diano adito ad equivoci [¶7.15].
Tenere anche nella dovuta considerazione la protezione delle chiavi critiche [¶7.2.1].
Ogni riga della sezione [CONFIG] consta di un comando della forma:
chiave = valore ##commento facoltativo
Segue un esempio di sezione
[CONFIG] (i valori che vi compaiono sono quelli predefiniti al momento della prima installazione).
[CONFIG]
_AnsiC = 1,1 ##trattamento maiuscole/minuscole [, esclusione direttive U/L/M in file UTF-8]
_Delim =() ##separatore delle stringhe
_Acapo =$CR ##Simbolo per la sequenza di ritorno a capo
_CarJol=@ ##Carattere jolly
_CtrlK =^0 ##marcatore caratteri di controllo; con 0 codici nella forma ^00 ... ^31
_BlIni =/.. ##Inizio di un blocco di testo
_BlFin =../ ##Fine di un blocco di testo
_TSAdj=-1 ##aggiustamento orario del file destinazione
_Codici=0,7-13,26-27
_FRiga =.!?;:
_IRiga =; -*/#[_:@^07^09
Ci sono inoltre le chiavi
_StIni,
_StFin,
_nSIni,
_nSFin,
_tByte
(informazioni relative alla funzione di taglio)
e le chiavi
_Jolly0,
_Jolly1, ...,
_Jolly999
(definizione degli insiemi preimpostati per costruire l'insieme di caratteri da assegnare al
jolly).
In ciascuna riga della sezione [CONFIG], la parte che inizia con la marcatura ## fino a fine riga viene ignorata. La parte a sinistra del segno di uguale è la chiave, mentre a destra è posto il corrispondente valore. Gli spazi che circondano il valore (alla sua sinistra dopo il segno di uguale e alla sua destra prima dell'eventuale commento) sono ignorati.
Nel prossimo prospetto il valore a destra del segno di uguale è quello predefinito dal programma. Le chiavi sono insensibili alle maiuscole/minuscole mentre i valori vanno espressi con l'esatta grafia riguardo alle lettere maiuscole o minuscole. L'ordine delle righe non è rilevante, ad eccezione delle chiavi _CarJol e _CtrlK che vanno messe all'inizio, prima delle righe che prevedono la possibilità di includere i corrispondenti simboli (ad esempio, i delimitatori di inizio e fine blocco o gli insiemi di caratteri preimpostati per il jolly).
Salvo diversa indicazione, le chiavi sono accettate anche nel file di inizializzazione.
- _AnsiC=1,1
-
- Il primo valore specifica la codifica per il trattamento delle lettere accentate maiuscole/minuscole nelle corrispondenze (v. [¶8.10] e opzione /U).
Valori ammessi: 0=OEM (MS-DOS), 1=ANSI (Windows, predefinito), 2=scelta automatica.
- Il parametro facoltativo dopo la virgola, se impostato a 1 (valore predefinito), comporta che le direttive di riga U, L, M non vengono applicate nei file codificati UTF-8 con BOM.
- _Delim=()
-
Separatore delle stringhe di cui è composta ogni corrispondenza [¶7.3].
Deve avere da due a cinque caratteri (quelli eccedenti vengono ignorati), deve contenere almeno un carattere non alfanumerico e deve essere diverso dal simbolo della sequenza di ritorno a capo. V. ulteriori limitazioni in [¶7.15].
Nota.
Tenere presente che è possibile definire separatori con validità locale [¶7.3.1].
- _Acapo=$CR
-
Definisce il simbolo che rappresenta la sequenza di ritorno a capo [¶7.4].
Deve avere da due a cinque caratteri (quelli eccedenti vengono ignorati), deve contenere almeno un carattere non alfanumerico e deve essere diverso dal separatore di cui sopra. V. ulteriori limitazioni in [¶7.15].
- _CarJol=@
-
Simbolo jolly (un singolo carattere) [¶7.6]:
non deve essere alfanumerico e deve essere diverso dal marcatore dei caratteri di controllo.
V. ulteriori limitazioni in [¶7.15].
Nota.
Tenere presente che è possibile definire caratteri jolly con validità locale [¶7.3.1].
- _CtrlK=^0
-
Marcatore dei caratteri di controllo (primo carattere) [¶7.4]:
non deve essere alfanumerico e deve essere diverso dal simbolo jolly.
Il secondo carattere 0 specifica l'adozione della codifica con codici ASCII a due cifre (impostazione predefinita) [¶7.4].
- _BlIni=/..
-
Etichetta di inizio blocco: questa stringa e l'analoga definita con _BlFin costituiscono insieme i cosiddetti delimitatori di blocco di testo. Tali delimitatori sono usati in combinazione con le direttive * e + [¶8.4].
Nel valore è ammessa la presenza di caratteri di controllo (codice ASCII minore di 32) e del ritorno a capo, da specificare con gli appositi simboli [¶7.4].
Nota.
Le etichette di inizio e fine blocco devono essere una diversa dall'altra.
- _BlFin=../
-
Etichetta di fine blocco, v. _BlIni.
- _Codici=0,7-13,26-27
-
Codici dei caratteri di controllo ammessi [¶7.5].
- _FRiga=.!?;:
-
Insieme con _IRiga, questa chiave è abbinata alla funzione di reimpaginazione [¶4.3].
Le due stringhe definite con questi comandi servono per impedire la ricongiunzione di due righe consecutive durante la reimpaginazione. Precisamente:
- una riga che termina con uno dei caratteri specificati da _FRiga non viene ricongiunta con la riga successiva;
- una riga che inizia con uno dei caratteri specificati da _IRiga non viene ricongiunta con la riga precedente.
In ciascuna delle due stringhe si possono indicare caratteri di controllo (codice ASCII da 0 a 31) nella forma appropriata [¶7.4], ma non sono ammessi i caratteri con codice ASCII 10 e 13 e il simbolo per la sequenza di ritorno a capo.
La reimpaginazione è controllata dal parametro Reimpagina e dai parametri lunghezza riga e Lunghezza parola a fine riga [¶4.6].
- _IRiga=; -*/#[_:@^07^09
-
V. sopra _FRiga.
- _TSAdj=-1
-
Determina l'orario del file destinazione. Per impostazione predefinita (valore -1) l'orario è quello attuale
[ 4.11].
- _StIni, _StFin, _nSIni, _nSFin.
-
Queste chiavi riguardano il taglio delimitato da stringhe [¶4.4.1].
Non sono ammesse nel file di inizializzazione.
- _tByte>
-
Riguarda il taglio di un intervallo espresso in byte [¶4.4.2].
Questa chiave prevale sulle chiavi per il taglio delimitato da stringhe, se presenti nella stessa tabella. Non è ammessa nel file di inizializzazione.
- _Jolly0=
-
Definisce l'insieme preimpostato numero 0 da usare con le direttive J per costruire l'insieme abbinato al jolly. In modo analogo si usano le chiavi _Jolly1, ..., _Jolly999. Sono ammessi i caratteri di controllo nella forma appropriata ma non va usato il simbolo per la sequenza di ritorno a capo perché esso, se presente, verrebbe acquisito letteralmente).
Per gli insiemi preimpostati standard v. la tabella in [¶8.7]).
7.2.1. Protezione delle chiavi critiche
Le quattro chiavi
_Delim,
_Acapo,
_CarJol e
_CtrlK descritte in
[¶7.2]
sono considerate critiche e perciò i rispettivi valori, che sono definiti nel file di inizializzazione con le stesse chiavi, non vengono normalmente acquisiti quando sono presenti nelle tabelle.
Questa restrizione, detta
protezione delle chiavi critiche, può essere esclusa utilizzando
Shift+F7,
Alt+Y, lopzione
/Y0 oppure la chiave
_KProtKey=0 nel file di inizializzazione.
Rimane comunque la possibilità di definire liberamente un separatore e un carattere jolly con validità locale, cioè ristretta a una singola corrispondenza [¶7.3.1].
7.3. Sezione [CORR] (definizione delle corrispondenze)
Nella sezione corrispondenze ogni riga contiene una coppia di stringhe o sequenze di caratteri come nell'esempio seguente:
1'()l'()
Il separatore
(), definito nella sezione di configurazione con il comando
_Delim, indica al programma il margine destro delle sequenze di caratteri: la prima è quella da cercare nel testo, la seconda è quella destinata a prendere il posto della prima.
Gli spazi vuoti presenti nelle due stringhe sono significativi.
È ammesso che la seconda stringa sia vuota (in tal modo si cancellano nel file tutte le occorrenze della prima stringa), mentre non ha senso che sia vuota la prima stringa. Quindi la seguente corrispondenza è valida:
ABC()()
Invece la seguente riga non è valida e non definisce una corrispondenza (cfr. però i simboli con validità locale
[¶7.3.1]):
()ABC()
In ogni caso si pretende che la riga che contiene una corrispondenza contenga due separatori, che indicano il margine destro rispettivamente della prima e della seconda stringa.
Una riga come la seguente non definisce una corrispondenza ed è ignorata, dato che manca il separatore a destra della seconda stringa:
ABC()XYZ
A destra del secondo separatore si possono aggiungere facoltativamente una o più direttive che condizionano il modo in cui viene svolta l'operazione di sostituzione. Ad esempio:
prova()test()I
La direttiva
I rende la ricerca della prima stringa insensibile alle maiuscole/minuscole
[¶8.3].
Dopo le eventuali direttive è possibile aggiungere una stringa di caratteri a piacere racchiusa tra virgolette che viene presa in considerazione se nella corrispondenza è presente il
jolly [¶8.7].
In conclusione, la struttura completa di una corrispondenza è la seguente (le parentesi quadre racchiudono termini facoltativi e non vanno digitate):
stringa1()stringa2() [direttive] ["caratteri per il jolly" | ##commento]
Notare che il commento non è ammesso quando è presente la stringa "caratteri per il jolly".
La sezione [CORR] può ospitare anche uno o più blocchi ARRAY/ENDARRAY.
Per la trattazione di questo argomento v. [¶7.11].
7.3.1. Separatore e carattere jolly con validità locale
Il separatore e il carattere jolly possono essere modificati attribuendo loro valori che hanno validità
locale, cioè ristretta a una singola corrispondenza. Ciò può essere utile se si presenta la necessità di inserire nella corrispondenza tali simboli con valenza letterale.
La definizione di questi due simboli locali si effettua anteponendo alla corrispondenza, nella stessa riga, una o due particolari sequenze, composte ciascuna di due parti, come spiegato di seguito. È possibile usare due sequenze consecutive, una per il separatore locale e una per il jolly locale.
- Prima parte
Il separatore ordinario.
Nota.
Ricordare che, tranne nella definizione dei simboli locali, le corrispondenze che iniziano con il separatore non sono valide).
- Seconda parte (immediatamente a destra del separatore)
-
È costituita da due caratteri non alfanumerici con codice ASCII compreso fra 33 e 127.
In base al primo dei due caratteri possono verificarsi due situazioni.
-
Il primo carattere è @: in questo caso viene adottato come carattere jolly locale il secondo carattere della coppia.
-
Il primo carattere non è @: in questo caso il separatore locale è la stringa formata con entrambi i caratteri.
La parte rimanente della stringa, a destra delle sequenze suddette, costituisce la corrispondenza vera e propria, nella quale naturalmente vanno utilizzati i simboli locali, coerentemente con la definizione appena indicata. Ad esempio, supponendo di voler utilizzare localmente il separatore
// e il carattere jolly
#, la corrispondenza assume la forma generale seguente:
()//()@#stringa1//stringa2// [direttive] ["caratteri per il jolly" | ##commento]
Se compaiono due sequenze che definiscono lo stesso simbolo locale, la seconda è considerata parte della corrispondenza.
La validità dei simboli locali è ristretta esclusivamente alla corrispondenza in cui essi sono definiti. I caratteri assegnati ai simboli locali vanno scelti opportunamente in base al contenuto delle stringhe che fanno parte della corrispondenza. Non ci sono restrizioni sul numero di corrispondenze che utilizzano simboli locali ed essi possono variare passando da una corrispondenza all'altra.
Esempi.
La prossima corrispondenza permette di sostituire la stringa () con la stringa [] senza modificare il separatore globale nel file di inizializzazione:
()++()++[]++
La prossima corrispondenza usa localmente un punto interrogativo come carattere jolly e consente di includere il carattere
@ fra i caratteri da attribuire al jolly, trasformando
casa,
c@sa,
c@s@ in
Casa, indipendentemente dai caratteri maiuscoli o minuscoli:
()@?c?s?()Casa() i p1 "@Aa"
Nella stessa corrispondenza si può contemporaneamente modificare anche il separatore:
()@?()++c?s?++Casa++ i p1 "@Aa"
Le prossime corrispondenze non definiscono simboli locali e non sono valide (al posto dei puntini immaginare caratteri a piacere):
()@x...()...() ##il carattere x a destra di @ è alfabetico
()+0...+0...+0 ##la stringa +0 non è valida come separatore locale perché il carattere 0 è una cifra
(){}...()...() ##è definito il separatore locale {} ma la corrispondenza utilizza quello ordinario ()
La prossima corrispondenza definisce correttamente il separatore locale
//:
()//()++...//...//
Tuttavia l'effetto potrebbe essere diverso da quello atteso. Infatti sono presenti due sequenze per la definizione del separatore locale e solo la prima di esse è accettata per tale funzione. La seconda sequenza
()++ rientra nella prima stringa della corrispondenza che è
()++....
7.4. Rappresentazione dei caratteri di controllo
Le tabelle, che sono ordinari file di testo, non possono contenere certi caratteri e l'unico modo di indicarli è quello di utilizzare un opportuno simbolo che li rappresenti. Ciò riguarda sia le stringhe facenti parte delle corrispondenze sia gli insiemi di caratteri relativi al jolly, alle etichette di inizio e fine blocco, eccetera.
- Sequenza di ritorno a capo
-
Costituita normalmente da una coppia di caratteri con codici ASCII 13 e 10, essa è rappresentata nel programma WinPulisci dal simbolo $CR.
- Caratteri di controllo
-
Sono i caratteri con codice ASCII minore di 32, vengono indicati con il marcatore ^ (accento circonflesso) seguito dal rispettivo codice ASCII a due cifre, vale a dire
^00 ^01 ... ^31.
Se lo si vuole indicare testualmente come carattere, il marcatore stesso deve essere raddoppiato.
Ad esempio, per indicare la stringa formata da tre caratteri ^12 (e non il carattere Form Feed che ha codice ASCII 12)
si dovrà usare la forma ^^12
Si possono adottare simboli diversi definendoli con le apposite chiavi nella sezione
[CONFIG] del file di inizializzazione o delle tabelle: la sequenza di ritorno a capo
$CR si modifica con la chiave
_Acapo, il marcatore
^ con la chiave
_CtrlK
(v.
[¶11] e
[¶7.2]).
Nota bene.
La codifica dei caratteri di controllo è cambiata rispetto alla versione di PULISCI per MS-DOS. Le vecchie tabelle rimangono tuttavia compatibili secondo quanto precisato in [¶14.A].
7.5. Convalida del file origine
Esiste l'esigenza di evitare l'intervento accidentale su file che non sono di puro testo. Perciò, prima di partire con l'elaborazione, il programma effettua una verifica sui primi
2048 byte del file origine e dichiara che esso non è di testo se riscontra la presenza di caratteri indesiderati.
Normalmente non sono accettati i caratteri con codice ASCII minore di 32, eccezion fatta per 0, 7, 8, 9, 10, 12, 13 e 26.
È però possibile abilitare qualunque carattere usando la chiave _Codici nella sezione [CONFIG] del file di inizializzazione o delle tabelle. In tale comando i codici vanno separati uno dall'altro con una virgola. Oltre ai codici singoli sono ammessi anche intervalli numerici (due numeri separati da un trattino) come nell'esempio seguente:
_Codici=1,3,7-13,24-28
La scrittura in forma compatta
7-13 indica tutti i numeri interi da
7 a
13. Quindi il comando precedente equivale a:
_Codici=1,3,7,8,9,10,11,12,13,24,25,26,27,28
La chiave
_Codici viene letta nel file di inizializzazione all'avvio del programma. Durante l'elaborazione è possibile modificare questo insieme attivando una tabella che includa la stessa chiave nella sezione
[CONFIG].
Si tenga presente che i file aventi una delle estensioni EXE, COM, DLL, OCX, PIF vengono sempre rifiutati, indipendentemente dal loro contenuto.
7.6. Il carattere jolly
In ciascuna stringa si può includere il carattere jolly
@, che chiameremo semplicemente
jolly. Esso è modificabile con la chiave
_CarJol nel file di inizializzazione. Il jolly di
WinPulisci viene riconosciuto al più quattro volte in ogni stringa. Notare che nelle due stringhe di una corrispondenza non è richiesto che esso occupi posizioni identiche.
Una corrispondenza contenente il jolly equivale ad una serie di tante corrispondenze, ottenute assegnando successivamente al jolly tutti i caratteri appartenenti ad un insieme che deve essere assegnato opportunamente. L'utilità del jolly sta nel fatto che esso permette di definire con un unico comando un gruppo anche molto numeroso di corrispondenze affini tra loro.
Esistono due modi per definire l'insieme di caratteri per il jolly.
-
Scrivere esplicitamente l'elenco dei caratteri desiderati racchiuso tra virgolette a destra del secondo separatore e dopo le eventuali direttive [¶7.3].
-
Usare le direttive J [¶8.7]
per specificare uno o più degli insiemi predisposti mediante le chiavi _Jolly0, _Jolly1, ... _Jolly999
nella sezione [CONFIG] del file di inizializzazione o delle tabelle.
In tutti questi insiemi di caratteri si possono indicare anche i caratteri di controllo, mediante la rappresentazione descritta in
[¶7.4].
Inoltre in una stessa corrispondenza è consentito specificare simultaneamente un insieme esplicito e un numero a piacere di direttive
J0,
J1 ...
J999.
Nei prossimi esempi, che illustrano astrattamente le possibilità di sostituzione mediante jolly, sono usate anche le direttive 0 1 ... 9 che costituiscono la forma abbreviata rispettivamente di J0 J1 ... J9.
a@bc()xy@() J3
a@bc()xy@() J20 J400 "aeiou"
@a@bc()xy@z@()05 J97
@a@bc()xy@z()J0J5
@a@bc()xyz()05
Nelle due stringhe il jolly può comparire una volta (jolly
semplice) oppure più volte (fino a quattro, jolly
multiplo), ma nella seconda stringa esso deve comparire un numero di volte non superiore al numero di occorrenze nella prima stringa (per le occorrenze eccedenti, il carattere jolly è trattato come un carattere ordinario). In particolare il jolly può essere del tutto assente nella seconda stringa e una siffatta sostituzione può servire per cancellare certi caratteri.
Per i particolari sul jolly multiplo e sulla direttiva
@ v.
[¶8.8].
Se il jolly è assente nella prima stringa, la corrispondenza è trattata in modo ordinario e l'insieme dei caratteri da abbinare al jolly viene ignorato.
Alcuni casi in cui il jolly è trattato come un carattere ordinario:
- se mancano sia le direttive J sia un insieme esplicito di caratteri per il jolly;
- se sono presenti la direttiva T (traslitterazione) oppure la direttiva E (espressione regolare);
- se il jolly è già stato usato in 65535 corrispondenze;
- se l'occorrenza del jolly eccede quelle consentite (in particolare, se compare nella seconda ma non nella prima stringa).
7.7. Corrispondenza prompt e array prompt
Si può assegnare una cosiddetta
corrispondenza prompt come parametro sulla riga di comando all'avvio di
WinPulisci, a destra dell'opzione
/! [¶10], con le stesse regole per la redazione delle tabelle viste in questo capitolo.
Essa può essere impiegata da sola o in combinazione con una o più tabelle attivate con l'opzione
/T e in quest'ultimo caso viene applicata all'inizio, prima di tutte le corrispondenze presenti nelle tabelle.
La corrispondenza prompt è pensata soprattutto per il modo batch
[¶5]. Tuttavia può essere specificata nell'ambito di una sessione interattiva e in tal caso per essa valgono le seguenti regole:
-
viene eliminata se nella schermata di scelta (tasto F3) interviene un cambiamento che comporta la rilettura delle tabelle.
-
viene eliminata se si apre una tabella extra valida [¶4.8].
In questo caso essa viene inserita automaticamente nella tabella extra;
La corrispondenza prompt è copiata negli appunti di Windows, anche se non più presente fra le corrispondenze attive, in modo da poter essere facilmente inserita quando si apre una qualunque tabella con l'editor.
Si deve avere l'avvertenza di mettere l'opzione /! per ultima perché tutta la parte di comando alla sua destra è considerata definizione della corrispondenza. Ad esempio, la seguente riga di comando non è sensata (Le due opzioni sarebbero ignorate e invece verrebbero attivate la direttiva R e le direttive per l'insieme jolly 1, 2 e 8):
D:\>WPulisci testo.txt elaborato.txt /c1 /!abc()xyz() /r128 /l
Se si usa l'opzione
/! senza una stringa alla sua destra, il programma adotta implicitamente la corrispondenza
<@>()()!, cioè interpreta il comando come se l'operatore avesse digitato quanto segue:
/!^<@^>()()!
Nota.
Nel precedente esempio è stato usato il carattere di escape
^, necessario al prompt dei comandi di Windows per evitare che i caratteri
< e
> vengano interpretati come comandi di reindirizzamento.
Lo stesso vale per i caratteri
| (pipe) e
& che al prompt vanno immessi come
^| e
^&.
In condizioni opportune, la corrispondenza prompt consente di definire da riga di comando un blocco ARRAY/ENDARRAY, chiamato per brevità array prompt, a cui si applicaquanto detto per la corrispondenza prompt. Per ulteriori particolari v. [¶7.14].
7.8. Tabelle di aggiunta testo
Sono particolari tabelle nelle quali si possono impostare blocchi di testo da aggiungere all'inizio o alla fine del file in elaborazione. In luogo delle consuete sezioni
[CONFIG] e
[CORR] deve essere presente una delle sezioni
[PRE-TXT] oppure
[POST-TXT], per identificare un blocco da aggiungere rispettivamente all'inizio oppure alla fine del file (una possibilità esclude l'altra). Ad esempio:
[PRE-TXT]
Testo da aggiungere
all'inizio del file.
Sono^09ammessi^09caratteri^09di^09controllo.
I ritorni a capo sono rispettati, salvo il caso in cui
la riga termina con \
il carattere di continuazione "\".
[END]
Il testo viene acquisito fedelmente, rispettando i ritorni a capo, fatte salve le circostanze indicate di seguito.
-
Se una riga termina con il carattere \ (controbarra), detto carattere di continuazione, essa viene congiunta con la riga successiva, come se il ritorno a capo non esistesse. In particolare, se la controbarra è posta alla fine del testo viene omesso il ritorno a capo finale dell'intero blocco.
-
Se si vuole terminare una riga con una controbarra occorre raddoppiarla in \\ (il raddoppiamento riguarda solo la controbarra al termine delle righe).
-
Si possono utilizzare caratteri di controllo ^00, ^01, ... ^31.
-
L'etichetta conclusiva [END] è facoltativa ed è prevista solo per ragioni di chiarezza.
In una tabella di aggiunta testo l'etichetta identificativa di apertura è obbligatoriamente
[WinPulisci]. Come nelle normali tabelle, fra l'etichetta di apertura e l'inizio di una delle due sezioni ammesse si può inserire un commento facoltativo.
7.9. Definizione e uso delle variabili utente
L'utilizzatore di
WinPulisci ha la facoltà di definire variabili in numero a piacere, che possono essere utili nelle corrispondenze o nelle tabelle di aggiunta testo, ad esempio per indicare valori ripetuti o di rappresentazione problematica.
Le variabili si definiscono nella sezione [VAR] del file di inizializzazione o delle tabelle con una delle seguenti sintassi (una variabile per riga):
$nome$=stringa
$nome$<lista codici decimali
$nome$>lista codici esadecimali
Ciascuna sintassi è composta da due parti separate da uno dei segni
= (uguale),
< (minore) o
> (maggiore).
La parte di sinistra è il nome della variabile, che deve iniziare e terminare con il carattere $ (dollaro). I caratteri intermedi possono essere alfabetici, cifre o il carattere _ (sottolineato). Ogni altro carattere, compreso lo spazio, rende nulla la definizione. Inoltre la stringa $CR$ è riservata e non può essere usata come nome di variabile [¶7.15].
Le lettere maiuscole e minuscole sono considerati caratteri distinti (ad esempio, $a$ e $A$ sono variabili diverse).
Nei nomi di variabile non sono ammesse lettere accentate.
Ogni nome di variabile può comparire una sola volta, contando le occorrenze presenti nel file di inizializzazione e nelle tabelle attive. Se un nome di variabile è ripetuto, viene considerata solo l'occorrenza che compare per prima.
La parte di destra è il valore, cioè il testo associato alla variabile. Il testo può essere specificato in tre modi.
- Un'ordinaria stringa di testo
-
Fra il nome della variabile e la stringa si pone il segno di uguale. Nella stringa sono ammessi:
- caratteri ordinari;
- caratteri di controllo, mediante la rappresentazione descritta in [¶7.4].
- altre variabili utente già definite in righe precedenti o in tabelle già caricate.
- le variabili predefinite di WinPulisci e tutte le variabili di ambiente di Windows.
Per mantenere gli spazi agli estremi della stringa, che verrebbero eliminati, o per utilizzare il carattere virgolette nel valore, aggiungere le virgolette agli estremi come nel seguente esempio:
$a$ = " Lettera "A" "
Si eviti di includere il jolly nella stringa perché ciò potrebbe portare a effetti imprevisti e di difficile interpretazione.
- Una lista di codici decimali
-
Fra il nome della variabile e la lista si pone il carattere < (minore). Gli elementi della lista sono numeri compresi fra 0 e 255 separati uno dall'altro con una virgola. Ad esempio:
$dec$<0,13,138,154,255
- Una lista di codici esadecimali a due cifre
-
Fra il nome della variabile e la lista si pone il carattere > (maggiore). Gli elementi della lista sono valori esadecimali compresi fra 00 e FF separati uno dall'altro con una virgola. Ad esempio:
$BOM$>EF, BB, BF
Le variabili utente possono essere incluse nelle due stringhe di qualunque corrispondenza e nel testo delle tabelle di aggiunta testo, indipendentemente dalla tabella attiva in cui sono definite. Esse sono ammesse anche nell'insieme esplicito di caratteri abbinato al jolly, purché siano definite nella stessa tabella, in una tabella già caricata o nel file di inizializzazione. Ad esempio, si supponga di aver assegnato alla variabile
$C$ la stringa con le consonanti maiuscole:
$C$=BCDFGHJKLMNPQRSTVWXYZ
Allora si può definire la seguente corrispondenza, che sostituisce
1 con
I quando compreso fra due consonanti maiuscole:
@1@()@I@() "$C$"
Nota.
Se la variabile
$C$ dell'ultimo esempio viene definita in una tabella caricata successivamente, i caratteri che compongono il nome sono interpretati letteralmente.
Il prossimo esempio mostra il listato di una tabella nella quale la variabile $Tre$ è definita incapsulando in essa la variabile $x$ definita nella riga precedente.
[WinPulisci]
[VAR]
$x$=^13^10
$Tre$=$x$$x$$x$
[CORR]
. @().$Tre$@()1
Le variabili utente coinvolte in un insieme di tabelle attive sono elencate nel resoconto delle tabelle attive
Tab-List.log, dove sono riportate anche le variabili riservate non utilizzabili ed eventuali variabili utilizzate ma non definite. Notare che eventuali variabili predefinite o variabili di ambiente sono citate con il loro nome, dato che l'attualizzazione avviene al momento dell'elaborazione.
7.10. Impiego delle variabili predefinite e delle variabili di ambiente
Le variabili predefinite e le variabili di ambiente di Windows sono usate nella forma
%variabile% (con carattere iniziale e finale
%, segno di percentuale).
Le informazioni in esse contenute possono essere inserite nelle corrispondenze e nelle tabelle di aggiunta testo.
Il prossimo esempio mostra come preparare una tabella per produrre un'intestazione contenente gli estremi del file originale.
[WinPulisci]
[VAR]
$giorno$=%WP_TDStr% %WP_TDMY%
$ore$=%WP_THr%.%WP_TMin%
$file$=%WP_Orig%
$dim$=%WP_OSize%
[PRE-TXT]
Questo file è stato elaborato $giorno$ alle $ore$ a partire dal file $file$ di $dim$.^13^10
[END]
È importante notare che le variabili predefinite e le variabili di ambiente non possono essere usate direttamente ma solo mediante variabili utente in cui esse vengano preventivamente incluse.
Anche le variabili predefinite e le variabili di ambiente vanno indicate con l'esatta grafia riguardo ai caratteri maiuscoli/minuscoli.
I nomi delle variabili predefinite sono tutti della forma %WP_...% (v. l'elenco in [¶7.17]).
7.11. Array associati e array semplici
Un array è un elenco di valori che consente di espandere una corrispondenza in tante corrispondenze quanti sono gli elementi che compongono l'elenco.
Per definire un array si utilizza la seguente sintassi (un array per riga):
$nome$=elemento1,elemento2,elemento3,...
A Sinistra del segno di uguale va posto il nome dell'array, che deve iniziare e terminare con il carattere
$ (dollaro).
Gli elementi dell'array sono stringhe che si scrivono a destra del segno di uguale con una virgola di separazione tra l'uno e l'altro.
Le definizioni degli array devono trovarsi nella sezione [CORR] di una tabella entro un blocco ARRAY/ENDARRAY.
Inoltre ogni blocco ARRAY/ENDARRAY deve contenere almeno una corrispondenza nella quale compaiono i nomi degli array definiti in quel blocco.
La struttura di un blocco è illustrata nel seguente esempio, dove sono definiti due array con tre elementi ciascuno.
ARRAY
$x$=a,b,c
$y$=p,q,r
$x$...$y$()$y$...$x$() [direttive]
ENDARRAY
La corrispondenza presente nel blocco viene espansa in tre istanze della stessa (tante quant'è il numero massimo di elementi degli array). Le espansioni sono ottenute mettendo nelle stringhe della corrispondenza al posto dei simboli $x$ e $y$ gli elementi che occupano posizioni uguali nei due elenchi, andando da sinistra a destra.
Per questo gli array $x$ e $y$ sono detti
associati (fra gli array che si trovano in blocchi diversi non esiste alcuna associazione).
Il blocco dell'esempio precedente equivale in tutto e per tutto alle tre corrispondenze seguenti:
a...p()p...a() [direttive]
b...q()q...b() [direttive]
c...r()r...c() [direttive]
Se in un blocco è definito un unico array, esso è detto
semplice perché cessa la possibilità di compiere le associazioni con gli elementi di altri array.
Ciascuna corrispondenza del blocco, che in questo caso contiene un solo nome di array, viene espansa in un numero di corrispondenze pari al numero di elementi dell'array, con i vari elementi al posto del nome dell'array. Perciò la funzione svolta da un array semplice può essere considerata un ampliamento di quella del jolly.
Per particolari sulla composizione degli array v. [¶7.12].
Per esempi più concreti v. le tabelle animali.tab, FormattaOrario.tab, NumeriRomani.tab [¶13].
7.12. Regole di composizione degli array
Il nome di un array deve iniziare e terminare con il carattere
$ (dollaro). I caratteri intermedi possono essere alfabetici, cifre o il carattere
_ (sottolineato). Ogni altro carattere, compresi lo spazio e le lettere accentate, rende nulla la definizione. Inoltre la stringa
$CR$ è riservata e non può essere usata come nome di array
[¶7.15].
Le lettere maiuscole e minuscole sono considerate caratteri distinti (ad esempio,
$x$ e
$X$ definiscono array diversi.
Ogni tabella può contenere un numero arbitrario di blocchi ARRAY/ENDARRAY e ogni blocco può ospitare un numero arbitrario di array. Gli array definiti in uno stesso blocco devono avere nomi diversi tra loro.
Gli elementi degli array possono essere racchiusi tra virgolette, ma le virgolette non fanno parte dell'elemento che esse racchiudono. Nel prossimo array gli elementi sono tre (le virgole presenti entro le virgolette sono considerati caratteri facenti parte del secondo elemento p,q,r e non virgole di separazione fra gli elementi):
$x$=a,"p,q,r",c
Gli spazi che circondano la virgola di separazione sono ignorati, mentre quelli interni alle virgolette sono mantenuti. Osservare i prossimi quattro array.
$x$=a,b,c
$y$ = a, b, c
$z$ = "a", b, "c"
$w$ = " a ",b,c
Gli array $x$, $y$ e $z$ sono tra loro equivalenti (elementi ordinatamente uguali). Invece nell'array $w$ il primo elemento differisce dal primo elemento degli altri perché la lettera
a è preceduta e seguita da uno spazio evidenziato con le virgolette.
Le virgolette possono essere usate solo come delimitatori degli elementi e non come caratteri facenti parte degli elementi. Nel prossimo array il primo elemento è considerato non valido e viene acquisito come una stringa vuota.
$x$=""a",b,c
Nelle corrispondenze del blocco, i nomi degli array possono comparire in qualunque posizione della prima stringa, della seconda stringa o di entrambe, possono essere ripetuti a piacere e possono anche essere omessi. Tuttavia, se nessuno degli array è citato in almeno una delle due stringhe della corrispondenza, non viene generata alcuna nuova istanza, cioè la corrispondenza è trattata in modo ordinario.
È consentito che due o più array associati abbiano un numero di elementi diverso tra loro. In questo caso nelle posizioni che non trovano un valore abbinato si considera implicitamente che ci sia una stringa vuota. In ogni caso, le corrispondenze espanse che dovessero risultare non ammissibili verrebbero scartate. Ad esempio, si supponga che il blocco contenga le righe seguenti:
$x$=a,b
$y$=a,p,q,r
$x$()$y$()
L'espansione produce l'unica corrispondenza valida
b()p(). Le rimanenti vengono scartate perché le due stringhe della corrispondenza sono uguali oppure perché la prima stringa è vuota.
Le istruzioni di inizio e fine blocco vanno scritte esattamente, ad esempio, END ARRAY non è valida e non chiude il blocco. Tuttavia non è obbligatorio usare caratteri maiuscoli, ad esempio si possono usare Array e EndArray.
È consentito che solo l'ultimo dei blocchi presenti sia privo dell'istruzione di chiusura ENDARRAY e in tal caso esso si estende fino alla fine della tabella o fino all'etichetta [END]. Ad esempio, in una situazione come la seguente tutta la parte di tabella fra le due istruzioni ARRAY verrebbe ignorata (comprese eventuali corrispondenze ordinarie):
ARRAY
...
ARRAY
...
ENDARRAY
7.13. Ambito delle variabili e ambito degli array
L'ambito degli array è
locale, cioè le sostituzioni avvengono solo nelle corrispondenze che si trovano entro il blocco in cui sono definiti gli array stessi.
Invece l'ambito delle variabili utente [¶7.9]
è globale, cioè esse vengono applicate in qualunque contesto in cui sono utilizzate.
Se una variabile utente ha lo stesso nome di un array, nelle sostituzioni del blocco prevale l'array e la variabile è momentaneamente accantonata. Tale variabile continua ad esistere al di fuori di quel blocco e in particolare in altri eventuali blocchi nei quali il suo nome non è impegnato nella definizione di un array.
Entro uno stesso blocco si può definire una sola volta un array con un dato nome (in caso di ripetizione viene considerata l'occorrenza che compare per prima), ma lo stesso nome di array può essere utilizzato in blocchi diversi.
7.14. Blocco ARRAY/ENDARRAY definito da prompt
È possibile assegnare da prompt un blocco
ARRAY/ENDARRAY utilizzando la
corrispondenza prompt [¶7.7]
e opportune variabili di ambiente. Per brevità, facciamo riferimento a questo blocco con il termine
array prompt.
L'assegnazione degli array appartenenti al blocco viene compiuta mediante variabili con nome del tipo WPul-$nome$. I comandi dell'esempio seguente, digitati al prompt o inclusi in un file batch, definiscono gli array associati $x$ e $y$ che operano come in un blocco incluso in una tabella.
set WPul-$x$=pulcino,cavallo,leone,gatto
set WPul-$y$=pigola,nitrisce,ruggisce,miagola
WPulisci.exe ... /!$x$()Il $x$ $y$.()i
Se si eseguono i suddetti comandi e si avvia il programma in modo interattivo, dopo aver premuto
F4 per aprire una tabella extra, in essa viene inserito il seguente blocco (che viene copiato negli appunti di Windows in luogo della corrispondenza prompt):
ARRAY
$x$=pulcino,cavallo,leone,gatto
$y$=pigola,nitrisce,ruggisce,miagola
$x$()Il $x$ $y$.()i
ENDARRAY
7.15. Limitazioni nella ridefinizione dei simboli
In certi casi i simboli del separatore, del jolly, del marcatore dei caratteri di controllo e della sequenza di ritorno a capo possono entrare in conflitto con le stringhe facenti parte delle corrispondenze o delle tabelle di aggiunta testo. Ad esempio, potrebbe presentarsi l'esigenza di utilizzare questi simboli con valenza letterale oppure potrebbe verificarsi il caso in cui l'accostamento dei simboli tra loro o con il testo circostante provoca situazioni ambigue.
Si può ovviare in parte all'inconveniente adottando separatori e jolly con validità locale [¶7.3.1].
In ogni caso il problema impone alcune limitazioni e impegna l'utilizzatore a compiere la scelta dei simboli più appropriati da adottare nei casi specifici
(sezione CONFIG [¶7.2] e [¶11]).
Generalmente un buon criterio è di evitare del tutto i caratteri alfanumerici.
Un caso particolare riguarda la presenza nei simboli del carattere $ in relazione ai nomi delle variabili o degli array. Con le impostazioni predefinite, la stringa $CR$ viene rifiutata come nome di variabile o di array perché sarebbero interpretate erroneamente corrispondenze nelle quali la sequenza di ritorno a capo è ripetuta. Ad esempio:
$CR$CR$CR()$CR$CR()
Il programma
WinPulisci analizza i simboli ed esclude le variabili fonte di possibili conflitti. Tali nomi non possono essere utilizzati e, se ugualmente presenti, vengono interpretati letteralmente (cioè senza essere sostituiti con i valori specificati nella definizione). Se si riscontra che qualche variabile o array ha un comportamento inatteso, per prima cosa controllare la lista delle variabili non utilizzabili nel resoconto delle tabelle attive
Tab-List.log.
Seguono alcuni esempi astratti, senza pretesa di esaurire l'intera casistica.
- Se si assegna alla sequenza di ritorno a capo il simbolo $X0 non usare variabili o array con nome $X0$.
- Se si assegna alla sequenza di ritorno a capo il simbolo X$Y non usare variabili o array con nome $YX$ e $CRX$.
- Se si assegna alla sequenza di ritorno a capo il simbolo $$X non usare variabili o array con nome $X$.
- Se si assegna al separatore il simbolo $X$ non usare variabili o array con nome $X$.
- Se si assegna al jolly il carattere $ e al separatore il simbolo $X non usare variabili o array con nome $X$.
- Se si assegna alla sequenza di ritorno a capo il simbolo Y$X e al separatore il simbolo $Z non usare variabili o array con nomi $XY$, $Z$, $ZY$ e $CRY$.
7.16. Codifica UTF-8 e significato del termine carattere
In
WinPulisci i file di testo da elaborare sono assunti come UTF-8 soltanto se regolarmente provvisti di
BOM (Byte Order Mark).
In questo manuale il termine carattere va inteso come carattere a un singolo byte, salvo diversa specificazione esplicita.
La codifica del file di inizializzazione WPulisci.ini deve essere ANSI.
Anche le tabelle di sostituzione dovrebbero essere preferibilmente codificate ANSI.
Avvertenza.
Se la codifica di una tabella è UTF-8, i caratteri multi-byte (ad esempio le lettere accentate) sono gestiti dal programma come stringhe di byte singoli.
In tal caso, perciò, i caratteri abbinati al jolly specificati in quella tabella dovranno essere ASCII standard o caratteri di controllo.
Se si ha l'esigenza di specificare un carattere singolo con codice maggiore di 127, occorrerà definire il jolly in una tabella codificata ANSI oppure nel file di inizializzazione.
Dato che le direttive di riga U, L, M non sono applicabili ai caratteri multi-byte, per impostazione predefinita WinPulisci le ignora quando il file è di tipo UTF-8 essendo comunque consentito escludere questa restrizione
[¶8.10].
Nelle tabelle con codifica ANSI, ogni carattere UTF-8 deve essere specificato nelle corrispondenze mediante la sequenza di due o più byte da cui esso è composto.
Per definire tali caratteri si possono utilizzare variabili utente specificando la stringa con codici decimali o esadecimali [¶7.9].
- Esempio 1.
Il BOM di un file UTF8 può essere assegnato alla variabile $BOM$ con una delle sintassi indicate di seguito.
$BOM$<239, 187, 191
$BOM$>EF, BB, BF
- Esempio 2.
Il carattere UTF-16 con codice esadecimale 0041 (lettera A maiuscola)) va indicato come segue:
$UTF16LE_A$>41,00
Le due metà del carattere vanno scambiate perché la parte «meno significativa» 41 va messa per prima (l'ambiente Windows utilizza l'ordine multi-byte little endian).
7.17. Elenco delle variabili predefinite
Le variabili predefinite sono attualizzate all'avvio dell'elaborazione di ciascun file e sono riportate nel file resoconto insieme con i rispettivi valori (in caso di elaborazione multipla i valori sono quelli relativi all'ultimo file trattato).
Segue la descrizione delle variabili previste.
- %WP_TDMY%
-
Data in formato esteso.
- %WP_TDStr%
-
Giorno della settimana in parola.
- %WP_TMStr%
-
Mese in parola.
- %WP_TYear%
-
Anno, quattro cifre.
- %WP_TMon%
-
Mese in numero.
- %WP_TDay%
-
Giorno del mese in numero.
- %WP_THr%
-
Ore.
- %WP_TMin%
-
Minuti.
- %WP_TSec%
-
Secondi.
- %WP_Logo%
-
Logo del programma WinPulisci.
- %WP_CMD%
-
Riga di comando della sessione attuale.
- %WP_WkPath%
-
Cartella di lavoro.
- %WP_PrgPath%
-
Cartella di installazione.
- %WP_Orig%
-
Percorso completo del file origine.
- %WP_Dest%
-
Percorso completo del file destinazione.
- %WP_OrigN%
-
File origine senza percorso.
- %WP_DestN%
-
File destinazione senza percorso.
- %WP_OByte%
-
Grandezza del file origine (byte, solo numero).
- %WP_OSize%
-
Grandezza del file origine (con unità).
- %WP_OTime%
-
Data e ora del file origine.
- %WP_OrigP%
-
Cartella origine corrente.
- %WP_DestP%
-
Cartella destinazione corrente.
- %WP_TabP%
-
Cartella delle tabelle.
Torna al sommario.
8. Direttive per la sostituzione
Le direttive sono indicazioni facoltative che vanno poste nella sezione corrispondenze delle tabelle, a destra dei comandi che definiscono le coppie di stringhe. Ogni direttiva è costituita da un carattere secondo lo schema riassunto nel prospetto che segue.
- Direttiva ?
-
Rende interattiva la sostituzione delle coppie cui è applicata.
- Direttiva I
-
Individua le stringhe indipendentemente dalla grafia delle lettere in maiuscolo o in minuscolo.
- Direttiva *
-
Sospende la sostituzione nei blocchi compresi fra gli appositi delimitatori.
- Direttiva +
-
Impedisce la sostituzione al di fuori dei blocchi di cui sopra.
- Direttiva R
-
Sostituisce per intero una riga che contiene la prima stringa.
- Direttive U, L, M
-
Modificano intere righe rendendole maiuscole, minuscole o con parole a iniziale maiuscola.
- Direttive J0 J1 ... J999
-
Selezionano gli insiemi preimpostati per il Jolly (anche 0 ... 9, abbreviazioni per J0 ... J9).
- Direttiva @
-
Imposta la regola per associare i caratteri in caso di jolly multiplo.
- Direttiva >
- Trasforma caratteri minuscoli in maiuscoli.
- Direttiva <
-
Trasforma caratteri maiuscoli in minuscoli.
- Direttiva !
-
Contrassegna la corrispondenza come speciale [¶8.13].
- Direttiva X
-
Esclude le limitazioni di lunghezza nelle corrispondenze speciali e nelle direttive R, U, L, M.
- Direttiva W
-
Accetta la corrispondenza solo se è abilitata la modalità Word Star [¶12].
- Direttiva =
-
In modalità Word Star [¶12], impedisce l'interpretazione dei caratteri.
- Direttive P1 P2 ... P6
-
Indicano la posizione della stringa entro una parola.
- Direttiva T
-
Elabora la corrispondenza con il metodo di traslitterazione.
- Direttiva E
-
Tratta la corrispondenza come espressione regolare.
- Direttiva N
-
Seguita da un numero n compreso fra 0 e 99999, itera la corrispondenza per n volte consecutive.
Le direttive, che sono descritte più avanti in modo particolareggiato, sono soggette alle regole generali indicate di seguito.
-
La direttiva N è compatibile con tutte le altre direttive.
-
Le direttive * e + sono tra loro incompatibili, salvo quanto precisato in [¶8.4].
-
Le direttive ?, I, W, = e le direttive J (insiemi preimpostati per il jolly) sono compatibili fra loro e con le altre, tranne T ed E.
Si può indicarne più di una nella stessa corrispondenza.
-
Le direttive di riga R, U, L, M sono reciprocamente incompatibili. Esse sono annullate dalle direttive T ed E, mentre annullano le corrispondenze speciali (direttiva !).
-
Le direttive U, L, M sono ignorate se il file in elaborazione è di tipo UTF-8 con BOM.
-
La direttiva X è ammessa solo nelle corrispondenze speciali oppure se è presente una direttiva di riga.
-
Le direttive P1 P2 ... P6 sono reciprocamente incompatibili ed esse sono tutte incompatibili anche con le direttive di riga e con la direttiva ! (la presenza di una di queste ultime annulla le prime).
-
Le direttive > e < hanno efficacia solo se nella corrispondenza cui si riferiscono è anche utilizzato il jolly. La direttiva @ presuppone la presenza del jolly multiplo.
-
La direttiva E annulla tutte le altre, ad eccezione di N, * e + e comporta l'adozione di regole proprie.
8.1. Direttiva ?
Se una corrispondenza comprende la direttiva
?, il programma sospende l'elaborazione ogni volta che incontra nel testo la stringa da sostituire e chiede il consenso prima di procedere.
In righe distinte, vengono mostrati un frammento del testo originale in prossimità della stringa in questione, la posizione iniziale della stringa nel file originale e le due stringhe della corrispondenza. Alla richiesta di consenso si può rispondere premendo:
-
S oppure Invio per effettuare la sostituzione proposta,
-
N per saltare la sostituzione proposta lasciando invariato l'originale,
-
T oppure Esc per effettuare tutte le rimanenti sostituzioni della corrispondenza attuale senza ulteriore richiesta di consenso,
-
M (che sta per mai) per saltare tutte le rimanenti sostituzioni della corrispondenza attuale senza ulteriore richiesta di consenso,
-
A per azzerare completamente l'interattività per tutte le corrispondenze, sospendendo cioè le successive richieste di consenso,
-
I per interrompere l'elaborazione.
Se si vuole ripristinare l'interattività annullata dalla pressione di uno dei tasti
T,
M,
A o
Esc, in un'elaborazione successiva della stessa sessione occorre fare in modo che le corrispondenze vengano acquisite nuovamente: si può premere
F3 e poi due volte la barra spaziatrice su una qualunque tabella, azione che non altera l'insieme delle tabelle selezionate ma che obbliga il programma a rileggerle perché è avvenuto un cambiamento.
Esempio:
gosub()GOSUB()?I
La direttiva
? è ammessa anche in presenza del jolly
[¶8.7].
Ad esempio:
. @().$CR@()? "ABCDEFG"
Notare che se si annulla l'interattività mentre il jolly assume un dato carattere, l'interattività viene annullata, nella specifica corrispondenza, anche per i caratteri rimanenti. Perciò, se si preferisce operare in modo più selettivo, occorre espandere il jolly utilizzando un numero adeguato di corrispondenze ordinarie oppure utilizzare un array semplice. Così, in luogo della corrispondenza di sopra, si può utilizzare il blocco seguente:
ARRAY
$x$=A,B,C,D,E,F,G
. $x$().$CR$x$()?
ENDARRAY
In modo batch, se il livello di verbosità dei messaggi è impostato a
2 o ad un valore maggiore (opzione
/Q), l'interattività viene annullata ed il programma si comporta come se la direttiva
? non fosse specificata.
8.2. Direttive P1 P2 ... P6
Servono per indicare la posizione in cui deve trovarsi entro una parola la stringa da sostituire. Precisamente, a seconda della direttiva, la stringa:
P1 |
deve coincidere esattamente con una parola |
P2 |
deve trovarsi a fine parola |
P3 |
deve trovarsi a inizio parola |
P4 |
deve trovarsi in centro parola, cioè né all'inizio né alla fine |
P5 |
non deve trovarsi a fine parola |
P6 |
non deve trovarsi a inizio parola. |
Ogni corrispondenza può contenere una sola fra le direttive
P1 P2 ...
P6.
Se nella stessa corrispondenza sono presenti una fra le direttive
E,
T,
! oppure una direttiva di riga, le direttive
P1 P2 ...
P6 sono ignorate.
8.3. Direttiva I
La presenza di questa direttiva consente di sostituire una stringa indipendentemente dalla grafia dei caratteri alfabetici maiuscoli e minuscoli. Va applicata con cognizione di causa, dopo aver valutato attentamente gli effetti che potrebbe provocare. Ad esempio, la seguente corrispondenza è ragionevole:
gosub()GOSUB()I
Con questa sostituzione, applicata a un file sorgente
Basic, si trasforma in caratteri maiuscoli ogni occorrenza dell'istruzione
gosub, comunque scritta (
gosub,
Gosub,
GoSub). Si osservino però le corrispondenze seguenti:
and()AND()I
and () AND ()I
and()AND()p1i
La prima va evitata perché, mancando gli spazi iniziale e finale, con essa si avrebbe la trasformazione di
standard in
stANDard, di
comando in
comANDo,
di
andando in
ANDANDo, di
Sandra in
SANDra, eccetera.
Si noti che, se si usa la direttiva I, la prima stringa può essere scritta indifferentemente con caratteri maiuscoli o minuscoli. Invece nella seconda stringa le maiuscole e minuscole sono significative.
Per il trattamento delle lettere accentate nelle corrispondenze v. [¶8.10].
8.4. Direttive * e +
Permettono di restringere la sostituzione a una porzione del file. Ad esempio, volendo eliminare tutti i ritorni a capo, e desiderabile che la loro cancellazione non avvenga in un brano in versi o nel listato di un programma.
-
Per sospendere una certa sostituzione all'interno di un blocco di testo, si deve indicare la direttiva *.
-
Viceversa, per far sì che la sostituzione abbia luogo solo entro il blocco di testo, si deve indicare la direttiva +.
Occorre inoltre aggiungere, in posizioni appropriate del file origine, due etichette di inizio e di fine blocco che permettano al programma di individuare univocamente la zona del file entro cui applicare o impedire, a seconda dei casi, la sostituzione.
Le stringhe di inizio e di fine blocco adottate per impostazione predefinita sono:
-
etichetta di inizio blocco: /..
-
etichetta di fine blocco: ../
Questi valori predefiniti, che sono stati adottati per assicurare la compatibilità delle vecchie tabelle di
PULISCI per MS-DOS, sono modificabili con le chiavi
_BlIni e
_BlFin nella sezione
[CONFIG] del file di inizializzazione o delle tabelle. Ad esempio:
_BlIni=|++
_BlFin=++|
È possibile estendere l'applicazione della direttiva
* o della direttiva
+ a tutte le corrispondenze contenute in una sezione (notare che in una tabella possono esserci varie sezioni
[CORR]). Questo effetto si ottiene mettendo il carattere
* oppure il carattere
+ a destra dell'etichetta
[CORR] all'inizio della sezione. Per interrompere l'applicazione estesa della direttiva, basta iniziare una nuova sezione con l'etichetta
[CORR].
La direttiva + è annullata se è simultaneamente presente la *: però
la direttiva +, indicata in una corrispondenza, prevale sulla direttiva * applicata a un'intera sezione [CORR].
Normalmente non ha senso che la prima stringa di una corrispondenza contenga una delle etichette di inizio o fine blocco. Infatti le etichette sono escluse dai blocchi che esse delimitano e pertanto la stringa non verrebbe trovata nel testo originale. La corrispondenza può avere eventualmente effetto solo se durante l'elaborazione il testo è stato modificato con l'aggiunta di queste etichette da parte di altre corrispondenze.
Contrariamente a quanto avveniva nella versione MS-DOS, i blocchi delimitati dalle etichette di inizio e fine blocco sono isolati uno dall'altro: ciascuno viene caricato in memoria, elaborato in modo indipendente e accodato al file destinazione mantenendo al loro posto le etichette. Una conseguenza è che ora non è più necessario mettere le etichette di inizio e fine blocco all'inizio di una riga. Se un'etichetta si trova in centro riga, entrambe le porzioni in cui la riga è spezzata dall'etichetta sono trattate come intere righe.
Normalmente le etichette vanno poste nel file origine seguendo l'ordine naturale (un'etichetta di apertura seguita da un'etichetta di chiusura). Tuttavia il programma accetta le etichette anche se esse si succedono violando tale ordine. Ad esempio, se si utilizzano due o più etichette di inizio blocco alle quali non corrisponde un'etichetta di fine blocco, le corrispondenze che contengono la direttiva * sono applicate a tutta la parte del blocco che segue la prima etichetta.
Le etichette possono essere utilizzate anche come un artificio per poter elaborare file la cui grandezza supera le limitazioni descritte in [¶15.3].
Ad esempio, basta identificare nel file origine una stringa appropriata e assegnarla come etichetta di inizio blocco, senza utilizzare alcuna etichetta di fine blocco. In tal modo si induce il programma a caricare in memoria blocchi più piccoli, consentendo praticamente di elaborare file di qualunque grandezza.
8.5. Direttive di riga
Le direttive
R,
U,
L,
M agiscono sulle intere righe del file origine che contengono la prima stringa, purché la riga stessa abbia un numero di caratteri non eccedente il valore consentito, normalmente
80 (v. l'apposito parametro
Limitazione sostituzione riga [¶4.6]).
Questa limitazione sulla lunghezza della riga può essere esclusa aggiungendo la direttiva
X.
il termine riga indica una porzione di testo delimitata da ritorni a capo, dove il ritorno a capo che termina la riga viene incluso in essa.
La prima stringa non può contenere il simbolo di ritorno a capo $CR.
Salvo diversa indicazione, nel resto di questo paragrafo si fa riferimento a righe che rispettano la limitazione di lunghezza di cui sopra.
- Direttiva R
-
L'intera riga che contiene la prima stringa viene sostituita con la seconda stringa. Ad esempio, con la corrispondenza
Indice analitico()()R
si cancellano per intero tutte le righe che contengono la stringa Indice analitico.
Il contenuto della seconda stringa è libero. Ad esempio, la corrispondenza seguente ha l'effetto di svuotare ma di non eliminare le righe contenenti la stringa indicata:
Indice analitico()$CR()R
- Direttive U, L, M
-
Queste tre direttive sono affini tra loro e agiscono sulle righe che contengono la prima stringa, mentre la seconda stringa va lasciata vuota. Precisamente:
- direttiva U: rende maiuscola l'intera riga.
- direttiva L: rende minuscola l'intera riga.
- direttiva M: in tutte le parole della riga l'iniziale è resa maiuscola e i rimanenti caratteri sono resi minuscoli.
Il comportamento è diverso se la seconda stringa è non vuota. In questo caso il contenuto della prima stringa è irrilevante e la direttiva specificata viene applicata a tutte le righe. Ad esempio, con la seguente corrispondenza le parole vengono scritte con la sola iniziale maiuscola:
*()x()M
Avvertenza.
Queste tre direttive non sono applicabili ai file in formato UTF-8 [¶7.16].
Se ad una direttiva di riga si aggiunge la direttiva
X, la restrizione sul numero di caratteri viene esclusa. Ad esempio, la prossima corrispondenza rende maiuscole le intere righe che contengono la parola
Capitolo indipendentemente dalla loro lunghezza:
Capitolo()() U X
Le corrispondenze che includono le direttive di riga ammettono la sostituzione insensibile alle maiuscole/minuscole (direttiva
I) e la presenza del jolly.
Queste corrispondenze vanno preparate con particolare attenzione, avendo cura che la prima stringa contenga una parola o frase che sia specificamente mirata all'effetto desiderato. Inoltre si sconsiglia decisamente di impiegarle con i file che non sono di puro testo.
Tenere ben presente che nessuna direttiva di riga ha effetto nei due casi seguenti:
-
(se non è usata la direttiva X) quando una riga, pur contenendo la stringa da sostituire, ha lunghezza maggiore del parametro Limitazione sostituzione riga.
-
quando la prima stringa della corrispondenza contiene un ritorno a capo. Più precisamente vengono ignorate le sostituzioni del tipo seguente (al posto dei puntini immaginare caratteri a piacere):
...$CR...()...()R
...$CR...()()U
8.6. Direttiva X
La direttiva
X può essere usata solo insieme con le direttive di riga
R,
U,
L,
M [¶8.5]
e con la direttiva
! [¶8.13], in tutti gli altri casi è ignorata.
Essa esclude le restrizioni cui è soggetto il testo, la cui lunghezza non dovrebbe normalmente superare il valore dell'appropriato parametro (limitazione sostituzione riga e limitazione testo jolly, a seconda dei casi). Vedere i parametri di riga descritti in [¶4.6].
8.7. Direttive J e insiemi preimpostati per il jolly
Se la prima stringa di una corrispondenza contiene il jolly, occorre abbinare a quest'ultimo i caratteri che esso deve rappresentare in quella corrispondenza
[¶7.6].
Per effettuare l'assegnazione sono previste due possibilità.
- Specificare un insieme esplicito di caratteri
-
Dopo il secondo separatore scrivere l'elenco dei caratteri desiderati racchiuso tra virgolette. Esso deve comparire a destra di tutte le eventuali direttive. Si possono omettere le virgolette finali se l'elenco termina con un carattere diverso da Spazio. Sono ammessi i caratteri di controllo nella forma appropriata mentre il simbolo per la sequenza di ritorno a capo, se presente, viene acquisito letteralmente).
Nota.
Per compatibilità con la versione MS-DOS, è consentito specificare l'insieme esplicito iniziando l'elenco dei caratteri con una parentesi graffa { in luogo delle virgolette.
- Usare le direttive J
-
Queste direttive sono costituite dalla lettera J seguita immediatamente da un numero compreso fra 0 e 999. Ogni numero rappresenta un insieme di caratteri che si può preimpostare
nella sezione [CONFIG] del file di inizializzazione o delle tabelle con una delle chiavi Jolly0 ... _Jolly999.
Ogni corrispondenza può ospitare direttive J in numero a piacere.
L'insieme abbinato al jolly per quella corrispondenza è ottenuto riunendo tutti gli insiemi preimpostati aventi i numeri indicati nelle direttive
J presenti e aggiungendo quelli dell'elenco esplicito tra virgolette. Notare che sono considerati una volta sola eventuali caratteri ripetuti e quindi non ha importanza se ci sono delle sovrapposizioni fra gli insiemi (tuttavia in certi casi potrebbe essere significativo l'ordine in cui sono disposti i caratteri).
Nell'insieme di caratteri esplicito è possibile includere variabili utente opportunamente definite.
Tutti i caratteri abbinati al jolly sono composti da un byte singolo [¶7.16].
Gli insiemi preimpostati che hanno numero da 0 a 9 possono essere specificati omettendo la lettera J, vale a dire che in luogo di J0 ... J9 si può scrivere rispettivamente 0 ... 9.
Inoltre J01 e J001 sono sinonimi di J1 (similmente per gli altri insiemi).
Si consiglia di riservare al file di inizializzazione un certo intervallo di numeri per gli insiemi preimpostati per il jolly, in modo che essi servano a indicare gli insiemi di caratteri di uso più frequente, e di impiegare sempre nelle tabelle numeri al di fuori di quell'intervallo. Nel file di inizializzazione della distribuzione originale sono
definiti gli insiemi preimpostati standard descritti nel prossimo prospetto.
0 |
caratteri di controllo (codice da 0 a 31) |
1 |
caratteri alfabetici maiuscoli A-Z |
2 |
caratteri alfabetici minuscoli a-z |
3 |
caratteri numerici 0-9 |
4 |
caratteri non alfanumerici con codice da 32 a 127 |
5 |
lettere accentate italiane secondo la tabella 850 (MS-DOS) |
6 |
tutti i caratteri con codice da 128 a 255 |
7 |
lettere accentate italiane secondo la tabella ANSI (Windows) |
La seguente corrispondenza, che presuppone l'adozione degli insiemi preimpostati standard, inserisce un ritorno a capo dopo ogni punto seguito da uno spazio e poi da una lettera maiuscola (direttiva
J1) o da un carattere numerico (direttiva
J3):
. @().$CR@()J1J3
Ciascuna delle due prossime corrispondenze equivale alla precedente (i caratteri numerici tra virgolette nella seconda sono considerati come semplici caratteri ed equivalgono alla direttiva
J3 dell'esempio precedente):
. @().$CR@()13
. @().$CR@() 1 "0123456789"
Normalmente la prima stringa di una corrispondenza non dovrebbe essere una porzione della seconda. In particolare questo vale se si utilizza il jolly e se i caratteri eccedenti che si trovano nella seconda stringa fanno parte anche dell'insieme di caratteri attribuiti al jolly.
Ad esempio, considerare la seguente corrispondenza:
@()c@() "ac"
Nel secondo giro di sostituzioni, quando il jolly assume il carattere
c, vengono sostituite anche le
c aggiunte nel primo giro e ciò produrrebbe un effetto moltiplicativo. Ad esempio, la parola
casa si trasformerebbe in
ccccascca.
Nei seguenti comandi il carattere jolly è trattato come un carattere ordinario:
. @().$CR@()* ##direttiva J o insieme esplicito mancanti
. ().$CR@()1 ##la prima stringa non contiene il jolly.
@abc()@ABC()3T ##è usata la direttiva T
@abc()@ABC()3E ##è usata la direttiva E
Se in una corrispondenza contenente il jolly è specificata la direttiva
I, i caratteri dell'insieme associato al jolly sono assunti esattamente. In altre parole, l'insensibilità alle maiuscole/minuscole vale solo per i caratteri effettivamente presenti nella prima stringa della corrispondenza e non per quelli rappresentati dal jolly.
8.8. Jolly multiplo e direttiva @
Nella prima stringa il jolly può comparire più volte, fino a un massimo di quattro. In questo caso si parla di jolly multiplo e si intende che ciascun jolly varia indipendentemente nell'insieme di caratteri prestabilito. Nella seconda stringa il jolly deve comparire un numero di volte non superiore a quello della prima stringa (per le occorrenze eccedenti il jolly viene trattato come un carattere ordinario).
In presenza di jolly multiplo l'elaborazione può diventare molto lenta. Ad esempio, se il jolly è presente tre volte e l'insieme è costituito da tutti i caratteri maiuscoli e minuscoli e dalle cifre da 0 a 9 (62 caratteri) la corrispondenza equivale a 62^3=238328
corrispondenze ordinarie.
Normalmente l'associazione fra i caratteri jolly segue l'ordine in cui essi compaiono nelle due stringhe andando da sinistra verso destra: il primo jolly della prima stringa è messo in corrispondenza con il primo jolly della seconda stringa, il secondo con il secondo e così via. In altri termini, l'associazione segue lo schema indicato nella prossima tabella fino al numero di caratteri jolly presenti.
Associazione fra caratteri jolly in caso di jolly multiplo
STRINGA 1 |
STRINGA 2 |
Jolly 1 |
Jolly 1 |
Jolly 2 |
Jolly 2 |
Jolly 3 |
Jolly 3 |
Jolly 4 |
Jolly 4 |
Se la prima stringa contiene un numero
n1 di caratteri jolly maggiore del numero
n2 di jolly presenti nella seconda stringa, l'associazione di cui sopra sussiste solo per i primi
n2 caratteri jolly, mentre i jolly in eccesso della prima stringa non sono abbinati a nulla. È ammesso anche che
n2 sia uguale a
0, cioè che il jolly non compaia affatto nella seconda stringa.
I prossimi esempi utilizzano un jolly doppio per correggere alcuni errori tipici di un programma OCR, dove è frequente lo scambio fra 1, l e I (ipotizzando l'impiego degli insiemi preimpostati standard):
@1@()@I@()1 ##sostituisce 1 con I se compreso fra maiuscole
@l@()@I@()1 ##sostituisce l con I se compreso fra maiuscole
@I@()@l@()2 ##sostituisce I con l se compreso fra minuscole
@1@()@l@()2 ##sostituisce 1 con l se compreso fra minuscole
@I@()@1@()3 ##sostituisce I con 1 se compreso fra numeri
@l@()@1@()3 ##sostituisce l con 1 se compreso fra numeri
La normale associazione descritta più sopra può essere modificata utilizzando una permutazione che si definisce con la direttiva
@ seguita da un opportuno numero. Tale numero deve essere composto in base alle regole indicate di seguito.
- Le cifre rientrano nell'intervallo che va da 1 a n1, il numero di occorrenze del jolly nella prima stringa.
- Il numero di cifre non supera n2, il numero di occorrenze del jolly nella seconda stringa.
- Le cifre devono essere una diversa dall'altra.
La prima cifra indica il numero del jolly della prima stringa che viene associato al primo jolly della seconda stringa, la seconda cifra indica il numero del jolly della prima stringa che viene associato al secondo jolly della seconda stringa e così via. La prossima tabella mostra un esempio di associazione in caso di jolly triplo.
Associazione fra caratteri jolly in presenza della direttiva @231
STRINGA 1 |
STRINGA 2 |
Jolly 2 |
Jolly 1 |
Jolly 3 |
Jolly 2 |
Jolly 1 |
Jolly 3 |
Se la seconda stringa ha un numero di jolly minore della prima, la colonna di destra della tabella precedente va letta mettendo uno spazio vuoto al posto dei jolly in eccesso, sopprimendo pertanto le relative righe. Ad esempio, se la seconda stringa ha un solo jolly, significa che il terzo e il primo jolly della prima stringa non hanno un corrispondente, cosicché la tabella si riduce alla sola prima riga e la direttiva viene interpretata come
@2. Durante l'elaborazione, in caso di riscontro, i caratteri che il primo e terzo jolly vanno via via assumendo potranno solo essere cancellati.
Normalmente la direttiva @ è ignorata quando essa è priva del numero che definisce la permutazione (in tal caso è adottata l'associazione secondo l'ordine naturale).
Fa eccezione solo il caso in cui la prima stringa contiene due jolly e la seconda stringa ne contiene uno (ciò per mantenere la compatibilità con la versione di PULISCI per MS-DOS). In questo caso la direttiva costituita dal solo carattere @ equivale implicitamente alla direttiva @2, come nell'esempio seguente:
c@n@()cen@()?2@
Con questa corrispondenza le stringhe
ccna e
cona sono trasformate in
cena,
ccne e
cone in
cene,
ccno e
cono in
ceno, eccetera. Se non fosse presente la direttiva
@ l'effetto sarebbe diverso perché, ad esempio,
ccna diventerebbe
cenc,
cona diventerebbe
ceno e così via.
Nell'esempio si è messa anche la direttiva
? per attivare la richiesta di conferma alla sostituzione (ad esempio, non è ragionevole sostituire
vicino con
viceno).
Nota.
In caso di violazione delle regole indicate più sopra, il numero che definisce la permutazione viene troncato al primo errore e le eventuali cifre mancanti vengono completate dal programma in modo naturale. Ad esempio, se la prima stringa contiene un jolly triplo, la direttiva @341 viene troncata a partire da 4 e completata come @312.
8.8.1. Criticità del jolly multiplo
Le corrispondenze che utilizzano il jolly multiplo vanno studiate con particolare attenzione cercando di valutarne l'effetto a priori.
-
Un effetto probabilmente inatteso può verificarsi con la seguente corrispondenza che utilizza un jolly doppio:
@x@()@z@() "23"
Nel testo 2x2x2x2 solo la prima e la terza x vengono sostituite con z e la stringa viene trasformata in 2z2x2z2.
Ciò accade per una sorta di accavallamento di più porzioni del tipo@x@ e per la ripetizione del carattere 2. In questa situazione, infatti, delle quattro corrispondenze che si ottengono espandendo il jolly, una sola è efficace e precisamente:
2x2()2z2()
In altri termini, qui il comportamento è lo stesso che si avrebbe effettuando la sostituzione con un editor.
-
Con riferimento alla corrispondenza con jolly doppio dell'esempio precedente, nel testo 2x3x2x2 tutte e tre le x vengono sostituite e la stringa diventa 2z3z2z2. In questo caso due dei quattro cicli sono efficaci:
2x2()2z2()
3x2()3z2()
Da questa osservazione deduciamo che, per sostituire anche la x intermedia nel testo dell'esempio precedente, possiamo aggiungere la direttiva N per iterare la corrispondenza due volte [¶8.14]:
@x@()@z@() n2 "23"
-
La seguente corrispondenza è utile perché sostituisce 1 con I se compreso fra maiuscole:
@1@()@I@() J1
-
In generale ogni corrispondenza dovrebbe sempre prevedere il cambiamento di qualche carattere esplicito. Ad esempio, la seguente corrispondenza, pur essendo formalmente ammissibile [¶8.18], non ha senso perché non produce alcun effetto e per di più provoca un carico rilevante di elaborazione:
@o@()@o@() J1J2J3
-
A volte è significativo l'ordine in cui sono disposti i caratteri nell'insieme abbinato al jolly.
Ad esempio la seguente corrispondenza lascia invariate le parole rosso e prosciutto:
@o@()@o@() @21 "rs"
Ciò accade perché avviene un doppio scambio di r con s. Si provi però a modificare l'insieme abbinato al jolly nel modo seguente:
@o@()@o@() @21 "sr"
Si noterà che rosso diventa sorso e prosciutto diventa psorciutto.
Infatti, in questo caso, i quattro cicli sostituiscono ai due jolly rispettivamente le coppie di valori (s,s), (s,r), (r,s) e (r,r) e solo nel terzo ciclo avviene lo scambio.
-
Notare che con la seguente corrispondenza EReg lo scambio avviene sempre una sola volta
(v. [¶8.15] e anche la tabella 1-I_EReg.tab [¶13]):
\c([rs])o([rs])()\02o\01() E
8.9. Direttive > e <
Queste due direttive hanno effetto se la corrispondenza cui sono applicate contiene il jolly, in caso contrario vengono ignorate. Esse operano l'una in
modo inverso dell'altra: la
> trasforma caratteri minuscoli in maiuscoli, la
< trasforma caratteri maiuscoli in minuscoli. I caratteri sui quali esse agiscono sono solo gli eventuali caratteri alfabetici associati al jolly. Ad esempio, le seguenti sostituzioni trasformano caratteri maiuscoli in minuscoli:
@()@()1<
@()@()< "AEIOU"
Nel primo caso sono resi minuscoli tutti i caratteri maiuscoli (insieme
1 predefinito), nel secondo caso sono rese minuscole solo le vocali.
L'effetto del secondo esempio si ottiene anche con la seguente corrispondenza dopo aver preimpostato l'insieme numero
100 con il comando
_Jolly100=AEIOU
@()@()J100<
Per il trattamento delle lettere accentate nelle corrispondenze v.
[¶8.10].
8.10. Trattamento delle lettere accentate nelle corrispondenze
I caratteri, in particolare le lettere accentate, possono assumere un diverso significato a seconda della codifica impiegata nel file. Nell'ambito del programma
WinPulisci il loro riconoscimento è significativo in presenza delle direttive
I [¶8.3],
<
e
> [¶8.9] e delle direttive di riga
U,
L,
M.
Sono possibili tre condizioni, identificate da un valore compreso fra 0 e 2 come precisato di seguito.
- Valore 0:
codifica OEM o tabella caratteri 850 di MS-DOS.
- Valore 1:
codifica ANSI di Windows (impostazione predefinita.)
- Valore 2:
scelta automatica.
Il valore suddetto può essere impostato come primo parametro nell'opzione
/U o nella chiave
_AnsiC (sezione
[CONFIG] del file di inizializzazione o delle tabelle).
Osservazioni.
- Con la condizione 0 l'esecuzione è sensibilmente rallentata quando sono usate le direttive I, <, > perché l'effetto è ottenuto mediante una simulazione
- Il riconoscimento automatico non può essere del tutto esente da errori. Si consiglia perciò di adottare la condizione 2 soltanto se si ha realmente la necessità di trattare file dell'uno e dell'altro tipo (è opportuno controllare al termine il file destinazione risultante).
-
In presenza delle direttive I, <, >, se il file è di tipo UTF-8, utilizzare nella prima stringa della corrispondenza solo caratteri ASCII con codici nell'intervallo 32-127.
Per quanto riguarda le direttive di riga
U,
L,
M, esse perdono significato con i caratteri multi-byte
[¶7.16] e pertanto, per impostazione predefinita, vengono ignorate se il file in elaborazione è di tipo UTF-8.
Notare che, se si pone a 0 il secondo parametro nell'opzione
/U o nella chiave
_AnsiC per forzarne l'applicazione, il file destinazione potrà risultare corrotto.
8.11. Direttiva T (traslitterazione)
Se è presente questa direttiva, la sostituzione viene eseguita con un metodo chiamato
traslitterazione. Ogni occorrenza di ciascun carattere nella prima stringa viene sostituita con il carattere della seconda stringa che occupa la stessa posizione, stabilendo cioè una correlazione biunivoca fra le due stringhe della corrispondenza. Perciò le due stringhe devono avere necessariamente la stessa lunghezza.
Il seguente esempio, che in realtà non ha molto senso, serve per chiarire il concetto.
pqrs()1234()T
Con la precedente corrispondenza le quattro lettere
p,
q,
r,
s vengono sostituite rispettivamente con le cifre
1,
2,
3,
4, cioè si ottiene lo stesso effetto delle quattro corrispondenze seguenti:
p()1()
q()2()
r()3()
s()4()
Altro esempio. Le due corrispondenze seguenti effettuano le stesse sostituzioni ma la prima viene eseguita con velocità molto maggiore della seconda:
ABCDEFGHIJKLMNOPQRSTUVWXYZ()abcdefghijklmnopqrstuvwxyz()T
@()@()1<
La sostituzione mediante traslitterazione è velocissima. Per contro, in particolare con stringhe di una certa lunghezza, occorre molta attenzione nel redigere la corrispondenza, dovendo rispettare rigorosamente la posizione dei caratteri.
La direttiva T è soggetta alle seguenti restrizioni:
- è ignorata se le due stringhe della corrispondenza hanno lunghezza diversa;
- annulla tutte le altre direttive, a eccezione di N, * e +;
- tratta il carattere jolly come un carattere ordinario.
8.12. Direttive W e =
Se è presente una di queste due direttive, la corrispondenza viene applicata solo se il programma
WinPulisci funziona in modalità
Word Star [¶12] (opzione
/W) ed è ignorata altrimenti
- Direttiva W
-
Impedisce che una sostituzione venga eseguita nel funzionamento ordinario (non Word Star). lo scopo è quello di assicurare una certa protezione ai file che non sono documenti Word Star.
- Direttiva =
-
In modalità Word Star impone al programma di non interpretare le stringhe della sostituzione, utilizzandole cioè esattamente come sono scritte nella tabella.
Nel prossimo esempio si suppone che WinPulisci stia funzionando in modalità Word Star (si deve supporre che la lettera accentata sia scritta con la codifica della tabella 850):
à()a`()
Il programma interpreta la a accentata facendola precedere da un carattere con codice 27 e seguire da un carattere con codice 28, come prescritto dai
documenti Word Star 4. Se però si vuole che la stringa venga sostituita senza subire alcuna interpretazione, deve essere scritta così:
à()a`()=
8.13. Corrispondenza speciale, direttiva !
Una corrispondenza è detta
speciale se la prima stringa contiene il jolly e se è dotata della direttiva
! (punto esclamativo).
Come risulta dall'esposizione fin qui fatta, normalmente il programma WinPulisci interpreta il jolly come un carattere singolo, che può assumere certi valori opportunamente prestabiliti. Nelle corrispondenze speciali il jolly @ rappresenta invece una porzione di riga che è formata dai caratteri compresi fra due date stringhe o delimitatori. Questo testo abbinato al jolly verifica le due condizioni seguenti:
- non contiene alcun ritorno a capo e
- la lunghezza non supera il valore del parametro limitazione testo jolly [¶4.6].
Però questa restrizione può essere esclusa aggiungendo la direttiva X [¶8.6].
Facciamo alcuni esempi.
- <@>()()!
-
Vengono cancellate tutte le stringhe fra i caratteri < e > (delimitatori compresi). Questa operazione può risultare utile per migliorare la leggibilità di un testo in formato HTML, dove le sequenze di controllo o tag sono stringhe di questo tipo (la sostituzione non ha luogo quando un tag inizia in una riga e termina in un'altra).
- <@>(){@}()!
-
Vengono intercettate le stesse sequenze del primo esempio. In questo caso, però, esse non vengono cancellate, ma i loro delimitatori vengono sostituiti rispettivamente con { e }. Si noti, ad esempio, che non tutti i caratteri < vengono sostituiti con { (volendo far ciò basterebbe servirsi di una corrispondenza ordinaria).
Ad esempio <<...> viene sostituito con <{...}. Ugualmente non ha luogo alcuna sostituzione se i due delimitatori si trovano su righe diverse o se fra essi sono interposti caratteri in numero maggiore del parametro Limitazione testo jolly.
- <@>(){@}()!12
-
Simile all'esempio precedente, con la differenza che qui vengono accettate solo le stringhe alfabetiche, cioè quelle composte con i caratteri appartenenti agli insiemi preimpostati standard 1 e 2.
- [@]()[@]()!> "abcdefghij"
-
Vengono rese maiuscole le stringhe racchiuse fra parentesi quadre e composte da caratteri compresi fra a e j.
- ##@$CR()$CR()!
-
In ogni riga viene cancellata la parte che inizia con ##, se esistente, conservando il ritorno a capo che la termina.
Se la porzione della prima stringa a destra del jolly è vuota, cioè se il jolly è l'ultimo carattere della prima stringa, il programma assume implicitamente che il delimitatore destro sia un ritorno a capo. Perciò la corrispondenza dell'ultimo esempio equivale alla seguente:
##@()$CR()!
Riassumiamo alcune caratteristiche delle corrispondenze speciali.
-
È consentito specificare un insieme di caratteri per il jolly, esplicito oppure mediante le direttive J0, J1 ... J999 [¶8.7].
In tal caso la corrispondenza è applicata purché il testo abbinato al jolly sia formato unicamente con caratteri appartenenti all'insieme specificato. Se non si specifica un insieme per il jolly, i caratteri che compongono il testo non sono soggetti a restrizioni.
-
La direttiva I, se presente, riguarda l'insensibilità alle maiuscole per il riconoscimento dei delimitatori e non per i caratteri che essi delimitano.
-
Sono ammesse le direttive < e >, il cui effetto è di rendere rispettivamente maiuscolo o minuscolo il testo compreso fra i delimitatori.
-
Normalmente il numero di caratteri compreso fra i delimitatori non deve superare il valore dell'apposito parametro limitazione testo jolly. Si può aggiungere la direttiva X per eliminare tale restrizione. Ad esempio la prossima corrispondenza sostituisce con parentesi graffe le parentesi quadre che racchiudono un testo indipendentemente dalla lunghezza della riga che lo contiene:
[@](){@}() !X
Notare che in ogni caso la corrispondenza speciale non pone limitazioni alla lunghezza complessiva delle righe. In particolare è ammesso che una corrispondenza speciale possa essere applicata più volte in una stessa riga.
-
la direttiva ! è ignorata in presenza di una fra le direttive di riga R, U, L, M;
-
La corrispondenza prompt [¶7.7]
può essere una corrispondenza speciale, v. l'opzione /! [¶10].
Attenzione.
La direttiva
! va usata con cognizione di causa: essa muta radicalmente il significato del jolly e può produrre alterazioni di entità imprevista nei file elaborati. Prestare particolare attenzione quando si utilizzano corrispondenze speciali in concomitanza con corrispondenze che contengono il jolly ordinario.
8.14. Iterazione di una corrispondenza. Direttiva N
Se viene specificata la direttiva
N seguita immediatamente da un numero
n, la corrispondenza viene iterata, cioè ripetuta, per un numero massimo
n di volte fino a quando la corrispondenza non genera più sostituzioni. Ad esempio, la seguente corrispondenza permette di ridurre le righe vuote consecutive a un'unica riga vuota (tre ritorni a capo consecutivi vengono sostituiti con due ritorni a capo per
20 volte):
$CR$CR$CR()$CR$CR()n20
Lo stesso effetto si otterrebbe replicando la corrispondenza priva della direttiva
N per venti volte consecutive. Tuttavia l'uso della direttiva
N rende il processo più efficiente perché, se a un certo punto la corrispondenza non provoca più sostituzioni, il programma la abbandona anche se non ha svolto il numero di iterazioni specificato.
Se la seconda stringa ha lunghezza minore della prima, il numero n non è particolarmente critico, dato che necessariamente dopo un certo numero di cicli le sostituzioni possibili si esauriscono. Ad esempio, salvo casi speciali con ritorni a capo consecutivi molto numerosi, la precedente corrispondenza produce le stesse sostituzioni e impiega lo stesso tempo della seguente:
$CR$CR$CR()$CR$CR()n9999
Osservazioni.
-
Il massimo valore consentito per n è 99999.
-
Si consiglia di non usare la direttiva N nelle corrispondenze che comportano un aumento di lunghezza della stringa o, comunque, di limitare in questi casi il numero n allo stretto indispensabile. Infatti l'iterazione potrebbe provocare l'arresto anomalo del programma per esaurimento della memoria.
Osservare il seguente esempio (che è un caso limite):
a()...a...a...()N10
L'intera prima stringa compare due volte come porzione della seconda stringa: dopo 10 passi di sostituzione, come richiesto con la direttiva N10, il frammento di un solo carattere diventerebbe una stringa di oltre mille caratteri (moltiplicazione per 2^10) e ciò porterebbe rapidamente alla saturazione della memoria. Una corrispondenza come questa viene rifiutata a priori dal programma, ma potrebbero presentarsi altre situazioni critiche imprevedibili.
-
È ammessa la direttiva N0 che equivale a disattivare la corrispondenza che la contiene. Questo è un modo per mantenere nella tabella qualche corrispondenza che può servire da traccia o da promemoria nel corso di prove.
-
La direttiva N1 è inutile: chiede di applicare la corrispondenza una volta, che è la condizione normale.
8.15. Espressioni regolari. Direttiva E
Questo paragrafo e il prossimo richiedono una conoscenza di base delle
espressioni regolari (regex).
WinPulisci prevede un limitato uso delle espressioni regolari.
Una corrispondenza viene elaborata con la tecnica delle espressioni regolari allorché in essa è specificata la direttiva E.
Per distinguerle da quelle ordinarie, indichiamo le corrispondenze di questo tipo come corrispondenze EReg.
Le regole per comporre le due stringhe della corrispondenza sono diverse da quelle delle corrispondenze ordinarie di WinPulisci [¶8.16].
Ad esempio, l'effetto della seguente corrispondenza ordinaria
. @().$CR@()1
può essere ottenuto anche con una corrispondenza
EReg:
\c\. ([A-Z])().\r\n\01() E
Alcune osservazioni.
-
Nelle corrispondenze EReg tutte le direttive sono ignorate, ad eccezione di N, *, + [¶8.4]. In particolare, le corrispondenze EReg non possono essere rese interattive (direttiva ?).
Esse sono invece compatibili con la funzione di taglio [¶4.4].
-
Se qualche corrispondenza usata durante l'elaborazione è di tipo EReg, il parametro Auto [¶4.7 viene disattivato e viene adottato il ritorno a capo ordinario di Windows, formato dalla coppia di caratteri ASCII 13 e 10.
-
Anche nelle corrispondenze EReg è ammesso l'uso di variabili utente, che vengono attualizzate durante l'acquisizione delle tabelle.
-
Molte corrispondenze previste da WinPulisci possono essere tradotte in forma di corrispondenze EReg. Fanno eccezione le corrispondenze contenenti le direttive < e > come nel seguente esempio:
. @(). @()> 2
Notare comunque che le corrispondenze EReg possono diventare molto lente su file grandi [¶15.1].
-
Le corrispondenze EReg possono essere in numero arbitrario ed esse possono coesistere in una stessa tabella con le corrispondenze ordinarie. Notare però che, benché l'uso misto sia consentito, potrebbero verificarsi situazioni di difficile interpretazione in caso di concomitanza con
corrispondenze che contengono le direttive di riga o la direttiva ! oppure con la reimpaginazione.
8.16. Uso delle espressioni regolari nelle corrispondenze EReg
Le corrispondenze
EReg si impostano nelle tabelle con la seguente sintassi:
mask()repl() E [*|+] [N...]
Come nelle corrispondenze ordinarie, le due stringhe vengono delimitate con il separatore
().
Il programma cerca nel file il testo che combacia con l'espressione regolare specificata nella prima stringa mask e ogni occorrenza trovata viene sostituita con repl.
mask è un modello di ricerca (search pattern) che può contenere caratteri veri (interpretati letteralmente) e metacaratteri (jolly per formare l'espressione regolare) e repl può contenere solo caratteri veri e tag del tipo \## (controbarra seguita da due cifre decimali).
Ogni tag corrisponde a un sottomodello contenuto nella stringa mask (v. il significato delle parentesi tonde più avanti). Ogni tag da \01 a \99 viene sostituito con il valore effettivamente individuato in corrispondenza di quel tag. Il tag \00 corrisponde all'intero testo trovato.
Dato che è possibile trovare in un testo più stringhe che combaciano, vengono individuate per prime le ricorrenze che iniziano nella posizione più a sinistra e viene scelta la più lunga di esse. Usare lo speciale operatore \s per forzare l'adozione della stringa trovata più breve (v. più avanti).
Gli operatori ^ e $ individuano rispettivamente l'inizio e la fine delle righe del testo (delimitate dalla sequenza standard di ritorno a capo, ASCII 13 e 10) oppure l'inizio e la fine del file.
Per impostazione predefinita, la ricerca di mask è svolta in modo insensibile alle maiuscole.
Caratteri consentiti
L'espressione specificata in
mask può contenere una combinazione di caratteri di testo ordinari e dei metacaratteri descritti nel seguente prospetto.
- . (punto)
-
Individua qualunque carattere ad eccezione della fine di riga.
- ^ (accento circonflesso o «caret»)
-
Individua la posizione di inizio riga, cioè la precedente coppia di caratteri ASCII 13 e 10 che delimitano la riga (questi caratteri non vengono sostituiti con repl). Vedere anche [^] più avanti per l'uso in una classe di caratteri.
- $ (dollaro)
-
Individua laposizione di fine riga, che può essere il successivo delimitatore di riga o la fine del file (i caratteri ASCII 13/10 che costituiscono il delimitatore della riga non vengono sostituiti con repl).
- | (pipe)
-
Specifica un'alternativa (l'operatore OR) grazie a cui si può avere il riscontro di una o dell'altra espressione ai lati dell'operatore. La precedenza è da sinistra a destra, secondo quanto incontrato nell'espressione.
- ? (punto interrogativo)
-
Specifica che è ammesso il riscontro con zero occorrenze o con una occorrenza del sottomodello precedente. Non si può usare con un tag.
- + (più)
-
Specifica che è ammesso il riscontro con una o più occorrenze del sottomodello precedente. Non si può usare con un tag.
- * (asterisco)
-
Specifica che è ammesso il riscontro con un numero arbitrario (zero o più) di occorrenze del sottomodello precedente. Non si può usare con un tag.
Ad esempio, per indicare una stringa qualunque di caratteri si usa .*.
Classi di caratteri
- [ ] (parentesi quadre)
-
Identificano una classe di caratteri definita dall'utilizzatore. Ognuno dei caratteri specificati consente un riscontro. Ad esempio [abc] trova riscontro in a, in b oppure in c.
Solo tre metacaratteri speciali sono riconosciuti nella definizione di una classe di caratteri: l'accento circonflesso (^) per i caratteri complementari, il trattino (-) per un intervallo di caratteri e la controbarra (\) in una delle seguenti sequenze di escape:
\\ \- \] \e \f \n \q \r \t \v \x##
Ogni altro uso della controbarra entro la definizione di una classe produce un'operazione non definita che va evitata.
- [-]
(trattino o meno)
-
Il trattino identifica un intervallo di caratteri da cercare. Per esempio, [a-f] individua a, b, c, d, e o f.
I caratteri dell'intervallo devono essere disposti nell'ordine naturale: ad esempio, [f-a] non trova alcun riscontro.
Gli elenchi di caratteri e uno o più intervalli di caratteri possono essere mescolati nella definizione di una stessa classe. L'inizio e la fine di un intervallo possono essere specificati con un carattere ordinario oppure con una delle sequenze di escape che iniziano con \ viste sopra.
In una classe sono ammessi intervalli multipli. Ad esempio [a-d2-5] individua a, b, c, d, 2, 3, 4 o 5.
Quando il trattino è preceduto da \ è trattato come un carattere ordinario. Ad esempio [a\-c] è un elenco, non un intervallo, e individua a, - o c perché \- è una sequenza di escape.
- [^] (accento circonflesso)
-
Quando l'accento circonflesso compare come primo elemento nella definizione di una classe, esso identifica una classe complementare di caratteri, nel senso che nessuno dei caratteri specificati troverà riscontro. Ad esempio [^abc] individua qualunque carattere ad eccezione di a, b o c.
Si può specificare un intervallo anche nella classe complementare. Ad esempio [^a-z] individua tutti i caratteri ad eccezione di quelli compresi fra a e z>.
Un accento circonflesso posto in posizione diversa dalla prima è trattato come un carattere ordinario.
Etichette e sottomodelli
- ( ) (parentesi tonde)
-
Le parentesi si usano per individuare un tag, o sottomodello, entro il modello di ricerca completo, e per tenere in memoria il testo individuato. Questo testo può essere recuperato nell'operazione di sostituzione, più avanti in mask oppure nella seconda stringa repl, e messo al posto delle etichette \01 ... \99, seguendo l'ordine da sinistra a destra delle parentesi di apertura.
Le parentesi possono essere usate anche per forzare la precedenza di valutazione con l'operatore di alternativa.
Ad esempio (Inizio)|(Fine)File troverebbe sia InizioFile sia FineFile
ma, senza le parentesi, Inizio|FineFile troverebbe soltanto InizioineFile e IniziFineFile.
Nota.
Le parentesi non vanno usate con ?, + e * perché qualche ripetizione potrebbe rendere ambiguo il valore identificato. Per individuare espressioni ripetute usare parentesi seguite da \01*.
Carattere di escape
Il carattere
\ (controbarra) è l'operatore di escape. Esso va anteposto ai caratteri
\,
-,
] quando occorre precisare che essi vanno trattati come caratteri ordinari. Inoltre la controbarra seguita da alcune lettere fa loro assumere un significato speciale, come descritto di seguito.
- \b (bordo di parola)
-
Identifica l'inizio o la fine di una parola, ove con parola si intende una sequenza di uno o più caratteri che includono caratteri alfabetici (A-Z o a-z), cifre (0-9) o il carattere _ (sottolineato). Ad esempio abc_123 è considerata una singola parola, mentre abc-123 contiene due parole.
- \c (ricerca sensibile alle maiuscole)
-
Senza l'operatore \c il comportamento predefinito è di ignorare la differenza fra maiuscole e minuscole.
A differenza di altre implementazioni delle espressioni regolari, l'insensibilità alle maiuscole è riconosciuta in tutte le operazioni, anche in un intervallo di caratteri come [6-Z. L'operatore \c può trovarsi in qualunque posizione entro mask.
- \e
-
ESC, ordinario carattere di Escape, ASCII 27.
- \f
-
FF, carattere formfeed, ASCII 12.
- \n
-
LF, carattere linefeed o newline, ASCII 10.
- \q
-
Doppie virgolette, ASCII 34: è previsto per facilitare l'inclusione in una stringa. Ad esempio: \qHello\q.
- \r
-
CR, carattere carriage-return, ASCII 13.
- \s
-
Shortest match character (carattere per l'identificazione più breve).
In presenza di \s in mask, viene restituita la stringa individuata più breve, in luogo della più lunga (come per impostazione predefinita). Per esempio, cercando abc.*abc in abcdabcabc, con l'impostazione predefinita si ottiene l'intera stringa mentre con la specificazione di \s si trova abcdabc. Questa opzione può provocare un leggero rallentamento dell'esecuzione.
Il contrassegno \s deve trovarsi all'inizio di mask.
- \t
-
TAB, carattere di tabulazione orizzontale, ASCII 9.
- \v
-
VT, carattere di tabulazione verticale, ASCII 11.
- \x##
-
Codifica per carattere esadecimale: a destra di \x indicare un codice ASCII mediante due cifre esadecimali. Per esempio \xFF indica il carattere esadecimale FF, corrispondente al codice ASCII decimale 255.
- \##
-
Numero di un tag (sottomodello): è valorizzato con i caratteri che corrispondono al tag numero ##, dove ## è un numero decimale da 01 a 99.
I tag sono numerati implicitamente da 1 a 99, in base alla posizione della parentesi di apertura, andando da sinistra verso destra. Ad esempio (.*)w\01 troverebbe abcwabc ma anche 456w456.
I tag non possono essere referenziati in anticipo, cioè se si fa riferimento a un tag non ancora definito, si presume un mancato riscontro.
Le espressioni regolari in
WinPulisci vengono elaborate secondo l'implementazione del compilatore
PowerBasic.
Le spiegazioni in questo paragrafo sono la traduzione di quelle fornite per l'istruzione
REGREPL,
dove
mask$ e
repl$ corrispondono rispettivamente a
mask e
repl nella sintassi indicata più sopra (gli altri elementi sono gestiti internamente da
WinPulisci).
Non vengono eseguiti controlli sulla sintassi delle espressioni regolari usate. In caso di errori non si ha alcuna sostituzione e non compaiono segnalazioni nel resoconto. La correttezza e l'effetto di un'espressione regolare possono essere verificati on-line nel
PowerBASIC Regular Expression Online Tester.
Torna al sommario.
8.17. Abolizione della direttiva C
Nel programma WinPulisci è stata abolita la direttiva C che era prevista nella versione per MS-DOS. Per mantenere la compatibilità con le vecchie tabelle è tuttavia consentito che essa venga specificata, ma la sua presenza è indifferente e non comporta conseguenze di alcun genere
(v. alcuni particolari tecnici nel [¶15.1]).
8.18. Corrispondenze ignorate
Una corrispondenza può essere scartata dal programma perché non ricorrono le condizioni per la sua applicazione.
Qui si fa riferimento soltanto a corrispondenze che, per quanto ignorate, sono espresse con una sintassi valida [¶7.3].
La finestra principale mostra il numero delle corrispondenze ignorate, il cui elenco è riportato nel file Tab-List.log [¶9].
Di seguito sono riassunti i casi principali nei quali una corrispondenza può risultare ignorata. In questi esempi, al posto dei puntini immaginare caratteri a piacere.
- 123()pqrs()T
-
Traslitterazione con stringhe di lunghezza diversa (direttiva T).
- ...$CR...()...()R
-
Direttiva R con prima stringa contenente il simbolo di ritorno a capo (analogamente per le altre direttive di riga).
- pqr()...()!
-
Corrispondenza speciale con prima stringa priva di jolly (direttiva !).
- ...()...()N0
-
Corrispondenza esplicitamente disattivata per effetto del numero 0 di iterazioni specificato con la direttiva N.
- pqr()pqr()
-
Le due stringhe sono identiche: ciò è ammesso in presenza della direttiva I, delle direttive di riga oppure se uno dei caratteri è il jolly.
- xyz()...()>
-
È specificata la direttiva > ma la prima stringa non contiene il jolly (analogamente con la direttiva <).
- a()...a...a...()N10
-
L'intera prima stringa compare due volte come porzione della seconda stringa e le 10 iterazioni porterebbero alla saturazione della memoria.
- ...()...()W
-
Essendo specificata la direttiva W, la corrispondenza viene ignorata se il programma è avviato senza l'opzione /W (analogamente con la direttiva =).
9. Resoconti
Il programma
WinPulisci fornisce due resoconti su file. La scrittura dei resoconti, che normalmente è attivata, può essere alternativamente inibita o riattivata premendo
Shift+F2 o
Alt+L nella finestra principale (vedere anche l'opzione
/L e il file di inizializzazione, come spiegato di seguito). I due resoconti possono essere consultati utilizzando gli appositi link presenti nelle finestre di aiuto contestuale del modo interattivo.
9.1. Resoconto dellelaborazione
Questo è il resoconto più importante e contiene un rapporto particolareggiato su ogni elaborazione svolta. Lo si può aprire dalla finestra principale premendo
Shift+F11.
Tra le altre informazioni, esso elenca il numero di sostituzioni effettuate singolarmente per ogni corrispondenza ed aggiunge a destra alcuni marcatori che ne richiamano le caratteristiche:
- I se la corrispondenza utilizza la direttiva I;
- se nella corrispondenza è stato attivato il jolly:
la lettera J, seguita dal carattere jolly sostitutivo fra parentesi, se esso è stato modificato localmente per quella corrispondenza;
! se la corrispondenza è speciale;
> o < se sono state incluse queste direttive;
in caso di jolly multiplo, se è applicata una permutazione, viene aggiunto @ con il numero che definisce la permutazione.
- R se la corrispondenza utilizza una fra le direttive di riga R, U, L, M;
- E se la corrispondenza è di tipo EReg (espressione regolare).
- T se la corrispondenza utilizza la traslitterazione.
- P se la corrispondenza è la corrispondenza prompt;
- P1 P2 ... P6 se la corrispondenza utilizza una di queste direttive.
- N con il numero richiesto di iterazioni se la corrispondenza utilizza la direttiva N.
- A se la corrispondenza è un'istanza di una corrispondenza in cui è stato impiegato un array.
- W se durante la sostituzione è avvenuta un'interpretazione Word Star;
- = se le stringhe non sono state interpretate, pur essendo attiva la modalità Word Star;
Normalmente sono escluse dall'elenco le corrispondenze per le quali il numero di sostituzioni eseguite è uguale a
0. Fa eccezione il caso in cui la corrispondenza è dotata della direttiva
? se durante l'elaborazione è stata sospesa l'interattività
[¶8.1].
Il tempo per le sostituzioni, riportato nel resoconto per i singoli file, è il tempo netto richiesto dalle sostituzioni: esso viene calcolato ignorando il tempo impiegato per la reimpaginazione e le eventuali pause occorse durante la richiesta di consenso (direttiva ?).
In caso di elaborazione multipla immediata, al termine delle informazioni relative ai singoli file, viene riportato un riepilogo del tipo seguente, dove il tempo totale indica il tempo complessivo impiegato per l'intera elaborazione di tutti i file:
File elaborati 160, identici all'originale 0, numero di errori 0
Tempo totale: 15.61 secondi
Viene inoltre riportato l'elenco delle variabili predefinite, attualizzate all'avvio dell'elaborazione (in caso di elaborazione multipla con i valori relativi all'ultimo file trattato).
Per impostazione predefinita il file con il resoconto dell'elaborazione si chiama WPulisci.log ed è collocato nella cartella di lavoro. Il suo nome può essere modificato con l'opzione /L dal prompt dei comandi [¶10]
o con la chiave KLogFile del file di inizializzazione [¶11].
Se già esiste, il file resoconto non viene cancellato e i nuovi risultati vengono aggiunti all'inizio, cosicché essi risultano scritti in ordine cronologico inverso. Il file resoconto conserva normalmente un numero massimo di 99 registrazioni (quelle eccedenti, che hanno data anteriore, vengono eliminate). Il numero massimo consentito di registrazioni può essere modificato con l'opzione /L o con la chiave KLogN del file di inizializzazione. Ad esempio, se si vuole che vengano mantenute solo le informazioni sull'ultima elaborazione svolta, includere la riga seguente nella sezione [CONFIG] del file di inizializzazione:
KLogN = 1
Il resoconto inizia con l'etichetta
[WinPulisci - Resoconto elaborazione] che ne permette l'identificazione: se un file preesistente non contiene questa etichetta, il resoconto non viene registrato.
9.2. Resoconto delle tabelle attive
Il resoconto delle tabelle attive, che può essere aperto dalla finestra principale premendo
Shift+F12, contiene le seguenti informazioni:
- l'elenco delle tabelle attive;
- l'elenco delle corrispondenze contenute nelle tabelle attive;
- l'elenco delle corrispondenze ignorate;
- le impostazioni al termine della scansione delle tabelle.
- L'elenco delle variabili utente con i rispettivi valori [¶7.9].
Il file viene generato ogni volta che interviene una variazione nella scelta delle tabelle attive (tasto
F3) oppure all'avvio del programma se c'è qualche tabella precaricata dal file di inizializzazione o con l'opzione
/T.
Il file resoconto delle tabelle attive è collocato nella cartella di lavoro con nome prefissato Tab-List.log. La sua generazione può essere abilitata o esclusa solo contestualmente alla scrittura del resoconto dell'elaborazione. Più precisamente, la scrittura del resoconto delle tabelle risulta attiva nel momento in cui per il resoconto dell'elaborazione è previsto un numero di registrazioni diverso da 0.
Torna al sommario.
10. Assegnazione di parametri dal prompt dei comandi
Il programma
WinPulisci può essere avviato dal prompt dei comandi di Windows con particolari opzioni utili per impostare alcuni valori di funzionamento. Questi e altri valori possono essere assegnati anche modificando il file di inizializzazione
WPulisci.ini, ma le impostazioni da riga di comando prevalgono su quelle corrispondenti che si trovano nel file di inizializzazione. Una terza possibilità è di includere tutte le opzioni desiderate nella variabile di ambiente
WPulisci, con la stessa sintassi valida al prompt dei comandi: in questo caso i valori immessi hanno priorità che è intermedia fra quella degli altri due casi.
È possibile indicare eventuali opzioni nelle proprietà del collegamento sul desktop. Ad esempio, se si vuole che WinPulisci sia sempre avviato con la funzione di reimpaginazione già attiva, basta scrivere nel campo Destinazione:
"%homedrive%\Programmi\WPulisci\WPulisci.exe" /r
Le opzioni disponibili sono descritte qui di seguito. Nell'elenco esse sono indicate in grassetto, mentre la parte a destra di ciascuna indica i suoi eventuali parametri. I parametri fra parentesi quadre sono facoltativi. Per i riferimenti ai comandi citati v.
[¶3.1], per i riferimenti al file di inizializzazione v.
[¶11].
- Sintassi e consultazione documenti
-
Sintassi: WPulisci.exe ?
Se la riga di comando contiene un punto interrogativo ?, compare una finestra di aiuto con la sintassi e le opzioni disponibili. Nella stessa finestra sono presenti anche i link alla documentazione, come avviene quando si preme F1 dalla finestra principale.
La stessa finestra di aiuto può essere aperta dalla finestra principale premendo Ctrl+F1.
- Funzione Auto
-
Sintassi: WPulisci.exe /A[0]
Questa opzione attiva il riconoscimento automatico della stringa di ritorno a capo nei file da elaborare. Se l'opzione è seguita da 0, la funzione viene disattivata.
V. il parametro Auto [¶4.7], nonché i comandi F5 e Alt+A e la chiave KAutoCRLF del file di inizializzazione.
- Parametro Conserva
-
Sintassi: WPulisci.exe /Cn
Imposta i> il parametro Conserva al valore n, che può variare fra 0 e 3 (predefinito 1). Esso determina il modo di cancellare o mantenere gli spazi a inizio e fine riga come illustrato in [¶4.7].
V. i comandi F7 e Alt+C e la chiave KLineSpc del file di inizializzazione.
- Cartella destinazione predefinita
-
Sintassi: WPulisci.exe /Dpercorso
Il percorso indicato, che deve essere già esistente, ssvolge il ruolo di cartella destinazione predefinita, in sostituzione di quella preimpostata durante la prima installazione [¶2.1].
Se il programma è avviato in modo batch, tale cartella è adottata anche come cartella destinazione corrente, purché tale ruolo non sia determinato specificando esplicitamente un percorso valido come secondo parametro. In quest'ultimo caso l'opzione /D non è utilizzata.
Se il programma è avviato in modo interattivo, l'opzione /D potrebbe impostare la cartella destinazione predefinita e lasciare invariata quella corrente. Ciò può accadere se nella sessione precedente è stato specificato un file destinazione la cui posizione è rimasta memorizzata nel file di inizializzazione.
V. le chiavi KDefDestDir, KDestDir e KDest del file di inizializzazione.
- Assegnazione di un editor
-
Sintassi: WPulisci.exe /Estringa
Specificazione di un editor a piacere, in sostituzione di quello che il programma adotta automaticamente durante la prima esecuzione.
La stringa deve includere il percorso del file eseguibile (racchiuso fra virgolette se contiene spazi) ed eventuali opzioni. Qui non è possibile includere opzioni che comprendono il carattere «/».
V. il comando Shift+F9 e la chiave KEditor del file di inizializzazione, oltre a [¶4.5].
- Modo interattivo
-
Sintassi: WPulisci.exe /F[1]
Forza l'attivazione del modo interattivo nel caso in cui, avendo specificato il file origine al prompt dei comandi, il programma verrebbe normalmente avviato in modo batch [¶5].
Il modo interattivo può essere forzato anche con un'elaborazione multipla, cioè quando il primo parametro è il nome di una cartella o una specificazione contenente caratteri jolly [¶4.10]:
in questo caso l'opzione da utilizzare è /F1.
Infatti l'elaborazione multipla non è ammessa in presenza della semplice /F, con cui una siffatta specificazione di file viene ignorata lasciando vuoto il campo File Orig.
- Elaborazione multipla differita
-
Sintassi: WPulisci.exe /G
I parametri di questa opzione non vengono documentati perché servono unicamente per il controllo di coerenza del file batch abbinato all'elaborazione multipla differita [¶4.10].
L'opzione richiede obbligatoriamente che vengano specificati sulla riga di comando sia il file origine sia il file destinazione con le seguenti restrizioni:
-
il primo parametro deve essere un percorso completo (cioè non relativo alla cartella origine);
-
il secondo parametro non deve essere un nome di cartella, cioè non deve terminare con \.
Contrariamente al comportamento consueto, in presenza dell'opzione /G la destinazione specificata come secondo parametro è considerata relativa alla sottocartella multi\ della cartella destinazione. Per questo nel percorso non è possibile includere la lettera di unità.
Se i controlli hanno esito positivo, è abilitata la creazione delle sottocartelle mancanti nella cartella destinazione.
L'opzione /G non ha una controparte nel file di inizializzazione.
- Opzioni da inserire al volo
-
Sintassi: WPulisci.exe /I
Prima della normale esecuzione, tanto interattiva quanto batch, viene proposto l'inserimento di ulteriori opzioni. Ad esempio, se inclusa nelle proprietà del collegamento che avvia il programma, questa opzione permetterebbe all'utilizzatore di aggiungere o di modificare di volta in volta i parametri desiderati.
- Aggiustamento orario del file destinazione
-
Sintassi 1: WPulisci.exe /Jn
Sintassi 2: WPulisci.exe /Janno,mese,giorno,ore,minuti,secondi
Il parametro può essere costituito da un singolo numero oppure da sei numeri separati da virgole che indicano data e ora [¶4.11].
Per impostazione predefinita (valore -1) il file destinazione assume l'orario attuale.
V. la chiave _TSAdj del file di inizializzazione e delle tabelle.
- Codici di controllo ammessi
-
Sintassi: WPulisci.exe /Klista
La lista è costituita da un elenco di numeri da 0 a 31 che indicano i codici ASCII dei caratteri di controllo ammessi nel file origine [¶7.5].
V. la chiave _Codici
nella sezione [CONFIG] del file di inizializzazione o delle tabelle [¶7.2].
- File resoconto
-
Sintassi: /L[0]|[n][,percorso]
Controlla la scrittura dei resoconti su file. Se si indica /L0 la scrittura di entrambi i resoconti è disabilitata. In caso contrario si possono immettere due parametri separati da virgola come indicato di seguito.
-
un numero n>0 che determina il numero di registrazioni che vengono conservate nel resoconto dell'elaborazione durante le varie operazioni. La presenza di questo numero diverso da 0 comporta anche la scrittura del resoconto delle tabelle.
-
Il percorso del file per il resoconto dell'elaborazione: se il percorso specificato non include il nome della cartella, il file resoconto viene collocato nella cartella di lavoro. Invece, se si indica solo un nome di cartella, il file assume il nome WPulisci.log nella cartella specificata.
L'impostazione predefinita è /L99,WPulisci.log.
L'opzione /L senza parametri attiva la scrittura dei resoconti con i valori predefiniti o, eventualmente, con quelli specificati nel file di inizializzazione (chiavi KLogFile e KLogN).
V. anche Shift+F2 e Alt+L nella finestra principale.
- Profondità del percorso per elaborazione multipla
-
Sintassi: /Mn
Il numero n indica la profondità cui si estende la scansione delle sottocartelle in un'elaborazione multipla [¶4.10].
Il valore predefinito è 1
V. la chiave KMaxScanLv del file di inizializzazione.
- Parametri di riga
-
Sintassi: /N[l][,[p][,[r][,s]]]
l e p rappresentano rispettivamente la lunghezza di riga e la lunghezza parola a fine riga (reimpaginazione),
r indica la Limitazione sostituzione riga (direttive di riga),
s indica il parametro limitazione testo jolly (corrispondenze speciali).
V. i tasti Shift+F3 o Alt+K, [¶4.6] e la chiave KParLin del file di inizializzazione.
- Cartella origine predefinita
-
Sintassi: WPulisci.exe /Opercorso
Il percorso indicato, che deve essere già esistente, ssvolge il ruolo di cartella origine predefinita, in sostituzione di quella preimpostata durante la prima installazione [¶2.1].
Se il programma è avviato in modo batch, tale cartella è adottata anche come cartella origine corrente, purché tale ruolo non sia determinato specificando esplicitamente un percorso valido come primo parametro. In quest'ultimo caso l'opzione /O non è utilizzata.
Se il programma è avviato in modo interattivo, l'opzione /O potrebbe impostare la cartella origine predefinita e lasciare invariata quella corrente. Ciò può accadere se nella sessione precedente è stato specificato un file origine la cui posizione è rimasta memorizzata nel file di inizializzazione.
V. le chiavi KDefOrigDir, KOrigDir e KOrig del file di inizializzazione.
- Cartella delle tabelle
-
Sintassi: WPulisci.exe /Ppercorso
In questa cartella vanno collocate tutte le tabelle. Al momento della prima installazione essa è la sottocartella tab della cartella di lavoro [¶2.1].
V. la chiave KTabDir del file di inizializzazione.
Nota. La lettera P è dovuta al fatto che nella versione per MS-DOS le tabelle erano poste nella stessa cartella del programma.
- Livello di verbosità dei messaggi
-
Sintassi: /Qn
Determina la quantità di messaggi a schermo nel corso dell'elaborazione. Il parametro n può variare da 0 a 5 con il significato illustrato nel seguente prospetto (a valori minori corrispondono informazioni più particolareggiate):
-
5 = nessun messaggio e la cartella destinazione, se non altrimenti specificata, è la cartella corrente.
-
4 = nessun messaggio e segnalazioni acustiche disattivate.
-
3 = compare il contatore con la percentuale di lavoro svolto.
-
2 = sono abilitati i messaggi di errore.
-
1 = i risultati sintetici vengono visualizzati al termine dell'elaborazione.
-
0 = (valore predefinito) sono mostrati tutti i messaggi, compresa la richiesta di consenso prima di cancellare un file.
Questo parametro non può essere impostato con il file di inizializzazione.
>Nota.
L'opzione /Q5 può essere considerata la sintesi di /Q4 e /D.\ (cartella corrente, secondo il significato usuale di Windows). L'opzione /Q5 potrebbe essere usata per forzare la scrittura del file destinazione nella cartella corrente se, per problemi del sistema, il file elaborato dovesse andare a finire nella cartella destinazione predefinita malgrado l'impiego dell'opzione /D.\.
- Attivazione della reimpaginazione
-
Sintassi: WPulisci.exe /R
abilita la funzione di reimpaginazione [¶4.3].
Può essere necessario adattare i parametri di riga[¶4.6], eventualmente usando l'opzione /N.
V. i comandi Shift+F6 o Alt+R. Questo parametro non è conservato nel file di inizializzazione.
- Segnalazioni acustiche
-
Sintassi: WPulisci.exe /S0|vol
Il volume, un numero da 0 a 100, esprime in percentuale l'intensità delle segnalazioni acustiche. Il valore 0 implica la soppressione dei suoni.
V. i comandi Alt+S, F6, F11 e F12, nonché le chiavi KVolume e KSound nel file di inizializzazione.
- Attivazione tabelle
-
Sintassi: WPulisci.exe /Tlista
La lista è costituita da uno o più nomi di file tabella senza percorso e separati da spazi. L'estensione dei file tabella, normalmente .tab, è facoltativa perché viene assunta implicitamente. Se un nome di file contiene spazi, esso deve essere racchiuso tra virgolette.
L'opzione /T è particolarmente importante in modo batch [¶5].
Essa è utilizzabile anche se il programma viene avviato in modo interattivo: in tal caso viene annullato lo stato delle tabelle memorizzato nel file di inizializzazione e le tabelle specificate con l'opzione /T risultano attive, come si può verificare nella schermata di scelta delle tabelle.
- Trattamento lettere accentate maiuscole/minuscole
-
Sintassi: WPulisci.exe /Un[,m]
- Parametro n: specifica la codifica per il trattamento delle lettere accentate nelle corrispondenze [¶8.10].
Valori ammessi: 0=OEM (MS-DOS), 1=ANSI (Windows, predefinito), 2=scelta automatica.
- Parametro n: consentire le direttive di riga U, L, M in file UTF-8.
Valori ammessi: 0=Sì, 1=No.
V. la chiave _AnsiC nella sezione [CONFIG] del file di inizializzazione o delle tabelle.
- Verifica origine/destinazione
-
Sintassi: WPulisci.exe /V0|1|2
Abilita la verifica del file destinazione, che è confrontato con il file origine. Il comportamento è determinato dal valore specificato.
- Valore 0: la verifica non viene eseguita (condizione predefinita).
- Valore 1: la verifica viene eseguita e in caso di identità il file destinazione non viene generato.
- Valore 2: la verifica viene eseguita e il file destinazione viene generato comunque.
Può accadere che il file elaborato risulti diverso dall'originale anche se non sono state eseguite sostituzioni, ad esempio se sono stati eliminati spazi a inizio o fine riga in conformità allo stato del parametro Conserva.
Impostando il parametro a 1 o 2 si ha un leggero rallentamento dell'elaborazione.
V. la chiave KVerif del file di inizializzazione.
- Modo Word Star
-
Sintassi: WPulisci.exe /W
Abilita il trattamento dei file Word Star [¶12].
La condizione non può essere impostata con il file di inizializzazione.
- Estensione delle tabelle
-
Sintassi: WPulisci.exe /X[.]ext
Modifica l'estensione valida per i file tabella sostituendo l'estensione predefinita .tab con quella specificata a destra di /X (se si omette il punto iniziale, esso viene aggiunto implicitamente dal programma).
V.S il modo batch [¶5] e la chiave KExtTab nel file di inizializzazione.
- Protezione delle chiavi critiche
-
Sintassi: WPulisci.exe /Y[0]
Questa opzione attiva la protezione delle chiavi critiche. Se l'opzione è seguita da 0, la protezione viene annullata. Per impostazione predefinita la protezione è attivata.
V. i comandi Shift+F7 e Alt+Y e la chiave KProtDir del file di inizializzazione.
- Protezione delle cartelle critiche
-
Sintassi: WPulisci.exe /Z[0]
Questa opzione attiva la protezione delle cartelle critiche. Se l'opzione è seguita da 0, la protezione viene annullata. Per impostazione predefinita la protezione è attivata.
V. i comandi Shift+F8 e Alt+Z e la chiave KProtDir del file di inizializzazione.
- Attivazione del taglio
-
Sintassi: WPulisci.exe /+
abilita la funzione di taglio [¶4.4].
Questo parametro non è conservato nel file di inizializzazione.
- Corridpondenza prompt
-
Sintassi: WPulisci.exe /!stringa
La stringa indicata definisce la corrispondenza prompt [¶7.7].
L'opzione /! deve comparire nella riga di comando per ultima, a destra di qualunque altra opzione.
Se abbinata a opportune variabili di ambiente, la corrispondenza prompt può definire il cosiddetto array prompt [¶7.14].
La corrispondenza prompt oppure l'array prompt sono copiati negli appunti di Windows.
- Azzeramento inizializzazione
-
Sintassi: WPulisci.exe /0[C][T][V]
Esclude, tutta o in parte, la lettura del file di inizializzazione. Precisamente:
-
se usata da sola o con C, ignora la sezione [CONFIG] del file di inizializzazione, utilizzando di conseguenza i valori base predefiniti nel programma oppure quelli immessi nel comando di avvio con altre opzioni.
V. anche [¶11.4].
-
usata con T, ignora la sezione [TAB] e perciò, nel modo interattivo, azzera la scelta e l'ordine delle tabelle effettuati in sessioni d'uso precedenti.
-
usata con V, ignora la sezione [VAR] e perciò, nel modo interattivo, elimina le variabili utente preesistenti nel file di inizializzazione.
-
Per ripristinare tutte le impostazioni predefinite si usi l'opzione /0CTV e non si cancelli il file di inizializzazione [¶2.4].
Come sempre, se il programma è avviato in modo interattivo, al termine il nuovo stato viene memorizzato nel file di inizializzazione.
10.1. Codici di errorlevel
Al termine dell'elaborazione in modo batch,
WinPulisci restituisce un codice di errorlevel secondo lo schema indicato di seguito.
- 0
-
Nessun errore.
- 1
-
Errore generico in lettura/scrittura.
- 100
-
Il file origine non è convalidato, v. i codici dei caratteri di controllo ammessi [¶7.5].
- 101
-
Spazio insufficiente nell'unità destinazione.
- 102
-
Cartella destinazione protetta.
- 103
-
Specificazione non valida per il file origine.
- 104
-
Nome non valido per il file destinazione.
- 105
-
Dimensione del file origine troppo grande.
- 106
-
Disco non pronto.
- 107
-
Errore nella generazione della cartella destinazione.
- 108
-
Troppi file temporanei nella cartella destinazione.
- 200
-
Incoerenza del file batch nell'elaborazione multipla differita.
- 252
-
WinPulisci: installazione irregolare.
- 253
-
Nulla da elaborare: byte iniziale ... oltre la fine del file ...
- 254
-
Memoria RAM esaurita.
- 255
-
Operazione interrotta da tastiera.
Torna al sommario.
11. Il file di inizializzazione
Al termine di ogni sessione interattiva il programma
WinPulisci scrive nel file di inizializzazione
WPulisci.ini varie informazioni che utilizza nella sessione successiva per ripresentare la situazione in cui si trovava quando è stato terminato.
Nelle elaborazioni batch, invece, il file di inizializzazione viene soltanto letto e al termine non subisce modifiche.
Il file può anche essere modificato con il
Blocco Note di
Windows o con altro editor, accertandosi di mantenere la codifica ANSI.
La prima riga serve per identificare il file e deve iniziare con la seguente etichetta:
[WinPulisci]
Il file
WPulisci.ini è articolato in tre sezioni nelle quali la prima riga è rispettivamente
[CONFIG],
[VAR] e
[TAB].
11.1. Sezione [CONFIG]
Contiene i valori di alcuni parametri di funzionamento. I parametri sono memorizzati con righe del tipo seguente:
chiave = valore ##commento facoltativo
In ciascuna riga, la parte che inizia con la marcatura
## viene ignorata. La parte a sinistra di
= è la chiave identificativa del parametro, mentre a destra di
= è posto il corrispondente valore. Le chiavi si possono scrivere indifferentemente con lettere maiuscole o minuscole.
Segue un prospetto con la descrizione delle varie chiavi. Esse sono di due tipi, distinguibili dal loro primo carattere:
-
chiavi che iniziano con il carattere _ (sottolineato):
queste chiavi, elencate alla fine del prospetto, sono ammesse anche nelle tabelle [¶11.4].
I valori impostati con il file di inizializzazione svolgono il ruolo di valori predefiniti.
-
chiavi che iniziano con il carattere K:
impostano i valori di altri parametri di funzionamento del programma (sono elencate nella prima parte del prospetto).
La parte in grassetto corsivo è la chiave, mentre a destra di
=, è riportato il valore predefinito (se previsto). Le righe possono essere disposte anche in ordine diverso da quello indicato. Per le opzioni citate v.
[¶10].
- KVolume=35
-
Indica in percentuale il volume delle segnalazioni acustiche ed è un numero compreso fra 1 e 100 (opzione /S).
- KSound=1
-
Determina lo stato del parametro Suoni.
Se il valore è 1 le segnalazioni acustiche sono attive, se è 0 sono escluse (opzione /S).
- KIns=1
-
Determina la modalità di inserimento (valore 1) o di sostituzione (valore 0) per i dati immessi da tastiera.
- KQView=0
-
Determina la verbosità delle scritte nella finestra principale.
Con il valore 0 sono mostrate tutte le scritte, con il valore 1 vengono omessi il riepilogo delle tabelle e la riga di stato (tasto Alt+Q).
- KWebBrowser=PREDEF
-
Specifica la sigla del browser abbinato a WinPulisci [¶2.6].
Nella riga del file WPulisci.ini che contiene questa chiave sono riportate le sigle dei browser supportati dal sistema in uso.
- KAutoCRLF=0
-
Determina lo stato del parametro Auto (riconoscimento automatico della stringa di ritorno a capo).
Con il valore 1 la funzione è attiva, con 0 è inattiva [¶4.7
(opzione /A).
- KLineSpc=1
-
Determina lo stato del parametro Conserva (cancellazione degli spazi a inizio e fine riga).
Può variare da 0 a 3 [¶4.7
(opzione /C).
- KProtKey=1
-
Determina lo stato del parametro PrKey (protezione delle chiavi critiche).
Con il valore 1 la protezione è attiva, con 0 è disattivata [¶7.2.1].
(opzione /Y).
- KProtDir=1
-
Determina lo stato del parametro PrDir (protezione delle cartelle critiche).
Con il valore 1 le cartelle sono protette contro la scrittura, con 0 la scrittura è abilitata [¶4.7
(opzione /Z).
- KMaxScanLv=1
-
Indica la profondità cui si estende la scansione delle sottocartelle in un'elaborazione multipla. Deve essere maggiore o uguale di 0 [¶4.10]
(opzione /M).
- KOrig=
-
Nome dell'ultimo file origine specificato in una sessione interattiva.
- KDest=
-
Nome dell'ultimo file destinazione specificato in una sessione interattiva.
- KDefOrigDir=^\Orig\
-
Percorso della cartella origine predefinita (opzione /O).
Nota.
Ricordare che il carattere ^, se presente in un percorso di file o cartella come primo carattere, viene interpretato da WinPulisci come il percorso della cartella di lavoro.
- KDefDestDir=^\Dest\
-
Percorso della cartella destinazione predefinita (opzione /D).
- KOrigDir=^\Orig\
-
Percorso della cartella origine corrente (può essere diversa dalla cartella origine predefinita).
- KDestDir=^\Dest\
-
Percorso della cartella destinazione corrente (può essere diversa dalla cartella destinazione predefinita).
- KTabDir=^\Tab\
-
Percorso della cartella contenente le tabelle (opzione /P).
- KExtTab=.tab
-
Estensione dei file tabella (opzione /X).
- KViewTab=
-
Ultima tabella visualizzata nella schermata di scelta delle tabelle [¶4.1].
- KSrcStr=
-
Ultima stringa di ricerca nella schermata di scelta delle tabelle (F3).
- KEditor=
-
Specificazione dell'editor per l'apertura di file e tabelle [¶4.5] (opzione /E).
Oltre al percorso del file eseguibile (racchiuso fra virgolette se contiene spazi), indicare eventuali opzioni e il simbolo %f (che rappresenta il nome del file da aprire).
- KLogFile=^\WPulisci.log
-
Percorso del file per il resoconto dell'elaborazione [¶9.1] (opzione /L).
- KLogN=99
-
Se si specifica un numero diverso da 0, viene attivata la scrittura dei resoconti [¶9]
e inoltre tale numero indica il numero di registrazioni conservate nel resoconto dell'elaborazione. Con il valore 0 entrambi i resoconti sono disattivati.
(Opzione /L).
- KVerif=0
-
Se si specifica un numero diverso da 0, viene attivata la verifica del file destinazione per confrontarlo con il file origine: in caso di identità, con il valore 1 il file destinazione non viene generato (opzione /V).
- KParLin=80,0,80,80
-
Parametri di riga [¶4.6] (tasti Shift+F3 o Alt+K, opzione /N).
- KBrowDir
-
Ultima cartella visualizzata nella finestra di esplorazione delle unità disco [¶4.2].
- KMemoDir1= ... KMemoDir4=
-
Quattro cartelle memo che si memorizzano con i tasti da Shift+F5 a Shift+F8 nella finestra di esplorazione [¶4.2].
- KExtProc=pdf,rtf,doc,docx,log,ini,htm,rar,zip,7z,wav,mp3,ogg,ape,wma,flac,jpg,gif,avi
-
Specifica l'elenco delle estensioni dei file che si vuole vengano aperti con l'applicazione associata dal sistema al tipo di file. Elencare le estensioni separate da virgole. Non occorre indicare il punto iniziale ed è indifferente usare caratteri maiuscoli o minuscoli. Sono ignorate le estensioni dei file eseguibili (EXE, COM, DLL, eccetera).
I file di testo che hanno estensioni non comprese nell'elenco vengono aperti con l'editor impostato.
- _AnsiC=1
-
Specifica la codifica per il trattamento delle lettere accentate maiuscole/minuscole nelle corrispondenze [¶8.10] (opzione /U).
Valori ammessi: 0=OEM (MS-DOS), 1=ANSI (Windows, predefinito), 2=scelta automatica.
- _Delim=()
-
Separatore delle stringhe di cui è composta ogni corrispondenza [¶7.3].
Può essere al massimo di cinque caratteri, quelli eccedenti vengono ignorati.
- _Acapo=$CR
-
Simbolo che rappresenta la sequenza di ritorno a capo [¶7.4].
Può essere al massimo di cinque caratteri, quelli eccedenti vengono ignorati.
- _CarJol=@
-
Simbolo jolly (un singolo carattere) [¶7.6]:
non deve essere alfanumerico e deve essere diverso dal marcatore dei caratteri di controllo.
- _CtrlK=^0
-
Marcatore dei caratteri di controllo (primo carattere) [¶7.4]:
non deve essere alfanumerico e deve essere diverso dal simbolo jolly.
Il secondo carattere 0 specifica l'adozione della codifica con codici ASCII a due cifre (impostazione predefinita) [¶7.4].
- _BlIni=/..
-
Etichetta di inizio blocco [¶7.2].
- _BlFin=../
-
Etichetta di fine blocco [¶7.2].
- _Codici=0,7-13,26-27
-
Codici dei caratteri di controllo ammessi [¶7.5].
- _FRiga=.!?;:
-
Caratteri di fine riga per il controllo della reimpaginazione [¶7.2].
- _IRiga=; -*/#[_:@^07^09
-
Caratteri di inizio riga per il controllo della reimpaginazione [¶7.2].
- _TSAdj=-1
-
Determina l'orario del file destinazione. Per impostazione predefinita viene assegnato l'orario attuale [ 4.11]
(opzione /J).
- _Jolly0=
-
Definisce l'insieme preimpostato numero 0 da usare con le direttive J per costruire l'insieme abbinato al jolly. In modo analogo si usano le chiavi _Jolly1, ..., _Jolly999. Per gli insiemi preimpostati standard v. la tabella in [¶8.7]).
La sezione
[CONFIG] è ignorata all'avvio se si specifica l'opzione
/0.
11.2. Sezione [VAR]
Questa sezione è analoga alla sezione
[VAR] delle tabelle.
In essa vanno definite le variabili utente di uso generale seguendo le stesse regole illustrate in
[¶7.9].
Le definizioni non valide vengono ignorate e, al termine di ogni sessione interattiva, vengono eliminate.
La sezione [VAR] è ignorata se WinPulisci viene avviato con l'opzione /0V.
11.3. Sezione [TAB]
In questa sezione il programma registra, al termine di ciascuna sessione interattiva, le tabelle identificate durante la sessione stessa. Lo scopo è di memorizzare l'ordine delle tabelle e lo stato di attivazione di ciascuna tabella.
In ogni riga sono indicate come segue le informazioni che riguardano una tabella:
0,Nome di una tabella.tab
1,Seconda tabella.tab
0,Terza tabella.tab
Se il numero all'inizio è
0 significa che al termine della sessione la tabella non era attiva, se è
1 significa che essa era attiva.
Il nome della tabella va indicato senza percorso, dato che le tabelle sono tutte contenute nella cartella delle tabelle.
Non si deve modificare la sezione [TAB] se si apre il file di inizializzazione durante una sessione interattiva (Shift+F10).
La sezione [TAB] è ignorata se WinPulisci viene avviato con l'opzione /0T.
11.4. Chiavi comuni alle tabelle e al file di inizializzazione
Le chiavi della sezione
[CONFIG] delle tabelle
[¶7.2])
sono comuni al file di inizializzazione, tranne quelle che servono per impostare la funzione di taglio
[¶4.4].
Per tutti i comandi della sezione [CONFIG], un'assegnazione rimane in vigore durante l'elaborazione purché il parametro in questione non venga
modificato in qualche altra sezione [CONFIG], seguendo l'ordine di caricamento delle tabelle. Perciò è importante che le assegnazioni fatte nel file di inizializzazione e in una o più tabelle siano coerenti tra loro.
Un caso particolare, che fa eccezione, riguarda gli insiemi preimpostati per il jolly. Conviene riservare al file di inizializzazione un certo intervallo di numeri per quelli di uso più frequente e usare le tabelle quando si presenta la necessità di definire insiemi particolari.
Il programma adotta una restrizione per le quattro chiavi _Delim, _Acapo, _CarJol e _CtrlK che vengono acquisite dalle tabelle soltanto se la protezione delle chiavi critiche è disattivata [¶7.2.1].
Le chiavi rimanenti si possono impostare liberamente, ma sempre facendo in modo che nel gruppo di tabelle attive durante un'elaborazione i valori siano tra loro coerenti, pena conseguenze imprevedibili.
Torna al sommario.
12. File di testo Word Star
Il programma
WinPulisci consente tuttora di utilizzare la modalità
Word Star, che offre alcune facilitazioni per il trattamento di file prodotti con il programma
Word Star 4 per MS-DOS.
Come si è detto, in linea di principio WinPulisci è in grado di manipolare qualunque file. Tuttavia la preparazione delle tabelle può risultare abbastanza noiosa quando il file da elaborare è un file prodotto con un word processor, sia perché il testo viene normalmente codificato in modo particolare sia perché al testo vengono aggiunti numerosi caratteri di controllo.
Volendo elaborare file di tipo Word Star, occorre aggiungere l'opzione /W agli altri parametri eventualmente richiesti al prompt dei comandi.
Se l'esecuzione avviene in modo interattivo, la circostanza che la modalità Word Star è abilitata viene evidenziata nella finestra principale.
La facilitazione consiste nel fatto che nella preparazione delle tabelle l'utilizzatore non deve preoccuparsi di introdurre codifiche particolari per i caratteri, in quanto il programma converte automaticamente le stringhe secondo le necessità. Quindi, a parte l'aggiunta dell'opzione
/W al prompt dei comandi, Per la modalità Word Star vale generalmente quanto detto per il funzionamento ordinario, salvo quanto specificato qui di seguito:
- non sono utilizzabili le tabelle di aggiunta testo, le direttive E e T, le funzioni di reimpaginazione e di taglio;
- le direttive di riga R, U, L, M sono ammesse ma se ne sconsiglia decisamente l'uso (la modifica di un'intera riga potrebbe far perdere qualche codice di formattazione importante per il documento nella sua globalità);
- nei documenti prodotti con Word Star le lettere accentate sono codificate secondo la tabella 850 (MS-DOS) e pertanto lo stesso deve avvenire per le lettere accentate eventualmente presenti nelle corrispondenze.
I file risultanti dall'elaborazione in modalità
Word Star subiscono alcune modifiche, indipendentemente dal contenuto delle tabelle usate. In particolare vengono alterati alcuni caratteri con codice ASCII maggiore di
160 (normalmente quando precedono uno spazio) e vengono eliminati gli
spazi mobili (codice
160). Queste modifiche non sono irreversibili perché i caratteri originali possono essere ripristinati caricando il documento in
Word Star e impartendo l'apposito comando di riformattazione.
Al funzionamento in modalità Word Star sono collegate le due direttive W e =, che servono solo in casi particolari [¶8.12].
Torna al sommario.
13. Esempi di applicazione
Come nella versione per MS-DOS, l'applicazione classica di
WinPulisci è la correzione automatica degli errori sistematici di riconoscimento che si verificano nei file di testo ricavati con un programma
OCR abbinato ad uno scanner. Un'accurata preparazione delle tabelle di conversione, costruite dopo aver classificato gli errori in base al tipo di stampa del documento acquisito o ad altri fattori, consente la correzione dei testi in modo pratico e veloce, anche grazie alla possibilità di definire l'insieme delle corrispondenze in forma modulare.
Con il programma WinPulisci è anche possibile compiere varie manipolazioni dei file di testo, come mostrato negli esempi che seguono. Va però osservato che questo impiego del programma risulta particolarmente conveniente se è sistematico, cioè quando le sostituzioni sono numerose e la loro applicazione riguarda più file. In caso contrario conviene servirsi più semplicemente della funzione di ricerca/sostituzione presente in qualunque editor.
Le tabelle fornite a corredo (sottocartella Tab\) possono servire da spunto per l'utilizzo del programma. Riportiamo di seguito alcuni esempi. Vedere anche la breve descrizione all'inizio di ciascuna tabella e i file batch nella sottocartella Demo\ [¶13.1].
- Tabella 0EsempioImpostazioni.tab
-
È una tabella esemplificativa per illustrare la struttura e alcune caratteristiche generali, senza svolgere alcuna operazione.
- Tabella NoSillabazione.tab e file batch NoSillabazione.bat
-
Consentono di reimpaginare un testo stabilendo un determinato numero di caratteri per riga ed eliminando nel contempo la sillabazione a fine riga in modo che le due porzioni di parola vengano riunite. Si noti che la presenza a fine riga di un doppio trattino non indica la presenza di una sillabazione e quindi la tabella prevede il seguente accorgimento per proteggere questa sequenza affinché rimanga inalterata:
--$CR()--\02()
-$CR()()
... [altre eventuali corrispondenze]
--\02()--$CR()
La prima corrispondenza trasforma la sequenza da proteggere in una sequenza improbabile, poi si mettono le altre corrispondenze desiderate, infine si ripristina la sequenza originale. Questa tecnica di protezione può essere sfruttata in varie circostanze.
Cfr. la tabella NoACapo.tab.
Vedere anche il file sillab.bat che suggerisce un modo per effettuare le sostituzioni agendo su un collegamento posto nella cartella di sistema SendTo.
- Tabelle ANSI2DOS.tab e DOS2ANSI.tab
-
Convertono le lettere accentate dalla codifica ANSI di Windows alla codifica 850 di MS-DOS e viceversa. La nuova direttiva T,, impiegata in queste tabelle, utilizza un metodo efficiente e preciso chiamato traslitterazione [¶8.11].
- Tabelle Entity2ANSI.tab e ANSI2Entity.tab
-
Trasformano le entity
(à, é, ò, eccetera)
di un file HTML nei corrispondenti caratteri ANSI (à, é, ò, eccetera) e viceversa.
- Tabelle max2min.tab e min2max.tab
-
Trasformano le lettere maiuscole in minuscole e viceversa, comprese le lettere accentate secondo la codifica ANSI [¶8.10].
- Tabelle Accenti2Apo.tab, Accenti2ApoInverso.tab, Apo2Accenti.tab
-
Convertono le lettere accentate in lettere apostrofate o viceversa (Ad esempio in certi messaggi di posta elettronica le vocali accentate sono rese come apostrofate).
Ciò vale anche per file di testo che vengono condivisi fra sistemi operativi diversi, dove le difficoltà legate alle differenti codifiche dei caratteri inducono ad adottare l'uso delle lettere apostrofate. In quest'ultimo caso potrebbe essere utile attivare l'individuazione automatica della sequenza di ritorno a capo a causa del diverso trattamento che ne fanno i vari sistemi.
- Tabella AggiungiInfoFile.tab
-
Questa è una tabella di aggiunta testo nella quale sono definite alcune variabili utente. Sono anche utilizzate le variabili predefinite di WinPulisci.
- Tabelle UTF8ToANSI.tab e AggiungiBOMUtf8.tab
-
Sono utilizzate variabili utente per definire caratteri UTF-8 a più byte [¶7.16].
- Tabelle 1-I_EReg.tab e 1-I.tab
-
La tabella 1-I_EReg.tab utilizza la seguente espressione regolare per sostituire 1 con I quando preceduto da spazio o lettera maiuscola e seguito da lettera maiuscola:
\c([ A-Z])1([A-Z])()\01I\02() E
L'effetto di questa corrispondenza EReg è analogo a quello ottenibile con le due seguenti corrispondenze ordinarie (tabella 1-i.tab), dove la stringa delle consonanti maiuscole è assegnata alla variabile $M$ definita nella sezione [VAR]:
@1@()@I@() "$M$"
1@() I@() "$M$"
Il procedimento di sostituzione è diverso. L'espressione regolare esegue la sostituzione in un unico ciclo. Con la seconda tabella vengono applicate all'intero file tante sostituzioni quante sono le possibili assegnazioni dei caratteri al jolly.
In termini di velocità di elaborazione, se applicate a file piccoli le due tabelle sono sostanzialmente equivalenti, mentre la tabella che usa le corrispondenze ordinarie è molto più efficiente al crescere della grandezza del file.
- Tabella SoloBodyHtml.tab
-
Si utilizza il taglio delimitato da stringhe [¶4.4.1]
per eliminare tutta la parte iniziale di un file HTML che precede la sezione BODY. Prima di avviare l'elaborazione, attivare la funzione di taglio con Shift+F5 o Alt+P oppure includere da prompt l'opzione /+.
- Tabella html2txt.tab
-
Estrazione del testo da un file HTML.
In un file HTML, elimina l'intestazione (funzione di taglio) e la maggior parte dei tag.
Alcune corrispondenze utilizzano la direttiva E (espressione regolare).
Conviene attivare anche la tabella entity2ansi.tab per trasformare le entity HTML in normali caratteri ANSI.
- Tabella TagliaIntervallo.tab
-
Applicazione della funzione di taglio con il metodo dell'intervallo di byte.
Vengono caricati i primi 1000 byte e i caratteri di controllo sono trasformati secondo la codifica di WinPulisci. Se non si attiva la funzione di taglio (tasto Alt+P oppure opzione "/+") l'elaborazione viene svolta sull'intero file origine. In ogni caso, in particolare se il file origine è binario, il file risultante è di puro testo e risulta pertanto semplificata la ricognizione dei caratteri di controllo.
- Tabella SoloTesto.tab
-
Può servire, ad esempio, per estrarre da un file binario la parte di testo (messaggi di errore, eccetera). Come misura di sicurezza, il programma WinPulisci rifiuta l'elaborazione dei file con certe estensioni (.exe, .com, .dll, .ocx, .pif).
Perciò, volendo intervenire su un file di questo tipo, si deve operare su di una copia che abbia estensione diversa dalle suddette.
- Tabelle animali.tab, FormattaOrario.tab, NumeriRomani.tab
-
Esempi di impiego di array associati [¶7.11].
Nella sezione [CORR] di una tabella si definisce un blocco analogo al seguente, dove gli elementi degli array $x$ e $y$ sono separati da virgole:
ARRAY
$x$=pulcino,cavallo,leone,gatto
$y$=pigola,nitrisce,ruggisce,miagola
$x$()Il $x$ $y$()i
ENDARRAY
Con questa definizione le parole pulcino, cavallo, eccetera vengono trasformate rispettivamente in Il pulcino pigola, Il cavallo nitrisce, eccetera.
Vedere in [¶7.14] come assegnare array da prompt.
13.1. File batch dimostrativi
I file batch dimostrativi si appoggiano allo script ausiliario
WPulisci.vbs, lo stesso che viene posto sul desktop quando si installa
WinPulisci in un'unità removibile
[¶2.3].
. Il modo più semplice di utilizzare il programma da riga di comando consiste nel collocare uno o più file batch, insieme con lo script ausiliario, in una cartella che sia presente nel path di sistema. Si raccomanda di non utilizzare per questo scopo le cartelle di sistema come
C:\WINDOWS\system32 o simili ma di creare all'occorrenza un'apposita cartella, ad esempio
C:\UTIL, e di aggiungerla al path.
Lo script ausiliario fa sì che, sotto certe condizioni, il programma possa essere avviato anche se la cartella di installazione è cambiata in uno dei modi specificati di seguito.
-
In ambiente Windows XP, installazione nella cartella dei programmi.
Se la cartella di installazione è C:\Programmi\NomeCartella, compreso il caso predefinito C:\Programmi\WinPulisci, è consentito spostare l'intera cartella NomeCartella nella radice di qualunque unità, ad esempio D:\NomeCartella, G:\NomeCartella, eccetera.
-
In una versione qualunque di Windows, installazione al di fuori della cartella dei programmi.
Se la cartella di installazione è ospitata nell'unità X: con nome \PercorsoQualsiasi, è consentito spostare la cartella in un'altra unità mantenendone il percorso, ad esempio L:\PercorsoQualsiasi.
Un caso particolare di questa situazione riguarda l'installazione in un'unità removibile, la cui lettera di unità potrebbe cambiare per vari motivi nel corso di successivi riavvii del calcolatore.
Nei casi descritti, l'avvio del programma può avvenire anche mediante lo script
WPulisci.vbs posto direttamente sul desktop o mediante un collegamento a una copia dello script stesso posta in una cartella prefissata dall'utilizzatore (scegliere quest'ultima alternativa per poter aggiungere qualche opzione in avvio di programma).
I file batch nella sottocartella demo\ utilizzano le Command extension dell'interprete dei comandi cmd.exe, che sono normalmente abilitate in Windows XP e versioni successive (v. in particolare il parametro modificato %~dp0 che specifica il percorso completo della cartella di avvio del file batch).
Le estensioni dei comandi sono abilitate se i valori REG_DWORD seguenti nel Registro di sistema sono impostati su 0x1 (Le impostazioni specifiche dell'utente hanno la precedenza su quelle a livello di sistema):
HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\EnableExtensions
HKEY_CURRENT_USER\Software\Microsoft\Command Processor\EnableExtensions
Per poter utilizzare i file batch quando le estensioni sono disabilitate, occorre avviare una sessione del prompt dei comandi con l'opzione
/X (o equivalentemente
/E:ON).
In ogni caso, tenere presente quanto precisato in [¶2.4] in merito alla regolarità dell'installazione di WinPulisci.
13.2. Altre osservazioni per l'utilizzo da prompt
-
È possibile utilizzare WinPulisci dal prompt mantenendo tutti i file nella cartella corrente, comprese le tabelle. Vedere l'esempio nella sottocartella Uso-da-prompt e il relativo file di spiegazioni leggimi.txt. L'accorgimento cruciale è l'utilizzo dell'opzione /P seguita da un punto e da una controbarra: ciò specifica che la cartella delle tabelle è la cartella corrente.
Il file elabora.bat è di uso molto generale. In particolare, esso non richiede le Command extension dell'interprete dei comandi, come accade invece per gli altri file batch presenti nella cartella demo.
-
È possibile effettuare l'elaborazione di più file senza far ricorso all'elaborazione multipla descritta in [¶4.10]. Basta Utilizzare il comando FOR del prompt dei comandi come mostrato negli esempi che seguono (osservare che il terzo di essi deve essere incluso in un file batch preparato manualmente).
for %a in (testo.txt a:lettera.txt) do wpulisci.exe %a d:\dest\ /l /tsost.tab
for %a in (*.txt a:\*.htm) do wpulisci.exe %a d:\dest\ /c1/q3/s/l /tsost.tab
for %%a in (%1 %2 %3) do wpulisci.exe %%a d:\dest /q3/s/l /tsost.tab
13.3. Le tabelle FoxTab
Le tabelle preesistenti rimangono in gran parte compatibili con l'attuale versione
[¶14.A].
Esempi notevoli di applicazione sono costituiti dalle
tabelle Foxtab,
una raccolta di tabelle realizzate da
Abramo Volpato all'epoca di una delle prime versioni del programma
PULISCI. Il pacchetto è quello originale per
MS-DOS, senza alcun adattamento, che comunque è funzionalmente compatibile con
WinPulisci.
L'autore lo ha gentilmente messo a disposizione di chi voglia servirsene e ne consente l'uso e la modifica secondo quanto specificato nella documentazione
informativa costituita dal file
0foxtab.txt.
Malgrado i sistemi OCR siano oggi potenti e raffinati, queste tabelle meritano ancora di essere considerate perché contengono spunti interessanti per la correzione degli errori sistematici che avvengono durante il riconoscimento dei testi.
Desidero ancora ringraziare Abramo per la sua attiva collaborazione al miglioramento del programma PULISCI per MS-DOS, al quale egli contribuì con un collaudo assiduo e meticoloso e con utili ed intelligenti rilievi.
Torna al sommario.
14. Descrizione delle variazioni
Variazioni nella versione 1.31
-
Correzione: se il percorso di un file di testo conteneva spazi, esso non veniva aperto dall'editor.
-
Nell'aiuto della finestra principale e della finestra esplorazione, aggiunto l'elenco delle cartelle memo impostate attualmente.
Variazioni nella versione 1.30
-
In Windows versione 7 o successiva, WinPulisci non si appoggia più alla cartella dei documenti, bensì alla cartella dei file locali dell'utente. Il cambiamento ha lo scopo di superare le limitazioni che Windows impone nell'l'accesso alla cartella dei documenti e che provocano malfunzionamenti in molte applicazioni, obbligando gli utenti a compiere operazioni aggiuntive per impostare opportuni permessi.
-
In Windows versione 7 o successiva, il setup pone sul desktop una nuova icona intitolata Impostazioni e file locali, utilizzabile per accedere facilmente alla cartella dei file locali.
-
Aggiunta una nuova voce nel menù contestuale Invia a dal titolo Elabora con WinPulisci che consente di avviare l'elaborazione direttamente da Esplora file [¶2.3.1].
-
Il browser Microsoft Edge è ora selezionabile come gli altri browser (non è più necessario che esso sia impostato come browser predefinito).
-
La nuova opzione /F1 forza l'avvio in modo interattivo anche quando la specificazione di file immessa da prompt comporta un'elaborazione multipla
[¶4.10].
-
Correzioni e chiarimenti sulla codifica UTF-8 [¶7.16].
Variazioni nella versione 1.20
-
Se il file destinazione esiste già e non è possibile o non si vuole cancellarlo, viene aggiunto al nome un numero progressivo racchiuso fra parentesi tonde (in precedenza, nelle stesse circostanze, veniva salvato un file di nome testo0, testo1, eccetera).
-
Le etichette dei campi sono state abbreviate in modo da lasciare più spazio ai nomi di file.
-
È stato ottimizzato il procedimento di assegnazione dell'editor (tasto Shift+F9), con particolare riferimento ai percorsi che vengono esplorati dal programma nella ricerca degli editor di tipo portable, ad esempio PSPad [¶ 4.5.2].
-
Ora è possibile specificare un browser diverso da quello che WinPulisci seleziona automaticamente [¶2.6] utilizzando la chiave KWebBrowser [¶11] del file WPulisci.ini.
-
Nuove combinazioni di tasti.
- Ctrl+H (finestra principale, esplorazione, scelta delle tabelle).
Visualizza questo prospetto sintetico con le novità dell'ultima versione.
- Ctrl+C/Ctrl+M (finestra principale, esplorazione).
Copia/accoda la riga attuale negli appunti di Windows.
- Ctrl+V (finestra principale).
Incolla nel campo attuale l'ultima riga degli appunti di Windows.
- Alt+F1, Alt+F2, Alt+F3 (finestra principale, scelta delle tabelle):
Queste tre combinazioni sono dedicate agli utilizzatori di screen reader in sintesi vocale per annunciare le varie informazioni di stato.
Nella finestra principale esse replicano rispettivamente le informazioni riepilogative sulle tabelle, lo stato dei parametri di funzionamento e la riga con i suggerimenti [¶4.7], [¶6].
Nella finestra di scelta delle tabelle esse replicano rispettivamente le ultime tre righe a fine schermo (qui, per compatibilità con le versioni precedenti, Alt+F1 è equivalente a BackSpace).
- Alt+F11 (finestra principale).
Permette di scaricare la versione più recente del programma.
-
Sono stati corretti i difetti indicati di seguito.
- L'opzione /q con valori maggiori di 1 non cancellava il file destinazione se esistente.
- Nei campi della schermata principale, i nomi di file troppo lunghi andavano a capo riga.
- Lo script WPulisci.vbs non funzionava correttamente per un errore di assegnazione nella costante NomeDir
[¶13.1], [¶2.3].
- Importante per gli utilizzatori dello screen reader Jaws versione 11 o successiva:
premendo i tasti freccia (la sintesi pronunciava l'elemento di partenza e non quello di arrivo).
Variazioni nella versione 1.10
-
Nella versione 1.0 di WinPulisci le direttive di riga R, U, L, M [¶8.5] azzeravano qualunque direttiva J [¶8.7], cosicché il jolly rimaneva utilizzabile con le direttive di riga solo se l'insieme di caratteri associato al jolly veniva specificato mediante un insieme esplicito nella corrispondenza coinvolta.
La limitazione è stata rimossa.
-
Nuovi comandi nella finestra di esplorazione [¶4.2]:
-
Con i tasti da F5 a F8 si apre una delle quattro cartelle memo registrate in precedenza.
-
con i tasti da Shift+F5 a Shift+F8 la cartella corrente viene memorizzata come una delle quattro cartelle memo.
14 (1.0). Variazioni rispetto a PULISCI per MS-DOS
Il programma
WinPulisci per Windows costituisce il naturale sviluppo del programma
PULISCI per MS-DOS.
L'interfaccia è sempre in modalità testo, ma si tratta di un programma completamente rifatto. In particolare, il motore interno che esegue i vari tipi di sostituzione è più efficiente, versatile e preciso. Malgrado sussistano varie analogie con la versione MS-DOS, le prestazioni sono migliorate e sono disponibili numerose nuove funzioni.
Le tabelle preesistenti rimangono in gran parte utilizzabili (v. le precisazioni in
[¶14.A]).
Per possibili problemi o malfunzionamenti v. [¶15.3].
I cambiamenti introdotti sono riassunti nel prospetto che segue.
- Differenze di sistema
-
- Archivio di setup adatto aWindows.
- Funzionamento del programma a 32 e a 64 bit.
- Nomi di file lunghi.
- Si può installare il programma in qualunque unità. Nel caso di unità removibile l'icona sul desktop consiste di uno script che non è influenzato dal possibile cambiamento della lettera di unità.
- Trattamento file e tabelle con editor esterno a scelta. Editor riconosciuti automaticamente: PSPad, Notepad++, TextPad, WinWord, Blocco note, WordPad, Biblos. Non è più fornito un editor dedicato.
- Suoni emessi mediante scheda audio con possibilità di cambiare volume.
- Abolite tutte le variabili di ambiente della versione MS-DOS e introdotta la nuova variabile WPULISCI per ospitare opzioni a piacere con sintassi come da prompt.
- Elaborazione svolta quasi interamente in memoria.
- Eliminati gli errori di sostituzione, dipendenti dal frazionamento in spezzoni, che potevano verificarsi in caso di sostituzioni concatenate
[¶15.1].
- Funzioni di aiuto
-
- Le varie finestre dispongono di un aiuto contestuale particolareggiato che si richiama premendo F1 e che elenca i tasti e le loro funzioni. Il testo è visualizzato mediante browser Internet.
- Nell'aiuto contestuale sono inclusi collegamenti ipertestuali per consultare il manuale, la licenza, i resoconti e per verificare la disponibilità di versioni aggiornate.
- Il manuale, in formato HTML, è dotato di livelli di intestazione e di richiami ipertestuali.
- Il programma è corredato di tabelle e file batch dimostrativi.
- Struttura delle cartelle
-
La struttura delle cartelle è modificata come spiegato in [¶2.1].
Cartella di installazione predefinita:
c:\programmi\WinPulisci
Normale impostazione della cartella di lavoro:
- in Windows XP è uguale alla cartella di installazione;
- in Win7 e versioni successive è la cartella WinPulisci nei documenti dell'utente.
La cartella di lavoro ospita le seguenti sottocartelle:
- Orig\ e Dest\
sono rispettivamente la cartella origine predefinita e la cartella destinazione predefinita;
- Tab\
è la cartella predefinita che ospita tutte le tabelle.
È prevista la protezione delle cartelle critiche.
In un nome di file il carattere iniziale «^» è interpretato internamente dal programma come il percorso della cartella di lavoro.
- File di inizializzazione
-
Quando si termina una sessione, il programma memorizza vari parametri di funzionamento nel file di inizializzazione [¶11].
Questo file svolge le funzioni indicate di seguito.
- Conserva i parametri inseriti o modificati durante le sessioni interattive.
- Fra le chiavi previste sono incluse anche quelle della sezione [CONFIG] delle tabelle, ad eccezione delle chiavi riguardanti la funzione di taglio.
- Conserva l'elenco, l'ordine e lo stato di attivazione delle tabelle.
- Prevede la sezione [VAR] per ospitare la definizione di variabili utente.
- Al termine di ogni sessione interattiva viene salvata una copia di riserva del file di inizializzazione (WPulisci.sav) per consentire il ripristino dei dati in caso di errore.
- Tabelle e direttive
-
Vedere la compatibilità delle vecchie tabelle [¶14.A].
- Nuova direttiva T (traslitterazione) per trasformazione efficiente da carattere a carattere.
- Nuova direttiva E per eseguire la sostituzione con la tecnica delle espressioni regolari (corrispondenze EReg).
- Nuove direttive di riga U, L, M per trasformare intere righe in maiuscole, minuscole o con parole a iniziale maiuscola.
- Nuova direttiva N seguita da un numero x per iterare x volte la corrispondenza.
- Nuova direttiva X, da usare insieme con le direttive di riga e nelle corrispondenze speciali, per escludere le limitazioni sulla lunghezza del testo da sostituire.
- In ciascuna stringa il carattere jolly può ora comparire fino a quattro volte (invece di due).
- La direttiva @, utilizzabile in caso di jolly multiplo, è stata potenziata per consentire liberamente l'associazione fra i caratteri jolly della prima e della seconda stringa.
- È possibile attribuire al separatore delle corrispondenze e al carattere jolly valori che hanno validità locale, cioè ristretta a una singola corrispondenza.
- Sono abolite le limitazioni per il numero di tabelle e di corrispondenze e per il numero di caratteri nelle corrispondenze.
- Sono ammesse 65535 corrispondenze contenenti il jolly (invece di 255).
- Possono essere preimpostati 1000 insiemi per l'abbinamento al jolly (invece di 10) e le assegnazioni alle corrispondenze si effettuano con le nuove direttive J.
- Le corrispondenze speciali possono essere in numero a piacere e in esse è consentito specificare le direttive <, >, I e l'insieme per il jolly.
- La descrizione delle tabelle è un testo libero, anche su più righe, costituita dalla parte che precede le sezioni della tabella.
- Le chiavi della sezione di configurazione si possono ora scrivere indifferentemente con lettere maiuscole o minuscole (nei valori va sempre rispettata l'esatta grafia).
- La nuova chiave _AnsiC specifica la codifica per il trattamento delle lettere accentate.
- La nuova chiave _TSAdj determina l'orario del file destinazione.
- La codifica predefinita dei caratteri di controllo è cambiata (per la compatibilità v. [¶14.A]).
- Negli insiemi preimpostati per il jolly il carattere con codice 0 si usa ora allo stesso modo degli altri caratteri di controllo.
- La nozione di corrispondenza extra è stata sostituita con quella di tabella extra, una tabella vuota già preimpostata da elaborare con l'editor (si apre dalla finestra principale premendo F4).
- La lunghezza massima del separatore e del simbolo di ritorno a capo è stata portata da tre a cinque caratteri.
- Sono disponibili le tabelle di aggiunta testo, caratterizzate dalla presenza di una fra le sezioni [PRE-TXT] oppure [POST-TXT].
- L'utente può definire variabili nella sezione [VAR] del file di inizializzazione o delle tabelle e utilizzare tali variabili nelle stringhe delle corrispondenze, negli insiemi espliciti abbinati al jolly e nelle tabelle di aggiunta testo.
- Nel valore delle variabili utente possono essere inserite le variabili predefinite di WinPulisci e le variabili di ambiente di Windows.
- Possono essere definiti array associati e array semplici per espandere le corrispondenze usando gli elementi elencati negli array.
- Funzione di taglio
-
La funzione di taglio prevede due criteri per la scelta della parte di file da elaborare.
- Parte di file compresa fra una stringa iniziale e una stringa finale.
Le due stringhe possono essere specificate in modo insensibile alle maiuscole/minuscole. Inoltre per entrambe si può contare l'occorrenza dall'inizio oppure dalla fine del file e si può decidere se conservare o meno le stringhe stesse.
Questi cambiamenti sono ottenuti grazie all'ampliamento della sintassi delle chiavi _nSIni e _nSFin [¶4.4.1].
- Taglio di un intervallo espresso in byte.
Si usa la nuova chiave _tByte per specificare il byte iniziale e il numero di byte [¶4.4.2].
- Elaborazione multipla
-
È possibile eseguire elaborazioni multiple, anche su un albero completo di file e specificando la profondità delle sottocartelle da considerare. L'elaborazione multipla può essere immediata oppure differita [¶4.10].
- Resoconti
-
Sono previsti due tipi di resoconto (v. l'opzione /L).
- resoconto dell'elaborazione:.
I dati sulle elaborazioni vengono aggiunti all'inizio, risultando così leggibili nell'ordine dal più recente al più vecchio. Un apposito parametro determina la quantità di dati da conservare.
- Resoconto delle tabelle attive.
Ospita informazioni particolareggiate sulle tabelle attive e viene sovrascritto ad ogni cambiamento della selezione o, all'occorrenza, in modo batch.
Il nome Tab-List.log è prefissato.
- Finestra principale
-
Contiene quattro campi editabili dotati delle seguenti proprietà:
- è stato aggiunto il campo con la cartella origine corrente;
- nei campi File origine e File destinazione, dopo l'immissione rimangono scritti solo i nomi di file senza il percorso;
- nei campi Cartella origine e Cartella destinazione, se i percorsi sono contenuti nella cartella di lavoro essi sono depurati del nome della cartella di lavoro stessa, cioè compare il percorso relativo e non quello assoluto;
- sono stati eliminati i campi Inizio blocco, Fine blocco, Codici di controllo, File risultati, Parametri riga
(le relative impostazioni si trovano ora nel file di inizializzazione).
Per l'elenco dei tasti v. [¶3.1].
Segue l'elenco dei tasti nuovi o modificati.
-
F2 avvia l'elaborazione (come Ctrl+Invio).
- Shift+F2 o Alt+L attiva/disattiva la scrittura dei resoconti.
- F3 apre la finestra di scelta delle tabelle.
- Shift+F3 o Alt+K per l'immissione dei quattro parametri di riga.
- F4 apre una nuova tabella extra.
- Shift+F4 chiude e salva l'attuale tabella extra (come Alt+M).
- Shift+F5 attiva/disattiva la funzione di taglio (come Alt+P).
- Shift+F6 attiva/disattiva la reimpaginazione (come Alt+R).
- Shift+F7 o Alt+Y annulla/attiva la protezione delle chiavi critiche.
- F8 apre la finestra di esplorazione.
- Shift+F8 o Alt+Z annulla/attiva la protezione delle cartelle critiche.
- F9 apre il manuale del programma.
- Shift+F9 scelta editor.
- f11/F12 cambiano il volume dei suoni.
- Shift+F10, Shift+F11, Shift+F12
aprono rispettivamente il file di inizializzazione, il resoconto dell'elaborazione e il resoconto delle tabelle attive.
- Invio nei campi File origine e File destinazione apre il file indicato.
- Alt+O copia nel campo Origine il file presente nel campo Destinazione, uguagliando i due.
Il parametro Originale è stato abolito.
- Finestra di scelta delle tabelle (F3)
-
È mostrata una videata distinta per ogni tabella (non più un elenco con una voce per riga) [¶4.1].
Sono mantenuti la posizione, l'ordine e lo stato di selezione, oltre alla stringa di ricerca, anche quando queste informazioni sono state fissate in una sessione precedente.
Le variazioni dei comandi sono elencate di seguito.
- F2 o Ctrl+Invio chiude la finestra e avvia il procedimento di sostituzione.
- F3 per inserire o modificare la stringa di ricerca.
- F4 riordina l'elenco delle tabelle senza alterarne lo stato.
- Shift+F4 riordina l'elenco e deseleziona tutte le tabelle attive.
- Tab/Shift+Tab spostano la visualizzazione sulla tabella attiva successiva/precedente.
- Home e End portano rispettivamente alla prima e all'ultima tabella.
- PgUp e PgDn spostano il contatore di dieci posizioni.
- F9 apre il manuale del programma.
- f11/F12 cambiano il volume dei suoni.
- Finestra esplorazione
-
Si apre con F8 [¶4.2].
Di seguito sono elencati i cambiamenti e le nuove funzioni.
- Viene mantenuta la posizione della precedente esplorazione.
- F1 apre l'aiuto contestuale.
- F2 apre la cartella origine corrente.
- F3 apre la cartella origine predefinita.
- F4 salta al primo file dopo le sottocartelle.
- F9 apre il manuale del programma.
- f11/F12 cambiano il volume dei suoni.
- Spazio accetta e torna alla schermata principale.
- Invio o F10 aprono il file con il programma predefinito (esclusi file eseguibili e simili).
- Alt+W avvia l'editor senza parametri.
- Riga di comando e opzioni
-
Se contengono spazi, i nomi di file vanno racchiusi tra virgolette. Viene rispettata la grafia dei caratteri maiuscoli e minuscoli.
Per l'elenco completo delle opzioni premere Ctrl+F1 nella finestra principale oppure avviare il file help.bat nella cartella demo\.
Per informazioni particolareggiate v. [¶10].
Qui di seguito sono elencate le opzioni nuove e, accompagnate da un asterisco, quelle che presentano differenze significative rispetto alla versione MS-DOS.
- /B è stata eliminata.
- /F forza l'avvio in modo interattivo, sostituisce la vecchia opzione /I).
- /G usata nel contesto dell'elaborazione multipla differita.
- /I [*] prima di avviare la normale esecuzione, propone l'inserimento di ulteriori opzioni.
- /J [*] determina l'orario del file destinazione.
- /L [*] imposta le proprietà dei resoconti.
- /M [*] imposta la profondità della scansione per un'elaborazione multipla.
- /O [*] imposta la cartella origine predefinita.
- /P [*] imposta la cartella tabelle predefinita.
- /Q imposta la verbosità dei messaggi, sostituisce la vecchia opzione /M).
- /S [*] attiva o disattiva i suoni e ne imposta il volume.
- /T come in precedenza imposta da prompt l'elenco delle tabelle, ma ora i nomi possono essere lunghi e, se contengono spazi, vanno racchiusi tra virgolette.
- /U specifica la codifica per il trattamento delle lettere accentate.
- /V consente di non generare il file destinazione se al termine dell'elaborazione esso risulta identico all'originale.
- /Y attiva o annulla la protezione delle chiavi critiche (parametro PrKey).
- /Z attiva o annulla la protezione delle cartelle critiche (parametro PrDir).
- /0 esclude, tutta o in parte, la lettura del file di inizializzazione.
- /! [*] definisce la corrispondenza prompt (a differenza di quanto avveniva in MS-DOS, essa può essere di qualunque tipo (non solo di tipo speciale, e viene rispettata la grafia in maiuscole o minuscole).
Se abbinata a opportune variabili di ambiente, la corrispondenza prompt può definire il cosiddetto array prompt. La corrispondenza prompt oppure l'array prompt sono copiati negli appunti di Windows.
14.A. Compatibilità delle tabelle della versione MS-DOS
Le tabelle preesistenti che funzionavano con la versione MS-DOS rimangono compatibili con
WinPulisci, il particolare quelle distribuite insieme con il programma
PULISCI, ma naturalmente non vale il viceversa. Si raccomanda di prendere nota delle avvertenze indicate di seguito.
-
Le etichette [PULISCI], [SIMBOLI], [CORRISPONDENZE], [FINE] sono accettate nelle vecchie tabelle rispettivamente in luogo di [WinPulisci], [CONFIG], [CORR], [END]. Alcune tabelle esemplificative mantengono le etichette vecchio stile, allo scopo di dimostrarne la compatibilità, ma tali etichette non devono essere utilizzate nelle tabelle che impiegano le nuove caratteristiche di >WinPulisci (variabili, array, aggiunta testo, eccetera).
-
Funzione di taglio.
Se una vecchia tabella contiene la chiave _nSFin, qualora in essa sia specificato un unico valore, il programma lo interpreta come se fosse preceduto dal segno meno. Ad esempio _nSFin=3 viene interpretato come se fosse scritto _nSFin=-3.
In realtà si è liberi di utilizzare la nuova sintassi completa con i tre valori, secondo la quale tale comando equivale a _nSFin=-3,0,0 (naturalmente, facendo ciò, si rende la tabella incompatibile con PULISCI per MS-DOS).
Per tutti i particolari della nuova sintassi v. [¶4.4].
-
Lettere accentate maiuscole e minuscole.
Se una vecchia tabella utilizza una delle direttive I, <, >, occorre controllare se le corrispondenze che includono queste direttive contengono lettere accentate perché in ambiente MS-DOS esse erano codificate secondo la tabella OEM.
In questo caso nella sezione [CONFIG] della tabella si deve aggiungere la riga _AnsiC=0, in modo da stabilire la corretta trasformazione fra maiuscole e minuscole. Lo stesso effetto si ottiene anche aggiungendo la riga _AnsiC=0 nel file di inizializzazione (che però generalizza la scelta a tutte le tabelle) o avviando il programma con l'opzione /U) [¶8.10].
-
Protezione delle chiavi critiche comuni al file di inizializzazione e alle tabelle [¶7.2.1].
Le quattro chiavi _Delim, _Acapo, _CarJol e _CtrlK sono accettate in una tabella soltanto se la protezione delle chiavi critiche è disattivata. Per escludere tale protezione avviare il programma con l'opzione /Y0 oppure indicare il valore 0 nella chiave KProtKey del file di inizializzazione.
Ad esempio, una tabella preesistente potrebbe utilizzare la vecchia codifica per i caratteri di controllo (v. l'osservazione successiva).
-
Marcatore per i caratteri di controllo, chiave _CtrlK [¶7.4].
Per adottare la nuova codifica dei caratteri di controllo, la definizione del marcatore richiede che esso sia affiancato da 0 come secondo carattere:
_CtrlK = ^0
Per mantenere la vecchia codifica [¶14.B]
basta che nella tabella sia presente la definizione del marcatore al vecchio modo, senza l'aggiunta di un secondo carattere.
Fare attenzione!
Se si attivano contemporaneamente tabelle che utilizzano i due diversi tipi di marcatura si possono produrre conflitti con esito imprevedibile.
-
Direttiva @ [¶8.8].
Nella versione per MS-DOS questa direttiva costituiva un commutatore che agiva sulle corrispondenze contenenti due jolly nella prima stringa e un jolly nella seconda stringa.
Eventuali caratteri jolly in eccesso presenti nella seconda stringa venivano trattati come caratteri ordinari.
La direttiva @ è compatibile con l'uso che ne veniva fatto nelle vecchie tabelle, ma ora essa consente di permutare i jolly in modo più generale.
-
La direttiva C è stata abolita in quanto non più necessaria [¶8.17].
Tuttavia non occorre preoccuparsi di toglierla, se presente in qualche vecchia tabella, perché essa viene semplicemente ignorata senza alcun inconveniente.
-
L'insieme esplicito di caratteri per il jolly si scrive ora tra virgolette [¶8.7].
Rimane valida la possibilità di indicare tale insieme facendolo precedere da { (parentesi graffa).
-
La direttiva R e le corrispondenze speciali sono ora controllate con due nuovi parametri chiamati rispettivamente Limitazione sostituzione riga e limitazione testo jolly [¶4.6].
Per mantenere la compatibilità con la versione MS-DOS, il loro valore predefinito è uguale a quello impostato per il parametro lunghezza di riga relativo alla reimpaginazione.
-
Continuano ad essere accettate le vecchie direttive 0 1 ... 9,, equivalenti alle attuali J0 J1 ... J9 [¶8.7]).
-
La direttiva R è compatibile con le direttive * e + e non è più necessario che le eventuali etichette di inizio e fine blocco si trovino a inizio riga.
-
Non è più utilizzata implicitamente la tabella predefinita PULISCI.TAB perché il file di inizializzazione ne ha assorbito la funzione (in MS-DOS essa veniva automaticamente acquisita all'avvio del programma per definire i simboli di uso comune).
14.B. Vecchia codifica dei caratteri di controllo
Nella versione MS-DOS la codifica dei caratteri di controllo seguiva questa regola: a destra del marcatore si doveva indicare il carattere con codice ASCII ottenuto sommando
64 al codice del carattere che si voleva rappresentare. Ad esempio, per indicare i caratteri con codici 0, 7, 26 e 31 si scriveva rispettivamente
^@,
^G,
^Z e
^_.
Nel seguente prospetto sono indicati i simboli per i caratteri di controllo in
WinPulisci e in
PULISCI per MS-DOS.
Prospetto simboli per caratteri di controllo
Codice |
WinPulisci |
PULISCI MS-DOS |
0 |
^00 |
^@ |
1 |
^01 |
^A |
2 |
^02 |
^B |
3 |
^03 |
^C |
4 |
^04 |
^D |
5 |
^05 |
^E |
6 |
^06 |
^F |
7 |
^07 |
^G |
8 |
^08 |
^H |
9 |
^09 |
^I |
10 |
^10 |
^J |
11 |
^11 |
^K |
12 |
^12 |
^L |
13 |
^13 |
^M |
14 |
^14 |
^N |
15 |
^15 |
^O |
16 |
^16 |
^P |
17 |
^17 |
^Q |
18 |
^18 |
^R |
19 |
^19 |
^S |
20 |
^20 |
^T |
21 |
^21 |
^U |
22 |
^22 |
^V |
23 |
^23 |
^W |
24 |
^24 |
^X |
25 |
^25 |
^Y |
26 |
^26 |
^Z |
27 |
^27 |
^[ |
28 |
^28 |
^\ |
29 |
^29 |
^] |
30 |
^30 |
^^ |
31 |
^31 |
^_ |
Torna al sommario.
15. Informazioni tecniche
Lo spazio occupato nel disco in un'unità NTFS dai file contenuti nell'archivio di setup è di circa un Mbyte.
La cartella di installazione può essere collocata in qualunque unità abilitata in scrittura (disco fisso, pen-drive, memoria flash, eccetera) [¶2.2].
WinPulisci è un programma di tipo console, cioè l'inserimento dei dati e la visualizzazione avvengono in modalità testo.
Il programma WinPulisci non deve essere usato in ambiente MS-DOS o Windows98. Per informazioni sulla compatibilità con le versioni di Windows v. il
paragrafo 2.2.
Il programma WinPulisci è realizzato con il compilatore
PB/CC,
PowerBasic Console Compiler.
15.1. Motore delle sostituzioni e velocità di elaborazione
I meccanismi interni di sostituzione in
WinPulisci sono diversi da quelli utilizzati in
PULISCI per MS-DOS.
Fra l'altro, grazie ai cambiamenti introdotti, non si verificano più certi errori di sostituzione che si riscontravano con la versione MS-DOS in caso di sostituzioni concatenate.
Per illustrare la causa di tali errori, che dipendevano dal
frazionamento in spezzoni, si può ricorrere a un'immagine.
Si consideri il file da elaborare come una riga di byte disposti uno di fianco all'altro, ripetuta tante volte una sotto l'altra quante sono le sostituzioni da eseguire.
- Il vecchio procedimento operava con priorità verticale.
-
Veniva preso un piccolo spezzone a cui si applicavano tutte le sostituzioni, poi si passava a uno spezzone adiacente e così via, cioè si procedeva da sinistra verso destra coprendo simultaneamente tutte le righe.
Il frazionamento in spezzoni garantisce un'ottima velocità di elaborazione, anche con i limiti di memoria di MS-DOS, ma presenta una difficoltà intrinseca perché una stringa da sostituire potrebbe cadere a cavallo fra due spezzoni adiacenti.
La direttiva C di PULISCI (ora eliminata [¶8.17]) serviva per correggere questo problema ma in alcune situazioni l'accorgimento non forniva una protezione sufficiente.
- Il nuovo procedimento opera con priorità orizzontale.
-
Viene percorsa per intero la prima riga, poi quella sottostante e così via, elaborando le singole sostituzioni una alla volta sull'intero file.
Tuttavia, una volta scartato il frazionamento in spezzoni, non si possono più sostituire le stringhe come in
PULISCI per MS-DOS perché il tempo impiegato da quell'algoritmo obbedisce a una legge che, in funzione della grandezza del file, è di tipo quadratico sui file più piccoli e cresce molto rapidamente su quelli più grandi, rendendo l'elaborazione lenta in modo inaccettabile.
I nuovi algoritmi di sostituzione assicurano insieme la precisione delle sostituzioni e un tempo di elaborazione dipendente dalla grandezza del file in modo lineare e, in varie situazioni, sensibilmente più veloce rispetto alla vecchia versione. Chi fosse interessato ad esaminare questa tecnica può trovarne un esempio nel post che ho pubblicato nel forum di PowerBasic con il titolo
A time-efficient case insensitive replace function.
Per quanto riguarda le corrispondenze EReg, soprattutto quando si usano i quantificatori *, + e ? l'elaborazione diventa poco efficiente, in termini di velocità, quando la dimensione del file aumenta oltre un certo limite [¶15.3]. Ad esempio, utilizzando un file di un Mbyte, la tabella 1-I_EReg.tab [¶13] impiega un tempo almeno duecento volte maggiore dell'equivalente tabella 1-I.tab che utilizza corrispondenze ordinarie.
Normalmente, quindi, le corrispondenze EReg vanno impiegate su file piccoli (alcune centinaia di kbyte) oppure quando una sostituzione risulta difficile o impossibile mediante le corrispondenze ordinarie.
15.2. Informazioni sulla chiave di sblocco
Durante l'installazione il programma
WinPulisci scrive all'inizio del file di inizializzazione
WPulisci.ini [¶11]
una stringa racchiusa tra parentesi quadre che si chiama
chiave di sblocco. Essa viene letta all'avvio di ogni sessione e rinnovata al termine della stessa.
La chiave di sblocco è protetta con una cifratura che, pur essendo poco robusta, fa sì che la chiave stessa venga distrutta irreparabilmente in caso di alterazioni accidentali.
Per proteggere da evenienze del genere, il programma WinPulisci mantiene nella cartella di lavoro una copia di riserva del file di inizializzazione.
La copia di riserva è un file nascosto di nome WPulisci.sav che il programma recupera automaticamente se riscontra un errore nel file di inizializzazione.
A titolo informativo, i dati memorizzati nella chiave di sblocco sono riportati in chiaro nel file di inizializzazione e alla fine delle finestre di aiuto contestuale.
Per generare la chiave di sblocco viene costruito un record di 512 bit con le informazioni specificate di seguito.
-
Controllo CRC (16 bit).
-
Numero di installazioni eseguite (16 bit).
-
Versione del programma con cui è stata eseguita la più recente installazione (16 bit).
-
Data e ora della prima installazione (64 bit).
-
Offset in secondi fra la prima e l'ultima installazione (32 bit).
-
Tempo totale di lavoro in secondi fra la prima e l'ultima installazione (32 bit).
-
Tempo totale di lavoro in secondi dall'ultima installazione (32 bit).
-
Numero di sessioni interattive fra la prima e l'ultima installazione (16 bit).
-
Numero di sessioni interattive dall'ultima installazione (16 bit).
-
Username dell'utente che ha eseguito la più recente installazione (128 bit).
-
Riserva per possibili utilizzi futuri (144 bit riempiti con valori random).
I
64 byte ottenuti vengono protetti con cifratura a XOR progressivo da destra a sinistra e il record così ottenuto viene codificato con una trasposizione lineare a 7 bit nell'intervallo 35-162. Alla stringa ottenuta, che ha
74 caratteri, vengono infine aggiunti all'inizio
4 caratteri esadecimali che costituiscono un ulteriore controllo CRC relativo alla codifica a 7 bit.
Durante le elaborazioni batch il file di inizializzazione viene letto ma la chiave di sblocco non viene aggiornata e in particolare non vengono incrementati i relativi tempi di lavoro.
15.3. Limitazioni e problemi
La massima grandezza del file da elaborare deve rimanere entro un limite che si aggira intorno al 30% della memoria RAM disponibile nel momento in cui inizia l'elaborazione.
Se il file contiene etichette di inizio e fine blocco, la limitazione si applica ai singoli blocchi definiti dalle etichette invece che all'intero file.
Comunque, se la grandezza del file o di un blocco si avvicina a tale limite, potrebbero presentarsi criticità nel tempo di elaborazione o nell'accesso alla memoria, in particolare con la direttiva
I.
Per quanto riguarda la funzione di taglio, essa è sempre riferita all'intero file e non viene eseguita se la grandezza del file supera la limitazione di cui sopra (in questo caso il resoconto riporta la dicitura bloccata).
La limitazione di grandezza è molto più stringente se viene utilizzata la direttiva E perché, anche con una grandezza di pochi Mb, l'elaborazione può rallentare in modo molto marcato. Inoltre può accadere che, se un'espressione regolare è particolarmente complessa (ad esempio in presenza di tag referenziati e di quantificatori), talvolta il programma si arresti con il seguente messaggio di errore:
unknown software exception (0xc00000fd) nell'applicazione alla posizione ...
Verosimilmente l'arresto è dovuto a un fenomeno di sovraccarico dello stack e al momento non è nota una soluzione.
Ringrazio fin d'ora quanti vorranno cortesemente segnalarmi ulteriori problemi o malfunzionamenti.
Chiedo scusa per eventuali imprecisioni o errori presenti nella documentazione.
Torna al sommario.
per informazioni sul prelievo e l'installazione del programma WinPulisci v. [¶2].
Torna al sommario.