Vai al contenuto

COGZ58 — Verifica integrita' commesse

Sorgente: cbl/cogz58.cbl | Program-ID: cogz58 | Tipo: Utility batch di verifica/diagnostica con log

Menu: Lab.Odont. > Operativo > Utilita' > Verifica integrita' commesse


Scopo

Verifica l'integrita' referenziale dei dati delle commesse di laboratorio, individuando le "righe scollegate" (record senza il relativo record padre/collegato). Esegue due controlli:

  • B — righe commessa senza testata/prescrizione: scorre LODCMRIG e segnala le righe per cui manca la prescrizione (LODPRESC) e/o la testata commessa (LODCMTES).
  • C — righe piano senza riga commessa: scorre LODPNRIG (tipo T) e segnala i piani senza LODCMTES collegato e le righe piano senza il corrispondente LODCMRIG.

Le anomalie vengono scritte su un file di log testuale; a fine elaborazione ne viene comunicato il percorso. Il programma e' di sola diagnostica: non modifica i dati (il blocco che cancellava le righe orfane e' commentato nel sorgente).


File e tabelle

File Copybook Accesso Scopo
feurtab cogfiles.cpy Tabella file di sistema
flsta flsta.fd / flsta.cpy Tabella caratteri/stampa (fornisce wca-cod-cr / wca-cod-lf)
LODCMRIG (via st/rdnxt/rd) Lettura sequenziale e diretta Righe commessa — sorgente del controllo B
LODPRESC lodpresc.k03 Lettura diretta Prescrizioni — verifica esistenza
LODCMTES lodcmtes.k05 Lettura diretta e per chia5 (piano) Testate commessa — verifica esistenza
LODPNRIG (via st/rdnxt) Lettura sequenziale Righe piano — sorgente del controllo C
filelog (definito nel sorgente) Scrittura binary-sequential (output) File di log delle anomalie

Il file filelog e' dichiarato manualmente (FD log-record da 300 caratteri + CR/LF) e scritto in ext-tmp-dir con nome #$logcogz58.txt.


Copybook incluse

Working Storage: feurtab.fd, cogz58.select, cogz58.fd, flsta.fd, flsta.cpy, cogz58.wrk, wstato.cpy, wopenf.cpy, wgrave.cpy, wnscr.cpy, cogazien.cpy, utils54.cpy, utils52.cpy, utilncnf.cpy

Linkage: wcont.cpy, wcont1.cpy

Screen: cogz58-01.scr

Procedure: stato1.cpy, stato.cpy, winmsg.cpy, grave.cpy, mmmask.cpy, opengen.cpy, cogz58.prc, lodpresc.k03, lodcmtes.k05


Logica di elaborazione

  1. Avvio: all'apertura viene aperto in output il file di log. Dopo la conferma (F3) si eseguono in sequenza b-elabora e c-elabora; il contatore righe lette (tm-r-l) e' mostrato a video.

  2. Controllo B (b-elabora): scorre LODCMRIG in ordine di chiave. Per ogni nuova commessa (lcr-com diversa dalla precedente, per evitare segnalazioni ripetute sulla stessa commessa):

  3. legge LODPRESC sulla prescrizione (lcr-prescrizione): se manca, segnala "manca la prescrizione";
  4. legge LODCMTES sul numero commessa (lcr-com): se manca, segnala "manca la testata commessa!".

  5. Controllo C (c-elabora): scorre LODPNRIG filtrando il tipo T. Per ogni riga piano:

  6. cerca LODCMTES per piano (chia5, lct-piano = lpr-cod): se non trovato, segnala "LODCMTES non trovato su piano";
  7. se il piano esiste, verifica il LODCMRIG corrispondente (commessa + riga = lpr-prog): se manca, segnala "LODCMRIG non trovato su piano; riga".

  8. Chiusura: se sono state prodotte anomalie (fl-log = "S"), comunica il percorso del file di log creato.


Paragrafi chiave

Paragrafo Scopo
apri Inizializzazione: apre file, apre in output il log, imposta titolo e tasti funzione
a-richiesta-conferma / a-90 Conferma ed esecuzione dei due controlli
b-elabora / b-10-loop Controllo righe commessa (LODCMRIG) contro LODPRESC e LODCMTES
c-elabora / c-10-loop Controllo righe piano (LODPNRIG) contro LODCMTES e LODCMRIG
errore-1 Scrive una riga di anomalia sul file di log (con CR/LF da flsta)
fine / z-chiudi Chiusura file (incluso il log) e uscita

Note

  • Il blocco di codice che cancellava le righe LODCMRIG orfane (con conferma F4) e' presente nel sorgente ma commentato: il programma resta quindi puramente diagnostico e non altera i dati.
  • Il controllo B evita segnalazioni multiple per la stessa commessa confrontando lcr-com con la commessa precedente (w-lcr-com).