COG050 - Analisi sintetica uso funzioni¶
Sorgente: cbl/cog050.cbl | Tipo: Programma interattivo GUI con griglia paginata (interrogazione) | Program-ID: COG050
Menu:
- Sistema > Configurazione > Menu/Operatori > Analisi sintetica funzioni
Scopo¶
Produce un'analisi sintetica dell'uso delle funzioni (voci di menu / programmi) del gestionale, contando quante volte ciascuna funzione e' stata eseguita in un intervallo di date, con eventuale dettaglio per operatore e/o per postazione. La fonte dei dati e' il log operatori MASKLOG (masklog.arc): ogni transazione (esecuzione di un programma) vi lascia una riga, e il programma le aggrega contando le occorrenze.
Il risultato e' un elenco di righe {funzione, operatore, postazione, quantita' di utilizzi}, visualizzato in una griglia paginata e ordinabile per colonna, esportabile in Excel.
I filtri di interrogazione sono: intervallo date (obbligatorio), operatore (opzionale), postazione (opzionale) e due flag "Dettaglio per operatore" / "Dettaglio per postazione" che stabiliscono se aggregare o meno per operatore/postazione.
Struttura del programma¶
Il programma raccoglie i dati in un file di transito indicizzato temporaneo COGTRANS (dichiarato manualmente in SELECT/FD con nome dinamico #$trscog050. + operatore), lo popola scandendo MASKLOG, e lo visualizza tramite griglia paginata (copybook utilpggr.cpy / fscrol2.cpy).
Inizializzazione (apri)¶
z-99-init-program, ctr-abil, rd-azi (con gestione consorzi az-consorzi), open-files. Apre in I/O MASKLOG (masklog.arc in ext-mnu-dir) e in input MASKPROG (maskprog.arc in ext-prg-dir), con messaggio di errore e uscita se gli archivi non sono apribili. Imposta i tasti funzione (F1 configura, invio-seleziona, F3 conferma/aggiorna, F8 aiuto/movimenti, Shift-F4 griglia, Shift-F5 esporta Excel), recupera la divisa di conto via COGU10W, costruisce i controlli.
Accept filtri (a-tm-da-data ... a-tm-postazione)¶
Accetta in sequenza: Da data / A data (con calendario COGS52 e controllo coerenza in x-controlla-tm-a-data), Dettaglio per operatore / Dettaglio per postazione (radio COGS95), Operatore (F8 -> lookup COGT20) e Postazione (F8 -> lookup COGT27). I controlli di campo verificano l'esistenza di operatore (rd-prntoper) e postazione (rd-prntpost). La conferma finale (a-fine-dati) valida tutto (x-controlla-dati) e chiede conferma.
Ordinamento e ricostruzione transito (a-avanti)¶
L'ordinamento della griglia e' scelto dall'utente cliccando su una colonna (menu contestuale "Ordina sulla colonna...", build-main-popup-grid): w-ordinamento assume 1..7 (Funzione, Descrizione funzione, Operatore, Nome operatore, Postazione, Descrizione postazione, Uso/Quantita'). Ad ogni cambio ordinamento il file COGTRANS viene ricreato (open output / open i-o) e ripopolato (carica-cogtrans).
Popolamento del transito (carica-cogtrans / tratta-masklog / elabora-masklog)¶
Scandisce MASKLOG sulla chiave secondaria mlg-chia4 (data, ora, operatore) a partire da tm-da-data (st-masklog-notmin-chia4 + rdnxt-masklog, arresto quando mlg-data > tm-a-data). Per ogni riga che rispetta i filtri (date, operatore, postazione) elabora-masklog:
- estrae la funzione (
mlg-fun), l'operatore (mlg-ope, solo se dettaglio-ope) e la postazione (mlg-postazione, solo se dettaglio-post); - recupera la descrizione del programma da
MASKPROG(rd-maskprog,prg-des); - legge/crea il record aggregato in
COGTRANS(rd-cogtrans; se esisterwr-cogtransincrementandotrs-qta, altrimentiwr-cogtrans).
La chiave secondaria di ordinamento trs-chia2 viene composta in riempi-trs-chia2 in base a w-ordinamento, concatenando il campo scelto con trs-chia1.
Visualizzazione paginata (carica-tab / a-grid)¶
Riempie la griglia leggendo COGTRANS sulla chiave trs-chia2 con spaginamento avanti/indietro (routine rn-start/rp-start-less/sn-read/sp-read su rdnxt-cogtrans/rdprv-cogtrans, framework utilpggr.cpy). Pag-Giu/Pag-Su spaginano, S-F9 ricarica dall'inizio, Shift-F4 personalizza la griglia, Shift-F5 esporta in Excel (z-esporta-paged-grid). Le descrizioni di operatore e postazione mostrate in griglia sono risolte via rd-prntoper/rd-prntpost.
Chiusura (fine / z-chiudi)¶
z-close-files, chiude MASKLOG e MASKPROG, distrugge il menu contestuale, chiude ed elimina il file temporaneo COGTRANS (delete file cogtrans), z-99-exit-program, goback.
Tabelle e file¶
| File logico | Chiave / accesso | Descrizione |
|---|---|---|
| FEURTAB | - | Tabella di sistema (aperta via cogfiles.cpy) |
| MASKLOG | primaria mlg-chia1 (ope, data, ora); scansione su secondaria mlg-chia4 (data, ora, ope) |
Log operatori (masklog.arc): fonte dell'analisi. Ogni record = una esecuzione di funzione (mlg-fun) da parte di un operatore (mlg-ope) su una postazione (mlg-postazione) in una data (mlg-data) |
| MASKPROG | prg-cod |
Informazioni sui programmi (maskprog.arc): usata per la descrizione della funzione (prg-des) |
| COGTRANS | primaria trs-chia1 (funzione, operatore, postazione); secondaria trs-chia2 (chiave di ordinamento variabile) |
File di transito temporaneo (nome dinamico #$trscog050.+operatore, delete file alla chiusura). Record aggregato: funzione, operatore, postazione, descrizione, quantita' usi (trs-qta) |
| PRNTOPER | ptop-cod |
Anagrafica operatori: descrizione operatore (rd-prntoper, ptop-des) |
| PRNTPOST | ptpo-cod |
Anagrafica postazioni: descrizione postazione (rd-prntpost, ptpo-des) |
COPY incluse¶
Working-Storage¶
k-personal.cpy, cog050.wrk, k-u10.cpy, wgrave.cpy, wnscr.cpy, wopenf.cpy, wstato.cpy, cogazien.cpy, capazien.cpy, cogconta.cpy, wgrid.cpy, utilgdad.cpy, wscrolmc.cpy, utils52.cpy, utilu10.cpy, utilu20.cpy, utilt20.cpy, utilt27.cpy
File section¶
feurtab.fd/cogfiles.cpy/cog050.fd, masklog.fd/masklog.cpy, maskprog.fd/maskprog.cpy, e la FD manuale di COGTRANS (record trs-rec dichiarato inline, non generato).
Linkage¶
wcont.cpy, wcont1.cpy
Procedure Division¶
cog050.decla, cog050-01.scr (screen), grave.cpy, mmmask.cpy, opengen.cpy, stato.cpy, stato1.cpy, winmsg.cpy, cog050.prc, dtab.cpy, fscrol2.cpy, utilpggr.cpy, e le catene di I/O cogtrans.k01, cogtrans.k02, masklog.k01, masklog.k04, maskprog.k01.
CALL a sottoprogrammi¶
| Programma | Scopo |
|---|---|
| GRIDADMN | Gestione griglia paginata (Prepara, Svuota, Add-Record, Inizializza) e personalizzazione colonne (Shift-F4) |
| COGU10W | Recupero divisa di conto (GetDivisaConto) e formattazione valori (routine z-u10) |
| COGT20 | Lookup/selezione operatore (F8 sul campo operatore), copybook utilt20.cpy |
| COGT27 | Lookup/selezione postazione (F8 sul campo postazione), copybook utilt27.cpy |
| W$MENU | Costruzione/distruzione del menu contestuale "Ordina sulla colonna..." (build-main-popup-grid, x-destroy-menu) |
Configurazioni RNEWCONF¶
Il programma non contiene un paragrafo x99-confi e non legge chiavi RNEWCONF applicative.
Note tecniche¶
- File temporaneo COGTRANS: dichiarato manualmente (SELECT/FD/COPY inline) perche' non gestibile da Screens; il nome e' reso univoco con l'operatore (
#$trscog050.+wo-oper) ed e' cancellato in chiusura. Viene chiuso/riaperto inoutputei-opiu' volte durante la ricostruzione ad ogni cambio ordinamento. - Ordinamento dinamico per colonna: la chiave secondaria
trs-chia2non ha un contenuto fisso; viene ricomposta inriempi-trs-chia2secondow-ordinamento(1..7), il che comporta la ricostruzione integrale del transito ad ogni cambio di ordinamento (a-avanti). L'ordinamento di default (se non ancora scelto) e' per Funzione (w-ordinamento = 1). - Aggregazione condizionata: i flag
tm-dettaglio-ope/tm-dettaglio-postdecidono se valorizzare operatore/postazione nel record aggregato; se disattivati, i conteggi vengono sommati indipendentemente da operatore/postazione (le colonne relative vengono anche nascoste in griglia viagdad-cst-vis). - Griglia paginata: usa il framework di spaginamento
utilpggr.cpy/fscrol2.cpy(z-99-accept-paged-grid,pg-after-pg-dwn/pg-after-pg-up), non un caricamento in memoria di tutti i record. - Robustezza archivi: all'apertura,
masklog.arcemaskprog.arcsono controllati (stato = "00"); in caso di archivio rovinato il programma mostra un box di errore ed esce.