COGZ73 - Tabelle per Composizione Lettera Ortodontica¶
Sorgente: cbl/cogz73.cbl | Program-ID: COGZ73 | Tipo: Programma interattivo (manutenzione tabelle a griglia)
Menu: Lab.Odont. > Ortodonzia > Tabelle > Tabelle x Lettera
Scopo¶
Gestisce le tabelle di frasi/descrizioni usate per comporre automaticamente la lettera ortodontica. Le tabelle sono memorizzate su LODTABEL con tipo tabella 12 e primo byte del codice = "1" (identificativo "lettera", w-prf-lettera). Per ciascuna tabella (identificata da un codice a un carattere) l'operatore gestisce:
- una descrizione tabella e una descrizione stampa (testata);
- un elenco di righe, ciascuna individuata da fascia e livello, con la descrizione (frase) corrispondente.
Le righe sono presentate in una griglia editabile (GRIDADMN): l'operatore puo' aggiungere, modificare, eliminare le voci e, tramite i pulsanti "Copia descrizione" (F1) / "Incolla descrizione" (F7), riportare rapidamente il testo di una riga su un'altra. Alla conferma l'intera tabella viene riscritta su LODTABEL (cancellazione dei record esistenti e reinserimento).
File e tabelle¶
| File/Tabella | Tipo | Modalita' | Descrizione |
|---|---|---|---|
| FEURTAB | ISAM | Input | Parametri generali azienda (cogfiles.cpy) |
| LODTABEL | ISAM | I-O | Archivio tabelle di sistema; per la lettera ortodontica: lta-tipo = 12, codice a 5 componenti (lta-11222-1 = "1" lettera, lta-11222-2 = codice tabella, lta-11222-3 = fascia, lta-11222-4 = livello, lta-11222-5 = 0), descrizione in lta-12-des (lodtabel.cpy, tipo 12) |
Struttura dei record LODTABEL usati:
- testata: lta-11222-3/4/5 = 0 con lta-12-des = descrizione tabella;
- testata stampa: lta-11222-4 = 1 (con lta-11222-3 = 0) con lta-12-des = descrizione stampa;
- righe: lta-11222-3 = fascia, lta-11222-4 = livello, lta-12-des = frase.
Copybook utilizzate¶
| Copybook | Descrizione |
|---|---|
cogz73.select, cogz73.fd, cogz73.wrk, cogz73-01.scr, cogz73.prc, cogz73.decla |
Screen Designer |
feurtab.fd, cogfiles.cpy |
FEURTAB |
wgrave.cpy, wgrid.cpy, wnscr.cpy, wopenf.cpy, wstato.cpy, cogazien.cpy |
Working storage standard + griglia + dati azienda |
utilgdad.cpy, utilgrid.cpy |
Linkage e utility per la griglia GRIDADMN |
utils99.cpy |
Linkage COGS99 |
utilw52.cpy |
Gestione W52 (accesso LODTABEL: rd-lodtabel, wr-lodtabel, del-lodtabel, st-lodtabel-may, rdnxt-lodtabel, ecc.) |
wcont.cpy, wcont1.cpy |
Linkage di programma |
stato.cpy, stato1.cpy, winmsg.cpy, grave.cpy, opengen.cpy, mmmask.cpy |
Copybook di fine procedure |
Logica¶
Struttura goto-driven con griglia editabile. Flusso principale:
- apri: init,
ctr-abil,open-files,rd-azi; abilita invio/invio-modifica, F3-conferma/F3-aggiorna, F8, Shift-F4 (personalizzazione griglia), Ctrl-A (aggiungi), Ctrl-E (elimina); carica la bitmaplabodontoe crea i pulsanti custom "Copia descrizione (F1)" e "Incolla descrizione (F7)";z-prepara-tm-grid,z-costruisci-controlli. - a4: reset maschera e tabella (
tm-tab,tm-pnt = 0);z-carica-controlli,z-costruisci-grid(griglia vuota); disattiva i tasti funzione sulla griglia. - a-tm-cod: accept del codice tabella (
tm-cod, 1 carattere). Legge da LODTABEL la testata (lta-11222-1 = "1",lta-11222-2 = tm-cod) e valorizzatm-des; legge la testata stampa (lta-11222-4 = 1) e valorizzatm-des-sta. F3 va aa-conferma-dati. - a-tm-des / a-tm-des-sta: accept della descrizione tabella e della descrizione stampa.
- a-conferma-dati -> a-inizio-dati:
x-imposta-conferma, poicarica-datilegge tutte le righe della tabella da LODTABEL intm-tab,z-costruisci-gridpopola la griglia; attiva i tasti funzione sulla griglia. - a-grid / a-accept-grid: ciclo di gestione della griglia:
- Ctrl-A: nuova riga (
a-operazione = "I") ->a-riga-dettaglio; - Invio: modifica riga corrente (
a-operazione = "M") ->a-riga-dettaglio; - Ctrl-E: elimina la riga (previa conferma), compattando l'array;
- F1: copia la descrizione della riga corrente in
w-desc; - F7: incolla
w-descnella riga corrente e aggiorna la cella (GRIDADMN "Modify-Record"); - F3: conferma l'intera tabella (
aggiorna) e torna aa4; - Shift-F4: personalizzazione griglia (GRIDADMN).
- a-riga-dettaglio: pannello di dettaglio riga (fascia, livello, descrizione).
- a-tm-r-fascia / a-tm-r-livello / a-tm-r-des: accept dei campi della riga; ESC annulla le modifiche (
a-tm-to-tf), F3 va aa-riga-dettaglio-fine. - a-riga-dettaglio-fine: valida (
x-imposta-conferma-dettaglio); su conferma aggiorna la griglia con GRIDADMN ("Add-Record" in inserimento, "Modify-Record" in modifica) e torna aa-grid. - aggiorna: riscrive la tabella su LODTABEL: cancella tutti i record esistenti della tabella (loop
st-lodtabel-may/rdnxt-lodtabel-lk->del-lodtabel), poi reinserisce le righe presenti intm-tab(wr-lodtabel, segnalando eventuali duplicati fascia/livello). Aggiorna infine la testata (lta-12-des = tm-des) e la testata stampa (lta-11222-4 = 1,lta-12-des = tm-des-sta); se la tabella e' vuota (fl-agg = "N") cancella le testate. - fine / z-chiudi:
z-close-files, chiusura finestra,z-99-exit-program,exit program.
CALL¶
| Programma | Scopo |
|---|---|
GRIDADMN |
Gestione della griglia editabile (Prepara, Svuota-Tutto, Add-Record, Modify-Record) e personalizzazione colonne |
Note¶
- Il codice usa
PERFORM ... THRUeGO TOin modo estensivo, e una griglia gestita via GRIDADMN (stile legacy pre-convenzioni attuali). - Discriminante lettera/cartella: COGZ73 gestisce le tabelle lettera (
lta-11222-1 = "1",w-prf-lettera); le tabelle cartella sono gestite dal gemello COGZ75 (lta-11222-1 = "2"). - La griglia mostra il codice riga come "fascia/livello" (
grd-cod=tm-r-fascia/tm-r-livello) e la relativa descrizione. - La descrizione "stampa" e' un record LODTABEL separato dalla testata: ha la stessa chiave della testata ma con
lta-11222-4 = 1, ed e' la descrizione effettivamente riportata nella lettera. - Il numero massimo di righe gestibili per tabella e' 300 (
k-max-ele-tab). - I paragrafi
c-cancellaec1-ctrl-canc(controllo cancellazione) sono presenti ma senza logica specifica: l'eliminazione della riga opera solo in memoria (compattazione array) e viene resa persistente solo alla conferma della tabella tramiteaggiorna.