Vai al contenuto

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 esiste rwr-cogtrans incrementando trs-qta, altrimenti wr-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 in output e i-o piu' volte durante la ricostruzione ad ogni cambio ordinamento.
  • Ordinamento dinamico per colonna: la chiave secondaria trs-chia2 non ha un contenuto fisso; viene ricomposta in riempi-trs-chia2 secondo w-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-post decidono 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 via gdad-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.arc e maskprog.arc sono controllati (stato = "00"); in caso di archivio rovinato il programma mostra un box di errore ed esce.