Vai al contenuto

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 temporaneo w-ltd-nome (dir temp + #$COGZ72. + operatore); chiude LODTMDES e la riapre in output come test di lock (se stato <> "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 a a-fine-chiave.
  • a-fine-chiave: x-controlla-chiave; imposta w-tip-des = "OF" come tipo descrizione e w-cod-des = tm-tip come codice; a5-carica-des copia 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, lunghezza tm-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 a a-fine-dati.
  • a-fine-dati: x-controlla-dati, conferma (acc-conf); su F3 esegue c2-cancella (cancella il vecchio blocco su LODDESCR) e x4-aggiorna (riscrive il nuovo blocco), poi torna a a4.
  • cancella (da z-99-exception-form, tasto F4): se abilitato, previa conferma, c2-can-descrizioni cancella l'intero blocco di descrizioni della tipologia corrente.
  • a5-carica-des: svuota LODTMDES per la coppia tip/cod e vi ricopia i record di LODDESCR corrispondenti (loop su st-loddescr-notmin / rdnxt-loddescr con rottura su lde-tip/lde-cod).
  • c2-cancella: cancella su LODDESCR tutti i record della coppia tip/cod (loop con del-loddescr).
  • x4-aggiorna: azzera LODTMDES (canc-lodtmdes), vi scrive la nota corrente (wr-lodtmdes con ltd-len = tm-note-len, ltd-des = tm-note), invoca COGZDEW (operazione "R") per la ricomposizione, quindi ricopia da LODTMDES a LODDESCR (loop st-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 ... THRU e GO TO in 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-des e la lunghezza effettiva in ltd-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-note sulla maschera.