COGZ72 - Note Fisse su Lettera/Cartella Ortodontica¶
Sorgente: cbl/cogz72.cbl | Program-ID: COGZ72 | Tipo: Programma interattivo (manutenzione note fisse)
Menu: Lab.Odont. > Ortodonzia > Tabelle > Note Fisse
Scopo¶
Gestisce le note fisse (testo libero pluririga) da riportare sulle lettere/cartelle ortodontiche. Il testo e' organizzato per tipologia di documento (tm-tip, campo chiave gestito da combo COGS60): l'operatore sceglie la tipologia, il programma carica l'eventuale nota esistente in un editor di testo esteso (COGZDEW) e la ripropone; l'operatore la modifica e conferma. Alla conferma la nota viene salvata come blocco di descrizioni su LODDESCR (tipo descrizione "OF"), passando da un archivio temporaneo di lavoro LODTMDES.
La nota e' memorizzata come record a lunghezza variabile: ltd-des/lde-des contengono il testo (fino a 2000 caratteri), con la lunghezza effettiva in ltd-len/lde-len.
File e tabelle¶
| File/Tabella | Tipo | Modalita' | Descrizione |
|---|---|---|---|
| FEURTAB | ISAM | Input | Parametri generali azienda (cogfiles.cpy) |
| LODDESCR | ISAM | I-O | Archivio descrizioni: chiave lde-tip + lde-cod + lde-pro; testo var-length in lde-des con lunghezza lde-len (loddescr.cpy). Per le note ortodontiche lde-tip = "OF" |
| LODTMDES | ISAM temporaneo | I-O | Archivio temporaneo di LODDESCR usato come area di lavoro: stessa struttura (ltd-tip, ltd-cod, ltd-pro, ltd-len, ltd-des) (lodtmdes.cpy, chiave lodtmdes.k01) |
Il file LODTMDES e' aperto in modo esclusivo per operatore: il nome fisico e' costruito con directory temporanea + #$COGZ72. + numero operatore (w-ltd-nome). L'apertura in output serve da lock: se fallisce, la funzione risulta gia' in uso da quell'operatore.
Copybook utilizzate¶
| Copybook | Descrizione |
|---|---|
cogz72.select, cogz72.fd, cogz72.wrk, cogz72-01.scr, cogz72.prc, cogz72.decla |
Screen Designer |
feurtab.fd, cogfiles.cpy |
FEURTAB |
lodtmdes.fd, lodtmdes.cpy, lodtmdes.k01 |
LODTMDES (archivio temporaneo) |
wgrave.cpy, wnscr.cpy, wopenf.cpy, wstato.cpy, cogazien.cpy |
Working storage standard + dati azienda |
utils65.cpy |
Linkage COGS65 |
utilw02.cpy, sendw02.cpy |
Gestione W02 (invio/lettura descrizioni su LODDESCR/LODTMDES: rd-lodtmdes, wr-lodtmdes, st-loddescr-notmin, rdnxt-loddescr, ecc.) |
utilzde.cpy |
Linkage COGZDEW (editor di testo esteso) |
grave.cpy, mmmask.cpy, opengen.cpy, stato.cpy, stato1.cpy, winmsg.cpy |
Copybook di fine procedure |
Logica¶
Struttura goto-driven. Flusso principale:
- apri: init,
ctr-abil,open-files,rd-azi; abilita i tasti F3, F4, F8; carica la maschera;z-costruisci-controlli. - a4: reset maschera, tipologia di default
tm-tip = "S"; disattiva F3-aggiorna/F4-cancella, attiva F3-conferma; costruisce il nome del file temporaneow-ltd-nome(dir temp +#$COGZ72.+ operatore); chiude LODTMDES e la riapre in output come test di lock (sestato <> "00"avvisa "Funzione gia' in uso dall'operatore" e termina), poi la riapre in i-o. - a-tm-tip: accept della tipologia (combo gestita via COGS60,
z-s60-tm-tip); ESC chiude, F3 va aa-fine-chiave. - a-fine-chiave:
x-controlla-chiave; impostaw-tip-des = "OF"come tipo descrizione ew-cod-des = tm-tipcome codice;a5-carica-descopia il blocco di descrizioni da LODDESCR verso LODTMDES; richiama COGZDEW (operazione "C", carica) per l'editing; rilegge la nota dal temporaneo (rd-lodtmdes) e la ripropone a video (tm-note, lunghezzatm-note-len); se esiste una nota abilita F4-cancella. - a-tm-note: accept della nota; calcola la lunghezza effettiva scandendo il testo dal fondo (
tm-note-len); F3 va aa-fine-dati. - a-fine-dati:
x-controlla-dati, conferma (acc-conf); su F3 eseguec2-cancella(cancella il vecchio blocco su LODDESCR) ex4-aggiorna(riscrive il nuovo blocco), poi torna aa4. - cancella (da
z-99-exception-form, tasto F4): se abilitato, previa conferma,c2-can-descrizionicancella l'intero blocco di descrizioni della tipologia corrente. - a5-carica-des: svuota LODTMDES per la coppia
tip/code vi ricopia i record di LODDESCR corrispondenti (loop sust-loddescr-notmin/rdnxt-loddescrcon rottura sulde-tip/lde-cod). - c2-cancella: cancella su LODDESCR tutti i record della coppia
tip/cod(loop condel-loddescr). - x4-aggiorna: azzera LODTMDES (
canc-lodtmdes), vi scrive la nota corrente (wr-lodtmdesconltd-len = tm-note-len,ltd-des = tm-note), invoca COGZDEW (operazione "R") per la ricomposizione, quindi ricopia da LODTMDES a LODDESCR (loopst-lodtmdes-notmin/rdnxt-lodtmdes->wr-loddescr). - fine / z-chiudi:
z-close-files, chiusura finestra, chiude e cancella il file temporaneo LODTMDES (delete file),cancel "COGZDEW",z-99-exit-program,exit program.
CALL¶
| Programma | Scopo |
|---|---|
COGZDEW |
Editor di testo esteso per la nota fissa (operazioni "C" = carica dal blocco descrizioni, "R" = ricomponi/salva) |
COGS60 |
Gestione della combo di scelta tipologia (via routine z-s60-tm-tip) |
Note¶
- Il codice usa
PERFORM ... THRUeGO TOin modo estensivo (stile legacy pre-convenzioni attuali). - Il tipo descrizione usato su LODDESCR/LODTMDES per le note ortodontiche e' "OF" (
w-tip-des), con il codice pari alla tipologia scelta (tm-tip). - LODTMDES e' un file di lavoro per-operatore: il nome include il numero operatore e viene aperto in output come meccanismo di lock a inizio funzione, e cancellato in chiusura. Il commento nel sorgente sul "gia' in uso dall'operatore" contiene una lettera accentata nel messaggio a video (encoding ISO-8859-1 del sorgente).
- La nota e' un record a lunghezza variabile: il testo (max 2000 caratteri) e' in
ltd-des/lde-dese la lunghezza effettiva inltd-len/lde-len. - Diversi rami che usano l'editor a finestra COGZDEW (operazione "M") sono presenti solo come codice commentato: l'editing effettivo avviene tramite il controllo di testo esteso
e-tm-notesulla maschera.