COGZ22 - Gestione Piani di Controllo¶
Sorgente: cbl/cogz22.cbl | Program-ID: COGZ22 | Tipo: Programma interattivo di gestione tabella (maschera a tab)
Menu: Lab.Odont. > Archivi > Piani di Controllo
Scopo¶
Gestisce l'anagrafica dei "piani di controllo" del laboratorio odontotecnico (tabella LODCONTR). Ogni piano e' identificato da un codice a 8 caratteri e comprende: descrizione, responsabile, flag "da eseguire" e due blocchi di testo libero (mezzo e modalita' di controllo).
Come per COGZ21 (Analisi dei Rischi), i due testi lunghi (2000 caratteri in maschera) non risiedono in LODCONTR ma su LODDESCR come descrizioni impaginate per tipo (C1 = mezzo, C2 = modalita') e codice = codice piano. La conversione tra maschera e righe LODDESCR e' delegata alla subroutine COGZDEW, che usa il temporaneo per operatore LODTMDES come area di transito.
Il programma supporta inserimento, variazione, cancellazione e "Salva con nome" (F1). Un pulsante custom "Gestione problemi (F5)" richiama COGZA2 per la gestione dei problemi associati al piano. Il tasto F1 (configura) in fase di ricerca codice permette di modificare la configurazione RNEWCONF esecuzione-piani-controllo.
File e tabelle¶
| File/Tabella | Tipo | Modalita' | Descrizione |
|---|---|---|---|
| FEURTAB | ISAM | Input | Parametri generali azienda (cogfiles.cpy) |
| LODCONTR | ISAM | I-O | Anagrafica piani di controllo (lcn-cod, lcn-des, lcn-rsp, lcn-da-eseguire) |
| LODDESCR | ISAM | I-O | Descrizioni C1/C2 per codice piano (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 + #$COGZ22.<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 |
|---|---|
cogz22.select, cogz22.fd, cogz22.wrk, cogz22-01.scr, cogz22.prc, cogz22.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 |
utilza2.cpy |
Linkage subroutine COGZA2 (gestione problemi) |
UTILWZ01.CPY |
Linkage subroutine di ricerca/aiuto SENDWZ01 |
utilncnf.cpy |
Linkage RNEWCONF |
utilzde.cpy |
Linkage subroutine COGZDEW (impaginazione descrizioni) |
wcont.cpy, UTILZ22.CPY, wcont1.cpy |
Linkage di chiamata |
grave.cpy, mmmask.cpy, opengen.cpy, stato.cpy, stato1.cpy, winmsg.cpy |
Copybook di fine procedure |
SENDWZ01.CPY |
Routine di invio a WZ01 |
Logica¶
Struttura goto-driven a paragrafi di accept per ogni campo. Flusso principale:
- apri: init,
open-files, recupero dati di chiamata (z22-called,z22-cod,z22-fl-agg); abilita tasti F1 configura, F3 conferma/aggiorna, F4 cancella, F8 aiuto; carica bitmaplabodonto2e crea i pulsanti custom "Salva con nome (F1)" e "Gestione problemi (F5)";rd-msk-pop; legge la configurazione (x99-confi);z-costruisci-controlli. - a4: reset
tab-maschera(defaulttm-da-eseguire = "S"),z-carica-controlli, disattiva F3/F4 e pulsante F5; costruiscew-ltd-nomee apre LODTMDES come lock. Se chiamato salta aa-10-read. - a-tm-cod: accept del codice; F8 aiuto via
send-wz01(wz01-tip-vis = "C", ricerca per codice); F1 configura (modifica RNEWCONF). - a-tm-des-1: campo di ricerca per descrizione; via
send-wz01(wz01-tip-vis = "D") risolve il codice piano. - a-10-read: legge LODCONTR (
rd-lodcontr-lk); se non esiste modalita' inserimento (fl-ela = "I", F3 aggiorna + pulsante F5 attivi), altrimenti variazione (fl-ela = "V",a1-carica). - a1-carica: carica descrizione, responsabile e (se
tm-cfg-da-eseguire = "S") il flag "da eseguire"; poia2-carica-des(C1/C2) copia le righe da LODDESCR a LODTMDES e due chiamate aCOGZDEW(Da-file-a-zde-note) riversano i testi intm-mezzoetm-modalita. - a-tm-des / a-tm-resp / a-tm-da-eseguire / a-tm-mezzo / a-tm-modalita: paragrafi di accept; ciascuno gestisce F1 (salva con nome in variazione), F3/F4 (verso
a-richiesta-conferma), F5 (chiama-cogza2), navigazione F2, mouse. Il campotm-da-eseguiree' saltato se non visibile (x-visible-tm-da-eseguire = 0, dipende dalla configurazione). - a-richiesta-conferma: valida i campi, chiede conferma; su F3 esegue variazione (
c-cancella+b-inserisci) o inserimento; su F4 esegue cancellazione. - b-inserisci: scrive LODCONTR (descrizione, responsabile,
lcn-da-eseguire= valore maschera solo se configurato, altrimenti "N"); poi due chiamate aCOGZDEW(Da-zde-note-A-file) per riversare i testi nel temporaneo, conb1-inserisciche copia da LODTMDES a LODDESCR (tipi C1/C2). - c-cancella / c1-cancella: cancella LODCONTR e le righe LODDESCR C1/C2.
- a3-salva-con-nome: chiede un nuovo codice non esistente (verifica in LODCONTR), duplica i dati correnti.
- chiama-cogza2:
initialize util-za2, impostaza2-caller/za2-called/za2-in-cod(codice piano),CALL "COGZA2",CANCEL "COGZA2". - fine / z-chiudi:
z-close-files, chiude e cancella LODTMDES,cancel "COGZDEW",exit program.
Configurazioni (RNEWCONF)¶
Pacchetto "C", punto 01, gruppo ODONTO:
| Chiave | Uso |
|---|---|
esecuzione-piani-controllo |
Se "S", il campo/flag "da eseguire" (tm-cfg-da-eseguire) e' gestito e salvato in lcn-da-eseguire; altrimenti forzato a "N" (x99-confi) |
Il tasto F1 in a-tm-cod richiama x99-confi con ncnf-ope = "Modifica" per editare la configurazione.
CALL¶
| Programma | Scopo |
|---|---|
COGZDEW |
Impaginazione/conversione testi descrizione tra maschera e LODDESCR (via LODTMDES) |
COGZA2 |
Gestione problemi associati al piano di controllo (F5) |
RNEWCONF |
Lettura/modifica configurazione ODONTO |
SENDWZ01 (subroutine, via send-wz01) |
Aiuto/ricerca sul codice o descrizione piano |
Note¶
- Il codice usa
PERFORM ... THRUeGO TOin modo estensivo (stile legacy pre-convenzioni attuali). - I due testi lunghi sono persistiti in LODDESCR con tipi
C1(mezzo) eC2(modalita'); il codice piano funge dalde-cod. - Il flag "da eseguire" e' condizionato alla configurazione
esecuzione-piani-controllo: se non abilitata, il campo non e' gestito e il valore memorizzato e' sempre "N". - Il lock di funzione via LODTMDES e' per-operatore.
- Struttura e organizzazione della maschera sono paralleli a COGZ21; la differenza principale e' l'uso di LODCONTR (con descrizione/responsabile/flag) al posto di LODRISCH (solo tre flag) e la gestione problemi via COGZA2.