COGZO3 - Ristampa Lettera/Cartella Ortodontica¶
Sorgente: cbl/cogzo3.cbl | Program-ID: COGZO3 | Tipo: Programma interattivo (ristampa documento ortodontico)
Menu: Lab.Odont. > Ortodonzia > Ristampa Documento
Nota sulla funzione reale: l'etichetta di menu recita "Ristampa Documento". Il programma ristampa in particolare i documenti del fascicolo ortodontico gia' generati per una commessa: le Lettere (tipo "L") e le Cartelle (tipo "C") ortodontiche archiviate su LODDFORT. Non genera nuovi documenti, ne' li modifica: recupera un documento esistente e lo reinvia in stampa.
Scopo¶
Consente di ristampare una Lettera o una Cartella ortodontica gia' prodotta per una commessa di laboratorio. L'operatore identifica la prescrizione/commessa tramite la ricerca generica (studio medico, paziente, progressivo, numero commessa) via COGS98W; il programma verifica che la prescrizione esista, quindi chiede il tipo documento ("L" = Lettera, "C" = Cartella) e il numero documento all'interno della commessa. Verificata l'esistenza del documento su LODDFORT (rd-loddfort), viene selezionata la stampante/emulazione tramite COGS54 e poi lanciato dinamicamente il sottoprogramma di composizione ed emissione del documento (COGZO3L per le lettere, COGZO3C per le cartelle).
Il programma puo' essere avviato anche come funzione richiamata da un altro programma (chiamata "COGZO3-CALLED", vedi copybook utilzo3.cpy): in tal caso riceve gia' numero commessa, tipo documento e numero documento, salta la fase interattiva di scelta e va direttamente alla stampa.
File e tabelle¶
| File/Tabella | Tipo | Modalita' | Descrizione |
|---|---|---|---|
| FEURTAB | ISAM | Input | Parametri generali azienda (cogfiles.cpy) |
| LODPRESC | ISAM | Input | Prescrizione (gestita tramite COGS98W) |
| LODCMTES | ISAM | Input | Testata commessa (gestita tramite COGS98W) |
| LODDFORT | ISAM | Input | Documento del fascicolo ortodontico: chiave ldf-commessa + ldf-tip ("L"/"C") + ldf-num; dati ldf-data, ldf-rif-lettera (loddfort.cpy) |
| FLSTA | file di stampa | Output | File di spool/stampa gestito nella declaratives (flsta.fd, flsta.cpy) |
Copybook utilizzate¶
| Copybook | Descrizione |
|---|---|
cogzo3.select, cogzo3.fd, cogzo3.wrk, cogzo3-01.scr, cogzo3.prc, cogzo3.decla |
Screen Designer |
feurtab.fd, cogfiles.cpy |
FEURTAB |
flsta.fd, flsta.cpy |
File di stampa FLSTA |
wstato.cpy, wopenf.cpy, wgrave.cpy, wnscr.cpy, cogazien.cpy |
Working storage standard + dati azienda |
utils54.cpy |
Linkage COGS54 (selezione stampante/emulazione) |
utils52.cpy, utils98.cpy |
Linkage COGS52, COGS98W |
utilzde.cpy |
Linkage COGZDEW (editor descrizioni) |
utilfnt.cpy |
Gestione font |
utilzs3.cpy |
Linkage util-zs3 (commessa/tipo doc/allegato) |
utilzo3x.cpy |
Linkage util-zo3x passato ai sottoprogrammi COGZO3L/COGZO3C (zo3x-commessa, zo3x-tip, zo3x-num) |
wcont.cpy, utilzo3.cpy, wcont1.cpy |
Linkage di programma; utilzo3.cpy definisce i dati di chiamata (zo3-called, zo3-commessa, zo3-tip-doc, zo3-num-doc) |
stato1.cpy, stato.cpy, winmsg.cpy, grave.cpy, mmmask.cpy, opengen.cpy |
Copybook di fine procedure |
Logica¶
Struttura goto-driven con integrazione COGS98W per la ricerca prescrizione. Flusso principale:
- apri: init,
ctr-abil,open-files,rd-azi; rileva la chiamata esterna (zo3-called = "COGZO3-CALLED") e in tal caso valorizzaw-dc-called = "S"con commessa, tipo e numero documento ricevuti; abilita i tasti F3, F4, F8 aiuto/calendario, F9; carica la bitmaplabodontoe crea il pulsante custom "Commessa (F5)";z-costruisci-controlli,z-s98-init. - a4: reset maschera (
tm-tip= "L" di default, data = data di sistema);z-carica-controlli,z-s98-init. Se chiamato (w-dc-called = "S") muove la commessa intm-nume salta aa-10-cerca. - a-tm-cli: accept della prescrizione/commessa via COGS98W (
z-s98-tm-presc,s98-fun = "accept"); gli esiti "exit"/"prev" chiudono il programma. - a-10-cerca / a-fine-commessa:
x-controlla-commessaesegue COGS98W in modalita' "find+display": se la prescrizione non esiste segnala errore e torna aa-tm-cli; altrimenti recupera il numero commessa (s98-lpm-num->tm-num). Se chiamato, muove tipo e numero documento ricevuti e salta aa-50-loddfort. - a-tm-tip: accept del tipo documento (combo gestita via COGS60,
z-s60-tm-tip); F3 va alla conferma. - a-tm-num-doc: accept del numero documento all'interno della commessa.
- a-richiesta-conferma: valida i campi (
x-imposta-conferma->x-controlla-tm-tip,x-controlla-tm-num-doc). - a-50-loddfort: compone la chiave LODDFORT (
ldf-commessa = tm-num,ldf-tip,ldf-num = tm-num-doc) ed eseguerd-loddfort; se il documento non esiste segnala "Documento non esistente" e torna alla richiesta numero; recupera la data documento (ldf-data) intm-data. - a-90: chiama COGS54 (emulazione 'HPLJ3', carattere stampa 250) per la selezione stampante; ESC/F2 chiudono, F3 prosegue.
- a-90-ok: prepara
util-zo3x(commessa, tipo, numero) e compone dinamicamente il nome del sottoprogramma:COGZO3Lsetm-tip = "L",COGZO3Caltrimenti; eseguecall w-nome-prog using stringhe util-zo3x util-s54, poicancel; impostas54-after-print = "S"e richiama COGS54 per chiudere la stampa; termina (go to fine). - fine / z-chiudi:
z-close-files, chiusura finestra,z-99-exit-program,cancel 'COGS98W',exit program. - x-test-mouse: instradamento eventi mouse/click sui controlli della maschera.
CALL¶
| Programma | Scopo |
|---|---|
COGS98W |
Ricerca/accept generico prescrizione-commessa (studio/paziente/progressivo/numero) |
COGS54 |
Selezione stampante/emulazione e apertura/chiusura stampa |
COGZO3L |
Sottoprogramma di composizione e stampa della Lettera ortodontica (tm-tip = "L") |
COGZO3C |
Sottoprogramma di composizione e stampa della Cartella ortodontica (tm-tip <> "L") |
COGZDEW |
Editor/gestione descrizioni (linkage util-zde) |
Note¶
- Il codice usa
PERFORM ... THRUeGO TOin modo estensivo (stile legacy pre-convenzioni attuali). - Il nome del sottoprogramma di stampa e' costruito a runtime concatenando
k-program-idcon "L" o "C" (string k-program-id "L"/"C" ... into w-nome-prog): per la commessa corrente vengono quindi richiamati COGZO3L o COGZO3C, che contengono la logica effettiva di composizione del testo del documento. - Il documento da ristampare deve gia' esistere su LODDFORT: il programma non lo crea. Il tipo documento e' "L" (Lettera) o "C" (Cartella), coerentemente con
ldf-tipinloddfort.cpy. - In modalita' chiamata (
COGZO3-CALLED) il programma bypassa completamente l'interazione (scelta prescrizione, tipo e numero documento) e va direttamente alla selezione stampante e alla stampa.