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
LODCMRIGe segnala le righe per cui manca la prescrizione (LODPRESC) e/o la testata commessa (LODCMTES). - C — righe piano senza riga commessa: scorre
LODPNRIG(tipoT) e segnala i piani senzaLODCMTEScollegato e le righe piano senza il corrispondenteLODCMRIG.
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¶
-
Avvio: all'apertura viene aperto in output il file di log. Dopo la conferma (F3) si eseguono in sequenza
b-elaboraec-elabora; il contatore righe lette (tm-r-l) e' mostrato a video. -
Controllo B (
b-elabora): scorreLODCMRIGin ordine di chiave. Per ogni nuova commessa (lcr-comdiversa dalla precedente, per evitare segnalazioni ripetute sulla stessa commessa): - legge
LODPRESCsulla prescrizione (lcr-prescrizione): se manca, segnala "manca la prescrizione"; -
legge
LODCMTESsul numero commessa (lcr-com): se manca, segnala "manca la testata commessa!". -
Controllo C (
c-elabora): scorreLODPNRIGfiltrando il tipoT. Per ogni riga piano: - cerca
LODCMTESper piano (chia5,lct-piano = lpr-cod): se non trovato, segnala "LODCMTES non trovato su piano"; -
se il piano esiste, verifica il
LODCMRIGcorrispondente (commessa + riga =lpr-prog): se manca, segnala "LODCMRIG non trovato su piano; riga". -
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
LODCMRIGorfane (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-comcon la commessa precedente (w-lcr-com).