Vai al contenuto

COGY26 - Stampa etichette nome paziente/data

Sorgente: cbl/cogy26.cbl | Program-ID: COGY26 | Tipo: Programma interattivo (maschera parametri + stampa HPGL)

Menu: Lab.Odont. > Operativo > Stampe > Etichette nome paziente/data (anche seconda voce di Lab.Odont. > Archivi > Stampe)

Nota: nonostante il prefisso cogy, COGY26 non e' un gestore tabella generato (i gestori generati sono i file Y*.cbl). E' un programma applicativo vero.


Scopo

Stampa etichette adesive con nome del paziente (tre righe di testo) e data, in linguaggio HPGL su fogli A4 predisposti a griglia 4 colonne x 11 righe (44 etichette/foglio). Permette di accodare fino a 100 pazienti prima del lancio stampa. La commessa, se indicata, precompila il nome paziente dalla prescrizione.

Puo' essere richiamato da altro programma (modalita' "called", vedi utily26.cpy).


File e tabelle

File/Tabella Tipo Modalita' Descrizione
FEURTAB ISAM Input Parametri generali azienda (cogfiles.cpy)
LODPRESC ISAM Input Prescrizione medica; letta per chiave 4 (lpm-num = commessa) tramite rd-lodpresc-chia4-lk. Campi usati: lpm-paz, lpm-paz-esteso
FLSTA PRINT Output Flusso di stampa (assign to print 'PRINTER', record riga x(136))

La chiave secondaria della prescrizione e' inclusa da lodpresc.k04.

Copybook utilizzate

Copybook Descrizione
cogy26.select, cogy26.fd, cogy26.wrk, cogy26-01.scr, cogy26.prc, cogy26.decla Screen Designer
cogfiles.cpy Layout FEURTAB
k-personal.cpy Costanti personalizzazioni
wgrave, wnscr, wopenf, wstato, cogazien Working storage standard + dati azienda
utillogo.cpy Logo/stampa
utilu05, utils52, utils54, utils65, utilu10 Utility controlli/subroutine maschera (util-s54 per scelta stampante)
utilncnf.cpy Linkage RNEWCONF (lettura configurazione)
utily26.cpy Linkage di chiamata esterna (in linkage section)
wcont, wcont1 Contesto chiamata
mmmask, grave, opengen, stato, stato1, winmsg Copybook fine procedure

Dati sorgente e formato etichetta

Ogni paziente accodato e' un elemento di tab-maschera-bis (occurs 100). Campi rilevanti:

  • tm-commessa 9(10) - numero commessa (opzionale)
  • tm-paziente, tm-paziente1, tm-paziente2 - nome paziente su 3 righe (17/17/16)
  • tm-data 9(8) - data (AAAAMMGG), default data di sistema
  • tm-copie 9(4) - copie per paziente (min 1)
  • tm-v-pos (fila 1-11) e tm-o-pos (colonna 1-4) - posizione di partenza nel foglio

L'etichetta viene composta in HPGL (paragrafo b2-stampa-hpgl-eti): tre stringhe LB con le tre righe del nome (font SD1,...,4,9,...), poi la data formattata gg/mm/aaaa (font SD1,...,4,10,...) spostata a destra di 500 unita'. Le coordinate assolute w-hpg-h-pos/w-hpg-v-pos sono calcolate dalla posizione corrente (w-hpg-*-dim = 1000x1920, offset 300).

Logica (flusso, paragrafi principali)

  • apri: init programma, x99-confi (legge la configurazione), impone griglia 11x4 (w-kyo-v-max=11, w-kyo-h-max=4), imposta titolo. Se y26-in-call = 'COGY26-CALLED' carica y26-commessa in tm-commessa e precompila.
  • a3/a4: reset accumulatore tab-maschera-bis e del record di lavoro (data di sistema, 1 copia).
  • a-tm-commessa ... a-tm-v-pos: sequenza di accept dei campi (commessa, 3 righe paziente, data con F8 calendario via util-s52, copie, colonna, fila). Ogni campo ha il suo x-controlla-.... F3/F9 saltano a a-richiesta-conferma.
  • carica-tm-commessa: se commessa <> 0, legge LODPRESC; se non trovata -> "Commessa non trovata"; se righe paziente vuote precompila da lpm-paz-esteso (spezzato 14/14/12) o da lpm-paz.
  • a-richiesta-conferma: con F3 accoda il record in tab-maschera-bis(w-i1) (max 100, altrimenti "Memorizzati 100 pazienti"). Con F9 procede alla stampa.
  • a900: chiama COGS54 (util-s54, emulazione 'HPLJ3', 136 col) per la scelta stampante; se ESC torna alla maschera. Se nessun paziente accodato usa quello corrente. Poi b-stampa.
  • b-stampa: apre FLSTA, cs1-print, scrive header emulazione, calcola w-posizione = ((tm-o-pos-1)*4)+tm-v-pos, imposta stampante (b1-set-printer-hpgl: reset, &l26a, &l0O, eventuale tm-cfg-formatta, IN;SP1;...), stampa (b2-stampa), reset (b3-reset-printer), chiude FLSTA.
  • b2-stampa / b2-stampa-hpgl / b2-stampa-hpgl-eti: doppio ciclo su pazienti accodati x copie; per ogni etichetta scrive i comandi HPGL e avanza posizione (b23-avanza-etichetta: incrementa colonna, poi riga, wrap a foglio pieno). Al superamento della 44a etichetta resetta e reimposta la stampante.
  • fine/z-chiudi: chiude file e finestra, exit program.

Configurazione (RNEWCONF)

x99-confi legge da ODONTO.CNF, pacchetto "C", chiave Formattazione-COGZ90 -> tm-cfg-formatta (comandi di formattazione stampante iniettati in b1-set-printer-hpgl).

CALL

Programma Scopo
COGS54 Selezione periferica di stampa (util-s54)
RNEWCONF Lettura configurazione (Formattazione-COGZ90)

Le altre subroutine (COGS52 calendario, ecc.) sono attivate dai copybook utils*/send* standard di maschera.

Note

  • Massimo pazienti accodabili per sessione: 100 (ele-maschera-bis occurs 100).
  • Layout foglio fisso a 11x4 = 44 etichette; l'avanzamento e' orizzontale-prima (colonne), poi verticale.
  • Controlli posizione: fila 1-4 (tm-v-pos), colonna 1-11 (tm-o-pos) nei paragrafi x-controlla-tm-v-pos/x-controlla-tm-o-pos; abilitati solo se la stampante e' in modalita' foglio A4 (x-enabled-*).
  • In modalita' "called" al termine stampa esce (go to fine), altrimenti riparte da a3.