COGZ21 - Gestione Analisi dei Rischi¶
Sorgente: cbl/cogz21.cbl | Program-ID: COGZ21 | Tipo: Programma interattivo di gestione tabella (maschera a tab)
Menu: Lab.Odont. > Archivi > Analisi dei Rischi
Scopo¶
Gestisce l'anagrafica delle "analisi dei rischi" del laboratorio odontotecnico (tabella LODRISCH). Ogni analisi e' identificata da un codice a 8 caratteri e contiene tre flag di classificazione (rischio accettabile, rischio riducibile, genera nuovi rischi) piu' tre blocchi di descrizione a testo libero: rischio individuato, trattamento e rischi residui.
I tre testi lunghi (2000 caratteri ciascuno in maschera) non sono memorizzati direttamente in LODRISCH ma su LODDESCR come descrizioni impaginate per tipo (R1 = rischio individuato, R2 = trattamento, R3 = rischi residui) e codice = codice analisi. La conversione tra il testo della maschera e le righe descrizione di LODDESCR e' delegata alla subroutine COGZDEW, che usa un file di lavoro temporaneo per operatore (LODTMDES) come area di transito.
Il programma supporta inserimento, variazione, cancellazione e "Salva con nome" (F1), che duplica l'analisi corrente su un nuovo codice. L'abilitazione all'aggiornamento e' governata dal flag w-dc-fl-agg ricevuto in linkage quando il programma e' chiamato da un altro modulo (z21-called = "COGZ21-CALLED").
File e tabelle¶
| File/Tabella | Tipo | Modalita' | Descrizione |
|---|---|---|---|
| FEURTAB | ISAM | Input | Parametri generali azienda (cogfiles.cpy) |
| LODRISCH | ISAM | I-O | Anagrafica analisi dei rischi (lrs-cod, lrs-fl-1/2/3) |
| LODDESCR | ISAM | I-O | Descrizioni R1/R2/R3 per codice analisi (lde-tip, lde-cod, lde-pro, lde-rec) |
| LODTMDES | ISAM (temp) | I-O | Buffer temporaneo descrizioni per operatore (ltd-tip, ltd-cod, ltd-pro, ltd-rec) |
LODTMDES e' un temporaneo per operatore (w-ltd-nome = ext-tmp-dir + #$COGz21.<operatore>), aperto in output esclusivo come lock di funzione: se l'open fallisce (stato diverso da "00") la funzione risulta gia' in uso da quell'operatore e il programma si chiude.
Copybook utilizzate¶
| Copybook | Descrizione |
|---|---|
cogz21.select, cogz21.fd, cogz21.wrk, cogz21-01.scr, cogz21.prc, cogz21.decla |
Screen Designer |
feurtab.fd, cogfiles.cpy |
FEURTAB |
lodtmdes.fd/.cpy/.k01 |
File temporaneo descrizioni |
wgrave.cpy, wnscr.cpy, wopenf.cpy, wstato.cpy, cogazien.cpy |
Working storage standard + dati azienda |
UTILWZ02.CPY |
Linkage subroutine di ricerca/aiuto SENDWZ02 |
utilncnf.cpy |
Linkage RNEWCONF |
utilzde.cpy |
Linkage subroutine COGZDEW (impaginazione descrizioni) |
wcont.cpy, UTILz21.CPY, wcont1.cpy |
Linkage di chiamata |
grave.cpy, mmmask.cpy, opengen.cpy, stato.cpy, stato1.cpy, winmsg.cpy |
Copybook di fine procedure |
SENDWZ02.CPY |
Routine di invio a WZ02 |
Logica¶
Struttura goto-driven a paragrafi di accept per ogni campo della maschera (tab control). Flusso principale:
- apri:
z-99-init-program,ctr-abil,rd-azi,open-files; recupera i dati di chiamata (z21-called,z21-cod,z21-fl-agg); abilita i tasti funzione (F3 conferma/aggiorna, F4 cancella, F8 aiuto); carica bitmaplabodonto2e crea il pulsante custom "Salva Con Nome (F1)";rd-msk-pop;z-costruisci-controlli. - a4: reset
tab-maschera(defaulttm-fl-2 = "S", gli altri "N"),z-carica-controlli, disattiva F3/F4; costruisce il nome del temporaneow-ltd-nome, chiude/riapre LODTMDES in output come lock, poi in i-o. Se chiamato (w-dc-called = "S") salta aa-10-read. - a-tm-cod: accept del codice, con aiuto F8 via
send-wz02; controlla obbligatorieta' (x-controlla-tm-cod). - a-10-read: legge LODRISCH (
rd-lodrisch-lk); se non esiste modalita' inserimento (fl-ela = "I", F3 aggiorna attivo), altrimenti modalita' variazione (fl-ela = "V",a1-carica). - a1-carica: carica i tre flag e chiama
a2-carica-des(R1/R2/R3) per copiare le righe da LODDESCR a LODTMDES; poi tre chiamate aCOGZDEW(Da-file-a-zde-note) per riversare i testi impaginati nei campi mascheratm-rischio-individuato,tm-trattamento,tm-rischi-residui. - a-tm-rischio-individuato / a-tm-trattamento / a-tm-rischi-residui / a-tm-fl-1 / a-tm-fl-2 / a-tm-fl-3: paragrafi di accept dei singoli campi; ciascuno gestisce F1 (salva con nome, solo in variazione), F3/F4 (verso
a-richiesta-conferma), navigazione F2, mouse. Ogni accept di aggiornamento richiedew-dc-fl-agg <> "N". - a-richiesta-conferma: valida i campi (
x-imposta-conferma), chiede conferma (acc-conf); su F3 esegue variazione (c-cancella+b-inserisci) o inserimento (b-inserisci); su F4 esegue cancellazione (c-cancella). - b-inserisci: scrive il record LODRISCH (flag) e, per ciascun tipo R1/R2/R3, chiama
COGZDEW(Da-zde-note-A-file) per riversare il testo maschera nel temporaneo, poib1-inseriscicopia le righe da LODTMDES a LODDESCR. - c-cancella / c1-cancella: cancella il record LODRISCH e le relative righe LODDESCR (R1/R2/R3).
- a3-salva-con-nome: chiede un nuovo codice non esistente (
x-controlla-tm-cod-nuovoverifica che non esista gia' in LODRISCH), poi salva i dati correnti con il nuovo codice. - fine / z-chiudi:
z-close-files, chiude e cancella (delete file) LODTMDES,cancel "COGZDEW",exit program.
CALL¶
| Programma | Scopo |
|---|---|
COGZDEW |
Impaginazione/conversione testi descrizione tra maschera e LODDESCR (via LODTMDES) |
SENDWZ02 (subroutine, via send-wz02) |
Aiuto/ricerca sul codice analisi |
Note¶
- Il codice usa
PERFORM ... THRUeGO TOin modo estensivo (stile legacy pre-convenzioni attuali); non e' stato riscritto. - I tre testi lunghi sono persistiti in LODDESCR con tipi
R1,R2,R3; il codice analisi funge dalde-cod. La chiave secondaria di LODDESCR non e' usata (accesso solo per chiave primaria viast-loddescr-notmin). - Il flag
tm-fl-2(rischio riducibile) e' preimpostato a "S" all'ingresso di ogni nuova gestione. - Il lock di funzione via LODTMDES e' per-operatore: due operatori diversi possono lavorare in parallelo, lo stesso operatore no.