Vai al contenuto

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 bitmap labodonto2 e 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 (default tm-da-eseguire = "S"), z-carica-controlli, disattiva F3/F4 e pulsante F5; costruisce w-ltd-nome e apre LODTMDES come lock. Se chiamato salta a a-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"; poi a2-carica-des (C1/C2) copia le righe da LODDESCR a LODTMDES e due chiamate a COGZDEW (Da-file-a-zde-note) riversano i testi in tm-mezzo e tm-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 campo tm-da-eseguire e' 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 a COGZDEW (Da-zde-note-A-file) per riversare i testi nel temporaneo, con b1-inserisci che 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, imposta za2-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 ... THRU e GO TO in modo estensivo (stile legacy pre-convenzioni attuali).
  • I due testi lunghi sono persistiti in LODDESCR con tipi C1 (mezzo) e C2 (modalita'); il codice piano funge da lde-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.