Vai al contenuto

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:

  1. Fase 1 (a-00-loop -> a-90): scan completo di COGTBCOM. Per ogni record:
  2. chiama rdnxt-cogtbcom
  3. itera carattere per carattere tci-descrizione (50 caratteri) in a-10, copiando in w-tci-descrizione ed espandendo gli accentati in lettera + apostrofo
  4. se modificato (w-fl-modifica = "S"), riscrive con rwr-cogtbcom
  5. Fase 2 (a-100-loop -> a-190): scan completo di COGTBCAP. Per ogni record:
  6. chiama rdnxt-cogtbcap
  7. itera carattere per carattere tbc-localita (40 caratteri) in a-110, applicando la stessa logica
  8. 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-modifica rimane 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-testo predispone una chiamata a GESSTR con operazione CONV-TESTO-IMPORTATO ma e' commentato nel flusso principale: l'attuale implementazione fa la conversione "in linea" carattere per carattere.
  • Il sorgente usa GO TO in piu' punti (loop a-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