COGM0A - Riconoscimento informazioni¶
Sorgente: cbl/cogm0a.cbl | Tipo: Programma interattivo GUI con griglia di dettaglio | Program-ID: COGM0A
Menu:
- Sistema > Configurazione > Riconoscimento informazioni
Scopo¶
Configura le regole di riconoscimento (parsing) delle informazioni contenute nei testi delle chiamate di assistenza, memorizzate nella tabella COGPARSE. Per ogni tipo di informazione riconoscibile (es. "Cliente assistito", "S/N matricola", "Numero chiamata cliente", "Data/ora scadenza chiamata", ecc.) l'operatore definisce come estrarla dal testo indicando un Prefisso, un Suffisso e/o una Lunghezza.
Tutte le informazioni gestite appartengono alla classe di parsing "chiamate" (k-classe-parsing-chiamate = "01", copybook costanti-parsing.cpy): il programma presenta l'elenco fisso dei codici informazione previsti per quella classe e consente di associare a ciascuno i parametri di riconoscimento. Non e' un'anagrafica libera: i codici riga sono predefiniti, l'operatore ne configura solo prefisso/suffisso/lunghezza.
Struttura del programma¶
Il programma segue il pattern standard delle maschere Eurocoge basate su griglia di dettaglio (e-grid-det, gestita via GRIDADMN). La tabella interna tab-maschera e la struttura tm-grid-det-dati-ele (fino a k-max-ele-tab = 800 elementi) sono l'immagine di lavoro dei record COGPARSE filtrati sulla classe "chiamate". Il campo tm-classe e' fissato a "1".
Inizializzazione (apri)¶
ctr-abil, z-99-init-program, rd-azi, poi il paragrafo di configurazione x99-confi (residuo del programma modello: la CALL a RNEWCONF e' commentata, vedi sezione dedicata) e open-files. Abilita i tasti funzione previsti (invio, F3 conferma/aggiorna, F8 aiuto, Shift-F4 griglia, Ctrl-E elimina; Ctrl-A aggiungi e' commentato), imposta il titolo "Riconoscimento informazioni", prepara la griglia (z-prepara-grid-det) e i controlli (z-costruisci-controlli).
Preparazione griglia (a4 / a-fine-dati-inizio)¶
Svuota la griglia (z-svuota-tutto-grid), inizializza tab-maschera con tm-classe = "1", quindi carica i dati (a1-carica-dati) e costruisce la griglia (z-costruisci-grid-det). Il blocco a-tm-classe di accept sul campo classe e' interamente commentato: la classe non e' scelta dall'operatore.
Caricamento dati (a1-carica-dati)¶
Scandisce COGPARSE a partire dalla classe "chiamate" (st-cogparse-notmin + rdnxt-cogparse), filtrando su pars-classe = k-classe-parsing-chiamate. Per ogni record letto popola una riga di griglia con codice informazione (pars-cod -> tm-r-prog), descrizione derivata dal codice tramite un EVALUATE pars-cod (mapping dei k-cp-chiamate-* alla stringa descrittiva), e i parametri pars-prefisso/pars-suffisso/pars-lunghezza. Dopo la scansione, se in COGPARSE mancano dei codici informazione (a1-k = 0, 2 o 5), il paragrafo integra le righe mancanti con i codici predefiniti e le relative descrizioni, cosi' che la griglia mostri sempre l'elenco completo delle informazioni previste anche se non ancora configurate.
Griglia di dettaglio (a-grid-det / a-accept-grid-det)¶
Gestione accept sulla griglia via z-99-accept-grid-det. Shift-F4 apre la personalizzazione colonne (GRIDADMN). Ctrl-E azzera i parametri della riga corrente (prefisso/suffisso/lunghezza) previa verifica abilitazione (w-abi-del) e conferma (c1-ctrl-canc). F3 salva le modifiche (a2-aggiorna) previa verifica abilitazione all'aggiornamento (w-abi-agg). L'invio/doppio click su una riga viene emulato impostando funzio = k-fun-invio.
Controlli di riga (x-controlla-tm-r-prefisso / -suffisso / -lunghezza)¶
Validano la coerenza dei tre parametri: se e' valorizzato il prefisso deve esistere suffisso o lunghezza; suffisso e lunghezza sono mutuamente esclusivi. In caso di incongruenza impostano x-f3-msg e x-f3-ok-parziale = "N".
Aggiornamento (a2-aggiorna)¶
Previa validazione complessiva della griglia (x-controlla-grid-det-tutto), scandisce le righe: per ogni codice informazione rilegge il record COGPARSE (rd-cogparse); se esiste lo riscrive (rwr-cogparse) con i nuovi parametri, altrimenti lo crea (wr-cogparse). Al termine ritorna in griglia (fine).
Tabelle e file¶
| File logico | Chiave / accesso | Descrizione |
|---|---|---|
| FEURTAB | - | Tabella di sistema (aperta via cogfiles.cpy) |
| COGPARSE | primaria pars-chia1; accesso dinamico (nf-name-322) |
Regole di riconoscimento informazioni: classe (pars-classe), codice informazione (pars-cod), prefisso (pars-prefisso), suffisso (pars-suffisso), lunghezza (pars-lunghezza) |
COPY incluse¶
Working-Storage¶
cogm0a.wrk, wgrave.cpy, wnscr.cpy, wopenf.cpy, wstato.cpy, cogazien.cpy, wgrid.cpy, utilgdad.cpy, utilu20.cpy, utilncnf.cpy, costanti-parsing.cpy
Linkage¶
wcont.cpy, wcont1.cpy (utilcogm0a.cpy presente ma commentato)
Procedure Division¶
cogm0a.decla, cogm0a-01.scr (screen), grave.cpy, mmmask.cpy, opengen.cpy, stato.cpy, stato1.cpy, winmsg.cpy, cogm0a.prc
Le routine di I/O su COGPARSE (st-, rdnxt-, rd-, wr-, rwr-cogparse) sono incluse tramite la catena di COPY generata (.k01).
CALL a sottoprogrammi¶
| Programma | Scopo |
|---|---|
| GRIDADMN | Gestione griglia (Prepara, Svuota-Tutto) e personalizzazione colonne (Shift-F4) |
Configurazioni RNEWCONF¶
Il programma non legge chiavi RNEWCONF applicative. E' presente un paragrafo x99-confi, ma il suo corpo (la CALL a RNEWCONF) e' interamente commentato: si tratta di un residuo del programma modello, non operativo.
Note tecniche¶
- Classe unica "chiamate": al momento il programma gestisce la sola classe di parsing
01(chiamate assistenza); il campotm-classee' cablato a"1"e la relativa accept e' disabilitata. La struttura e' predisposta per ulteriori classi. - Elenco codici predefinito: i codici informazione (
k-cp-chiamate-*incostanti-parsing.cpy, valori 1..13) sono fissi. Il paragrafoa1-carica-datigarantisce che tutte le informazioni previste compaiano in griglia integrando quelle non ancora presenti inCOGPARSE, in blocchi progressivi (base, aggiunta 051017 ragione sociale/indirizzo/telefono, aggiunta 090620 chiamata/intervento/oggetto/destinazione/date). - Semantica prefisso/suffisso/lunghezza: definiscono come isolare il valore dell'informazione all'interno del testo della chiamata; suffisso e lunghezza sono alternativi (delimitatore finale oppure numero fisso di caratteri).
- Salvataggio idempotente:
a2-aggiornafa sempre read-then-write/rewrite per record, quindi la conferma puo' sia creare i record mancanti sia aggiornare quelli esistenti in un'unica passata.