COGZ05 - Gestione testi allegati (tipo/modello)¶
Sorgente: cbl/cogz05.cbl | Program-ID: COGZ05 | Tipo: Programma interattivo di gestione anagrafica (maschera a schede)
Menu: Lab.Odont. > Archivi > Allegati > Allegati
Scopo¶
Gestisce i testi anagrafici degli allegati alle commesse di laboratorio (documenti previsti dalla direttiva 93/42: dichiarazioni di conformita', reperibilita', specifiche di installazione, istruzioni d'uso, ecc.). Per ogni combinazione tipo allegato + modello l'operatore definisce le note, i titoli e il corpo del testo che verranno poi impaginati e stampati dai programmi di stampa allegati (COGZ81, COGZ83, ecc.).
L'entita' gestita e' la coppia chiave tm-dsp (tipo allegato: D=Dich.conformita', R=Dich.reperibilita', S=Spec.installazione, I=Istruzioni d'uso, U, N=Doc.consegna, ecc.) e tm-mod (modello, da A a Z, oppure A..E per il tipo I che gestisce anche i capitoli). Il testo lungo dell'allegato e' conservato in LODDESCR come blocco di descrizioni; le note e i titoli (N1, N2, T1, T2) sono conservati in LODTABEL tipo 10.
Il tipo allegato I (Istruzioni d'uso) e' particolare: prevede una struttura a capitoli (tm-cap) con intestazione capitolo e testo per ogni capitolo, e usa un byte di tipo descrizione derivato dal modello (un byte esteso dedicato per ciascun modello A..E) per distinguere i blocchi di testo del capitolo.
File e tabelle¶
| File/Tabella | Tipo | Modalita' | Descrizione |
|---|---|---|---|
| FEURTAB | ISAM | Input | Parametri generali azienda (cogfiles.cpy) |
| LODDESCR | ISAM | I-O | Testo lungo allegato per tipo (lde-tip, lde-cod, lde-pro, lde-rec) |
| LODTMDES | ISAM | I-O (temp) | Buffer temporaneo descrizioni per operatore (ltd-tip, ltd-cod, ltd-pro, ltd-rec) |
| LODTRDES | ISAM | I-O (temp) | Descrizioni impaginate a misura da COGZDEW (ltr-...) |
| LODTABEL | ISAM | I-O | Note e titoli allegato tipo 10, chiave <dsp><mod>N1/N2/T1/T2 (lta-tipo, lta-cod, lta-10-des) |
LODTMDES (nome ext-tmp-dir + #$COGZ05.<operatore>) e' aperto in output esclusivo come lock di funzione per operatore: se l'open fallisce (stato non 00) la funzione e' segnalata gia' in uso e il programma esce. LODTRDES (nome #$COGZDE.<operatore>) e' il file di lavoro usato da COGZDEW per l'impaginazione.
Copybook utilizzate¶
| Copybook | Descrizione |
|---|---|
cogz05.select, cogz05.fd, cogz05.wrk, cogz05-01.scr, cogz05.prc, cogz05.decla |
Screen Designer |
feurtab.fd, cogfiles.cpy |
FEURTAB |
lodtmdes.fd/.cpy/.k01, lodtrdes.fd/.cpy |
File temporanei descrizioni |
wgrave, wnscr, wopenf, wstato, cogazien |
Working storage standard + dati azienda |
utils65, utilw02, utilzde |
Linkage subroutine (util-zde per COGZDEW) |
grave, mmmask, opengen, stato, stato1, winmsg |
Copybook fine procedure standard |
sendw02.cpy |
Invio a COGS02 (send-w02) |
lodtmdes.k01 |
Chiave primaria file temporaneo (a fine procedure) |
Logica¶
Programma goto-driven con una scheda "chiave" (tipo + modello) e una scheda "dati" (note, titoli, capitolo, intestazione, testo). Il testo lungo viene editato tramite il controllo multiriga e-tm-testo e convertito da/verso file via COGZDEW.
- apri / main:
z-99-init-program,ctr-abil,rd-azi,open-files; abilitazione tasti F3-conferma/F3-aggiorna/F4-cancella/F8-aiuto; costruzione controlli (z-costruisci-controlli). - a4: reset maschera,
tm-sono-su-chiave = "S", costruzione nomi temporanei LODTMDES/LODTRDES, lock del temporaneo (close + open output; se occupato esce), riapertura in i-o. - a-tm-dsp / a-tm-mod: accept del tipo allegato (combo via COGS60) e del modello, con validazione range (
A-EperI,A-Zaltrimenti;Unon richiede modello). - a-fine-chiave:
x-controlla-chiave, poia2-carica-titoli(legge N1/N2/T1/T2 da LODTABEL tipo 10), richiesta conferma; se confermato carica i testi da LODDESCR in maschera via COGZDEW (Da-file-a-zde-note). - a-tm-note-1 / a-tm-note-2 / a-tm-titolo-1 / a-tm-titolo-2 / a-tm-cap / a-tm-cap-int / a-tm-testo: accept dei singoli campi della scheda dati; F3 salva (
a-50-var), F4 cancella (a-50-cancella). - a-50-var (salvataggio):
c1-cancella-titoli+b1-ins-dati-tabella(riscrive N1/N2/T1/T2 su LODTABEL), poi per il testo:a4-set-tip-testo,c-cancella(elimina il blocco descrizioni esistente),COGZDEWDa-zde-note-A-file,b-inserisci(copia da LODTMDES a LODDESCR); per il tipoIgestisce anche l'intestazione capitolo. - a-50-cancella (cancellazione): conferma,
c1-cancella-titoliec-cancellasul blocco corrente (e sul titolo capitolo perI). - a1-set-tip-titolo / a4-set-tip-testo: compongono il byte di tipo descrizione (
w-tip); per il tipoIil primo byte deriva dal modello A..E (mappato su un byte esteso dedicato) e il secondo byte e' il capitolo. - d-carica-des: legge il blocco descrizioni di un tipo da LODDESCR e lo copia in LODTMDES (loop
st/rdnxtcon rottura sulde-tip/lde-cod). - b-inserisci / c-cancella: rispettivamente riscrivono da LODTMDES a LODDESCR e cancellano il blocco descrizioni di un tipo.
- fine / z-chiudi:
z-close-files, close/delete LODTMDES,cancel "COGZDEW",exit program.
CALL¶
| Programma | Scopo |
|---|---|
COGZDEW |
Impaginazione e conversione testo <-> file di lavoro (util-zde) |
Note¶
- Il testo lungo dell'allegato non e' un campo singolo ma un blocco di record in LODDESCR indicizzati per tipo (
w-tip); l'editing avviene su un buffer temporaneo per operatore (LODTMDES) e la conversione tra il controllo di maschera e i record e' delegata a COGZDEW. - Il lock di funzione e' realizzato aprendo LODTMDES in
outputesclusivo: due operatori non possono usare la funzione contemporaneamente con lo stesso codice operatore. - Il tipo allegato
I(Istruzioni d'uso) e' l'unico con struttura a capitoli e usa un byte esteso (dedicato per modello A..E) come primo byte del tipo descrizione; il ramoa-tm-cap/a-tm-cap-inte' attivo solo quandotm-dsp = "I". - Il codice usa ancora estensivamente
GO TOePERFORM ... THRU(d-carica-des thru ex-d,c-cancella thru ex-c,b-inserisci thru ex-b): e' codice legacy pre-convenzioni.