Vai al contenuto

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), da tm-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

  1. main / apri -- init programma, abilitazioni, lettura azienda, apertura file; impostazione tasti funzione, titolo maschera "Stampa tabelle x cartelle", rd-msk-pop e costruzione controlli.
  2. a4 -- inizializza la maschera e imposta tm-tip = 'F' (ortodonzia fissa) come default.
  3. a-tm-tip -- accept della combo tipo cartella (gestita via COGS60, z-s60-tm-tip).
  4. a-tm-cop -- accept del numero copie (e-tm-cop); x-controlla-tm-cop verifica che sia maggiore di zero. F3 porta a a-richiesta-conferma.
  5. a-90 -- chiama COGS54 per la scelta stampante; con F3 conferma esegue b-stampa, poi richiama COGS54 in coda e ne fa il cancel.
  6. b-stampa -- inizializza i parametri Kyocera, imposta la stampante (b1-set-printer/b1-set-page), esegue b2-stampa per tm-cop volte e chiude la stampante (b3-reset-printer).
  7. b2-stampa -- stampa l'intestazione (b21-testa), poi posiziona su LODTABEL (tipo 12, prefisso 2, tabella tm-cod) e cicla su rdnxt-lodtabel: per ogni voce calcola con COGFNT la 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.
  8. b21-testa -- stampa l'intestazione con il titolo che varia in base a tm-tip (ortodonzia fissa/mobile).
  9. b22-separazione -- traccia la linea di separazione tra fasce.
  10. b23-st-des -- stampa la descrizione gestendo l'eventuale presenza di apici (delimitatori alternati '/").
  11. 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-diverse per 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 LODTABEL con prefisso 1.

Documentazione tecnica -- 2026-08-05