Vai al contenuto

COGM0B - Gestione testi variabili

Sorgente: cbl/cogm0b.cbl | Tipo: Programma interattivo GUI a maschera (accept sequenziali) | Program-ID: COGM0B

Menu:

  • Sistema > Configurazione > Gestione testi variabili

Scopo

Gestisce i testi variabili (tabella COGDESVA), cioe' i testi liberi parametrici per lingua che il gestionale inserisce a stampa/documento in funzione di una classe (tipo di testo) ed eventualmente di un tipo di suddivisione. Ogni testo e' identificato dalla terna classe + lingua + suddivisione e ne consente inserimento, modifica e cancellazione.

Il testo e' editabile su un campo esteso (fino a 2000 caratteri). La chiave e' composta in modo da poter avere un testo distinto per ciascuna lingua e, per le classi che lo prevedono, per ciascun tipo di documento (suddivisione).


Struttura del programma

Diversamente da COGM0A/COGM0C, questo programma non usa griglia: e' una maschera con accept sequenziali sui campi chiave (classe, tipo suddivisione, lingua) seguiti dall'accept sul testo. La struttura tab-maschera contiene i campi video (tm-classe, tm-sudd, tm-sudd-d, tm-lng, tm-lng-d, tm-testo).

Inizializzazione (a000)

ctr-abil, z-99-init-program, open-files, rd-azi, lettura data di sistema, abilitazione tasti funzione (F3 conferma/aggiorna, F4 cancella, F8 aiuto), titolo "Gestione testi variabili", z-costruisci-controlli.

Impostazione chiave (a4)

Inizializza tab-maschera con default tm-classe = "1" e tm-lng = "ITA", valida la lingua e attiva il pulsante di conferma. Predispone la sequenza di accept sui campi chiave.

Accept classe (a-tm-classe)

Accept del campo classe con aiuto (x-aiuto-tm-classe) e validazione (x-controlla-tm-classe): sono ammessi i valori "1".."6". La classe determina il valore dva-classe scritto sul record ("01".."06").

Accept tipo suddivisione (a-tm-sudd)

Campo presente solo per le classi 01/02 (x-visible-tm-sudd). Valori ammessi: spazi ("Per tutti i documenti"), "SP" ("Solo per le prefatture"), "NP" ("Per tutti tranne prefatture"); la descrizione (tm-sudd-d) viene impostata di conseguenza. Per le altre classi il campo viene azzerato e saltato.

Accept lingua (a-tm-lng)

Accept del codice lingua, con F8 che richiama COGE0A (help lingue) restituendo il codice in coge0a-out-cod. La validazione (x-controlla-tm-lng) rilegge la lingua su COGTBLNG (rd-cogtblng) per verificarne l'esistenza e mostrarne la descrizione (lng-des -> tm-lng-d).

Lettura testo esistente (a-fine-chiave)

Composta la chiave (dva-classe da tm-classe, dva-lng da tm-lng, dva-sudd da tm-sudd), rilegge COGDESVA (rd-cogdesva): se il testo esiste lo carica in tm-testo e abilita F4 (cancella), altrimenti azzera il testo. Attiva F3 in modalita' aggiornamento.

Accept testo, salvataggio e cancellazione (a-tm-testo)

Accept del testo (tm-testo, 2000 caratteri). F3 con conferma salva: ricompone la chiave, tenta la scrittura (wr-cogdesva) e, se il record esiste gia' (w-verbo-invalido), esegue la riscrittura (rwr-cogdesva). F4 con conferma cancella: rilegge (rd-cogdesva) ed elimina (del-cogdesva). Al termine dell'operazione ritorna a a4.


Tabelle e file

File logico Chiave / accesso Descrizione
FEURTAB - Tabella di sistema (aperta via cogfiles.cpy)
COGDESVA primaria dva-chia1 (dva-classe x(04) + dva-lng x(03) + dva-sudd x(30)); secondaria dva-chia2 (dva-lng + dva-classe + dva-sudd); accesso dinamico (nf-name-324) Testi variabili: chiave classe/lingua/suddivisione, testo (dva-testo x(2000))
COGTBLNG primaria lng-cod; sola lettura Tabella lingue: codice (lng-cod), descrizione (lng-des); usata per validare/descrivere la lingua

COPY incluse

Working-Storage

cogm0b.wrk, k-u10.cpy, wrk-u10.cpy, k-personal.cpy, wstato.cpy, wgrave.cpy, wopenf.cpy, wnscr.cpy, cogazien.cpy, utilcoge0a.cpy

Linkage

wcont.cpy, wcont1.cpy

Procedure Division

cogm0b.decla, cogm0b-01.scr (screen), stato.cpy, stato1.cpy, grave.cpy, winmsg.cpy, opengen.cpy, mmmask.cpy, cogm0b.prc

Le routine di I/O su COGDESVA (rd-, wr-, rwr-, del-cogdesva) e su COGTBLNG (rd-cogtblng) sono incluse tramite la catena di COPY generata (.k01).


CALL a sottoprogrammi

Programma Scopo
COGE0A Help/selezione lingua (F8 sul campo lingua), passando/ricevendo il codice via utilcoge0a.cpy (coge0a-in-cod / coge0a-out-cod)

Configurazioni RNEWCONF

Il programma non contiene un paragrafo x99-confi e non legge chiavi RNEWCONF applicative.


Note tecniche

  • Chiave a tre livelli: la terna classe/lingua/suddivisione consente di differenziare lo stesso testo per lingua e, per le classi 01/02, per tipo di documento (prefattura vs altri). La suddivisione (tm-sudd) e' visibile e valorizzabile solo per queste due classi; per le altre viene forzata a spazi.
  • Codifica classe: il campo video tm-classe ("1".."6") viene tradotto nel valore su record dva-classe ("01".."06") tramite un EVALUATE; qualunque valore non previsto ricade sul default "01".
  • Introduzione suddivisione (070121): le righe marcate 070121 documentano l'aggiunta del tipo suddivisione alla chiave; prima di tale modifica dva-sudd veniva sempre azzerato (righe commentate move spaces to dva-sudd).
  • Salvataggio idempotente: la conferma tenta sempre prima la write e ripiega sulla rewrite se il record esiste, cosi' la stessa maschera copre inserimento e modifica.
  • Chiave secondaria per lingua: COGDESVA espone una chiave alternata dva-chia2 (lingua-classe-suddivisione); COGM0B opera comunque sulla chiave primaria.