COGZO2 -- Stampa tabelle ortodonzia per compilazione cartelle¶
Sorgente: cbl/cogzo2.cbl | Tipo: Programma di menu / stampa | Program-ID: COGZO2
Menu: Lab.Odont. > Ortodonzia > Tabelle > Stampe [Tabelle x Cartelle]
Scopo¶
COGZO2 produce il tabulato dei codici a barre usati per compilare le "cartelle" ortodontiche. Scandisce le voci di dominio ortodontiche in LODTABEL di tipo 12, limitatamente alle tabelle di tipo "cartella" (prefisso 2), e per ogni voce stampa il relativo codice a barre affiancato dalla descrizione (lta-12-des).
La maschera consente di scegliere il tipo di cartella tramite la combo tm-tip (F=ortodonzia fissa, M=ortodonzia mobile) e il numero di copie (tm-cop). Il tipo scelto determina la prima cifra del codice a barre e l'intestazione stampata.
A differenza di COGZO0, la disposizione delle voci e' orizzontale: i codici dello stesso livello vengono affiancati sulla stessa riga finche' c'e' spazio, poi si va a capo. Per calcolare l'ingombro effettivo delle descrizioni il programma si appoggia alla subroutine COGFNT (larghezza della frase per un dato font). La stampa avviene su stampante laser Kyocera in emulazione PRESCRIBE tramite il file di spool FLSTA; la scelta stampante e' delegata a COGS54.
Struttura del codice a barre¶
Il codice e' composto da 6 cifre:
- pos. 1: codifica del tipo tabella (
1=ortodonzia fissa,2=ortodonzia mobile), datm-tip; - pos. 2-3: codice fascia (
lta-11222-3); - pos. 4-5: codice livello (
lta-11222-4); - pos. 6: codice sottolivello (
lta-11222-5).
File e tabelle principali¶
| File/Tabella | Copybook | Uso |
|---|---|---|
| FEURTAB | feurtab.fd, cogfiles.cpy |
Parametri generali azienda (lettura, rd-azi) |
| LODTABEL | lodtabel.fd (cogzo2.select), lodtabel.cpy (cogzo2.fd) |
Voci tabelle ortodonzia tipo 12: filtro lta-tipo=12, lta-11222-1='2' (cartella) e lta-11222-2=tm-cod; campi letti lta-11222-3/4/5 (fascia/livello/sottolivello) e lta-12-des (descrizione) |
| FLSTA | flsta.fd, flsta.cpy |
File di spool di stampa: scrittura dei comandi PRESCRIBE (write riga) |
LODTABEL e' scandita in sola lettura tramite i gestori generati st-lodtabel-notmin (posizionamento) e rdnxt-lodtabel (lettura sequenziale), con rottura sui campi chiave lta-tipo/lta-11222-1/lta-11222-2.
Programmi chiamati¶
| Programma | Ruolo |
|---|---|
| COGS54 | Selettore stampante / gestione parametri di stampa (chiamato prima con s54-emu = "PRESCRIBE" e dopo la stampa con s54-after-print = "S") |
| COGFNT | Calcolo della lunghezza grafica di una frase per un dato font (operazione "Ritorna-Lunghezza-Frase"), usato per l'incolonnamento orizzontale (cancel "COGFNT" in chiusura) |
Flusso principale¶
main / apri-- init programma, abilitazioni, lettura azienda, apertura file; impostazione tasti funzione, titolo maschera "Stampa tabelle x cartelle",rd-msk-pope costruzione controlli.a4-- inizializza la maschera e impostatm-tip = 'F'(ortodonzia fissa) come default.a-tm-tip-- accept della combo tipo cartella (gestita via COGS60,z-s60-tm-tip).a-tm-cop-- accept del numero copie (e-tm-cop);x-controlla-tm-copverifica che sia maggiore di zero. F3 porta aa-richiesta-conferma.a-90-- chiamaCOGS54per la scelta stampante; con F3 conferma esegueb-stampa, poi richiamaCOGS54in coda e ne fa ilcancel.b-stampa-- inizializza i parametri Kyocera, imposta la stampante (b1-set-printer/b1-set-page), esegueb2-stampapertm-copvolte e chiude la stampante (b3-reset-printer).b2-stampa-- stampa l'intestazione (b21-testa), poi posiziona suLODTABEL(tipo 12, prefisso2, tabellatm-cod) e cicla surdnxt-lodtabel: per ogni voce calcola conCOGFNTla larghezza della descrizione, gestisce l'incolonnamento orizzontale (voci dello stesso livello affiancate, a capo con rientro se non c'e' spazio), inserisce le linee di separazione a cambio fascia o quando la descrizione inizia per "---", calcola il codice a barre e lo stampa insieme alla descrizione.b21-testa-- stampa l'intestazione con il titolo che varia in base atm-tip(ortodonzia fissa/mobile).b22-separazione-- traccia la linea di separazione tra fasce.b23-st-des-- stampa la descrizione gestendo l'eventuale presenza di apici (delimitatori alternati'/").fine / z-chiudi-- chiusura file, chiusura finestra,z-99-exit-program,cancel "COGFNT",exit program.
Note¶
- Programma di sola stampa: non aggiorna
LODTABEL, la legge soltanto. - L'incolonnamento orizzontale usa la memoria
tab-posizioni-diverseper allineare l'inizio del bar code degli elementi con sottolivello diverso da zero a quello del medesimo sottolivello della riga precedente. - Le voci la cui descrizione inizia per "---" non vengono stampate come voce: producono solo una linea di separazione e vengono saltate.
- Le righe di stampa sono comandi PRESCRIBE per Kyocera; il posizionamento assoluto e' inviato da
b21-set-map/b21-set-dap, che convertono la virgola decimale in punto. - La gestione tabelle ortodonzia tipo 12 e' condivisa con COGZO0 (stampa per lettere), che usa lo stesso
LODTABELcon prefisso1.
Documentazione tecnica -- 2026-08-05