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 recorddva-classe("01".."06") tramite unEVALUATE; qualunque valore non previsto ricade sul default"01". - Introduzione suddivisione (070121): le righe marcate
070121documentano l'aggiunta del tipo suddivisione alla chiave; prima di tale modificadva-suddveniva sempre azzerato (righe commentatemove spaces to dva-sudd). - Salvataggio idempotente: la conferma tenta sempre prima la
writee ripiega sullarewritese il record esiste, cosi' la stessa maschera copre inserimento e modifica. - Chiave secondaria per lingua:
COGDESVAespone una chiave alternatadva-chia2(lingua-classe-suddivisione); COGM0B opera comunque sulla chiave primaria.