COGUD1 - Pulizia lettere accentate COGTBCOM/COGTBCAP¶
Intestazione¶
| Campo | Valore |
|---|---|
| Programma | COGUD1 |
| Titolo | Normalizza campi su COGTBCOM e COGTBCAP (rimozione accentate) |
| Modulo | Sistema / Utility |
| Tipologia | Utility batch interattiva |
| Posizione menu | Sistema > Utility > Elaborazioni varie > Pulizia lettere accentate COGTBCOM |
Scopo¶
Utility che scorre le tabelle comuni (COGTBCOM) e CAP (COGTBCAP) e normalizza i caratteri accentati (sia Cp850 sia ISO-8859-1) presenti nei campi descrittivi (tci-descrizione, tbc-localita), sostituendoli con la versione "lettera base + apostrofo".
Lo scopo e' garantire la compatibilita' di queste descrizioni con flussi di esportazione, modelli di stampa e sistemi esterni che non supportano caratteri non ASCII.
Logica di elaborazione¶
Schema generale¶
Il paragrafo elabora ha due fasi:
- Fase 1 (
a-00-loop->a-90): scan completo diCOGTBCOM. Per ogni record: - chiama
rdnxt-cogtbcom - itera carattere per carattere
tci-descrizione(50 caratteri) ina-10, copiando inw-tci-descrizioneed espandendo gli accentati in lettera + apostrofo - se modificato (
w-fl-modifica = "S"), riscrive conrwr-cogtbcom - Fase 2 (
a-100-loop->a-190): scan completo diCOGTBCAP. Per ogni record: - chiama
rdnxt-cogtbcap - itera carattere per carattere
tbc-localita(40 caratteri) ina-110, applicando la stessa logica - se modificato esegue
del-cogtbcap+wr-cogtbcap(la riscrittura passa per cancellazione e re-inserimento, presumibilmente per evitare conflitti su chiave alternativa)
Mapping caratteri¶
Per ogni carattere della descrizione il programma esegue una sequenza di IF confrontando con i seguenti pattern:
| Pattern di input | Sostituzione |
|---|---|
| Vocali minuscole accentate (a', e', i', o', u' nei vari accenti CP850 / ISO-8859-1) | Lettera base + ' |
| Vocali maiuscole accentate (A', E', I', O', U' nei vari accenti) | Lettera maiuscola + ' |
x'E2' ("A circonflesso") |
"A" senza apostrofo |
x'F4' ("O circonflesso") |
"O" senza apostrofo |
x'E7' (c cedille) |
"C" senza apostrofo |
x'EA' (e circonflesso) |
"E" senza apostrofo |
L'algoritmo usa due indici: w-i sul testo originale (incremento 1) e w-k sul testo destinazione (incremento 1, +1 quando viene aggiunto l'apostrofo). Il loop si interrompe quando w-i supera la lunghezza del campo (50 per descrizione comune, 40 per localita') o quando w-k raggiunge il limite di campo.
Tracciamento modifiche¶
Per ogni record modificato il programma scrive nel log di processo (GESDEBUG) una riga del tipo:
modifica da: "Bagn? a Ripoli" a: "Bagno' a Ripoli"
Il log e' identificato dal nome procedura corrente (w-tm-procedura-principale) e puo' essere consultato a posteriori con la utility di consultazione log (GESLPRC).
File acceduti¶
| File | Tabella | Modalita' | Uso |
|---|---|---|---|
| FEURTAB | Nomi file gestionale | Input | Risoluzione nomi fisici |
| COGTBCOM | Tabella comuni | I-O | Lettura e riscrittura descrizioni normalizzate |
| COGTBCAP | Tabella CAP | I-O | Lettura, cancellazione e reinserimento localita' normalizzate |
Copybook inclusi¶
| Copybook | Scopo |
|---|---|
feurtab.fd, cogfiles.cpy |
Definizione tabella file gestionale |
cogud1.select, cogud1.fd, cogud1.wrk, cogud1.prc, cogud1.decla, cogud1-01.scr |
Generati Screen Designer |
k-personal.cpy |
Costanti personalizzazione |
cogazien.cpy |
Dati azienda |
utilgesstr.cpy |
Working per GESSTR (preparato per uso CONV-TESTO-IMPORTATO ma non attivato in fase elabora) |
utilncnf.cpy |
Working per RNEWCONF |
utilgesdebug.cpy |
Working per gestione debug/log |
wgrave.cpy, wnscr.cpy, wopenf.cpy, wstato.cpy |
Working storage standard |
wcont.cpy, wcont1.cpy |
Linkage section |
stato.cpy, stato1.cpy, winmsg.cpy, grave.cpy, opengen.cpy, mmmask.cpy, gesdebug.cpy |
Routine standard fine procedure |
Programmi chiamati¶
| Programma | Scopo |
|---|---|
| GESSTR | Conversione testo (paragrafo z-converti-w-testo, preparato ma non chiamato nel flusso principale) |
| GESLPRC | Scrittura/consultazione log di processo |
| GESDEBUG | Scrittura messaggi nel log di debug (via gesdebug-write) |
Note tecniche¶
- L'utility e' idempotente: rilanciandola non fa alcuna modifica sui record gia' normalizzati (il flag
w-fl-modificarimane a spaces e la riscrittura non viene eseguita). - La trasformazione e' distruttiva: una volta sostituiti, gli accentati originali non sono piu' recuperabili automaticamente. Si raccomanda di lanciare l'utility con un backup recente.
- Il paragrafo
z-converti-w-testopredispone una chiamata aGESSTRcon operazioneCONV-TESTO-IMPORTATOma e' commentato nel flusso principale: l'attuale implementazione fa la conversione "in linea" carattere per carattere. - Il sorgente usa
GO TOin piu' punti (loopa-00-loop/a-100-loop); pattern legacy. La logica e' isolata e non chiamabile da altri moduli.
Storico modifiche¶
| Build | Descrizione |
|---|---|
| Storico | Aggiunti gradualmente nuovi pattern di accentate (es. x'E2', x'F4', x'E7', x'EA') per coprire encoding diversi visti su backup storici dell'archivio comuni |
Vedi anche¶
- Localizzazione -- Gestione lingua e set di caratteri
- Stampe su Jasper -- Output a sistemi esterni sensibili agli encoding