Vai al contenuto

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 campo tm-classe e' 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-* in costanti-parsing.cpy, valori 1..13) sono fissi. Il paragrafo a1-carica-dati garantisce che tutte le informazioni previste compaiano in griglia integrando quelle non ancora presenti in COGPARSE, 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-aggiorna fa sempre read-then-write/rewrite per record, quindi la conferma puo' sia creare i record mancanti sia aggiornare quelli esistenti in un'unica passata.