Vai al contenuto

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 bitmap labodonto2 e crea il pulsante custom "Salva Con Nome (F1)"; rd-msk-pop; z-costruisci-controlli.
  • a4: reset tab-maschera (default tm-fl-2 = "S", gli altri "N"), z-carica-controlli, disattiva F3/F4; costruisce il nome del temporaneo w-ltd-nome, chiude/riapre LODTMDES in output come lock, poi in i-o. Se chiamato (w-dc-called = "S") salta a a-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 a COGZDEW (Da-file-a-zde-note) per riversare i testi impaginati nei campi maschera tm-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 richiede w-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, poi b1-inserisci copia 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-nuovo verifica 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 ... THRU e GO TO in 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 da lde-cod. La chiave secondaria di LODDESCR non e' usata (accesso solo per chiave primaria via st-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.