GESLNC - Gestione etichette e messaggi in lingua¶
Sorgente: cbl/geslnc.cbl | Tipo: Programma interattivo GUI con griglia paginata (anche richiamabile via CALL come selezione) | Program-ID: GESLNC
Menu:
- Sistema > Utility > Varie > Gestione lingua
- Sistema > Configurazione > Etichette e Messaggi
Scopo¶
Gestisce la traduzione e la personalizzazione dei testi (etichette, messaggi, ecc.) usati dalle maschere del gestionale nelle varie lingue. Consente di consultare, per un dato programma (o per i testi generici) e per una data lingua, i testi ufficiali (rilasciati) e i testi personalizzati locali, e di modificare la versione personalizzata in lingua.
I testi risiedono in due archivi dello Screen Designer:
- SCRTESTC (
scrtestc.arc) - testi legati a un singolo programma (label/messaggi di una specifica maschera); - SCRTESTG (
scrtestg.arc) - testi generici, condivisi tra piu' programmi.
Per ciascun testo esistono quattro varianti gestite dal programma: ufficiale in italiano (trs-testo-u-ita), ufficiale in lingua (trs-testo-u-lng), personalizzato locale in italiano (trs-testo-c-ita) e personalizzato locale in lingua (trs-testo-c-lng). Il campo modificabile dall'operatore e' il testo personalizzato in lingua.
Il programma opera in due modalita' (discriminate dai campi del copybook utilgeslnc.cpy):
- Da menu (
geslnc-opediverso da "SELEZIONE"): l'operatore sceglie programma e lingua, filtra per contenuto e modifica i testi personalizzati. - Richiamato via CALL (
geslnc-called = "GESLNC-CALLED",geslnc-ope = "SELEZIONE"): funge da finestra di selezione di un testo; l'id del testo scelto (tm-id) e' restituito al chiamante ingeslnc-o-id.
L'ambito dei record e' distinto da un flag: "B" = testo di base/ufficiale (rilasciato), "A" = testo aggiuntivo/personalizzato locale.
Struttura del programma¶
Maschera Eurocoge con griglia paginata (e-grid-det, gestita via GRIDADMN e via il meccanismo di spaginamento fscrol2.cpy): i dati vengono prima raccolti in un file di transito indicizzato temporaneo (COGTRANS, un record per testo con le quattro varianti), poi la griglia mostra pagine di righe navigabili con Pag-Su/Pag-Giu. Un frame di filtro sopra la griglia consente di impostare programma, lingua e testo cercato.
Inizializzazione (apri)¶
z-99-init-program, ctr-abil, rd-azi, open-files, x-carica-lingua. Rileva la chiamata via CALL (geslnc-called). Apre gli archivi SCRTESTC e SCRTESTG costruendone i nomi da ext-scr-dir (ambiente di sviluppo) oppure ext-prg-dir, con estensione .arc. Abilita i tasti funzione (F3 gestione, F8 aiuto, invio seleziona) e il pulsante custom F1 Operazioni speciali; imposta il titolo "Gestione etichette e messaggi" e prepara la griglia.
Filtri (a-tm-prg-cod, a-tm-lng-cod, a-tm-ricerca)¶
Accept in sequenza di:
- codice programma (
tm-prg-cod, portato in maiuscolo): se vuoto la ricerca e' sui testi generici SCRTESTG, altrimenti sui testi di programma SCRTESTC; - lingua (
tm-lng-cod, default "ITA"): con F8 richiama COGE0A (tabella lingue) come help; validata suCOGTBLNG(rd-cogtblng) inx-controlla-tm-lng-cod; - ricerca per contenuto (
tm-ricerca): stringa di testo da cercare nei testi.
Con la modalita' SELEZIONE il flusso salta direttamente al filtro ricerca.
Costruzione transito (a-dopo-conferma / a1-carica-transito)¶
Alla conferma (F3) crea da zero il file di transito COGTRANS (nome geslnc_<oper> in ext-tmp-dir, aperto in output poi in i-o). a1-carica-transito prepara la ricerca in GESSTR ("CERCA-PREPARA"), determina se caricare testi generici (a3-carica-testi-generali) o di programma (a2-carica-testi-programmi).
a3-carica-testi-generali: scandisce SCRTESTG (lingua ITA, tipoG, ambitoB), applica l'eventuale filtrogeslnc-tip-oggetto, filtra per contenuto (a4-cerca-testovia GESSTR "CERCA-ESEGUI") e scrive i record trovati su COGTRANS.a2-carica-testi-programmi: scandisce SCRTESTC per il programma richiesto (lingua ITA, ambitoB); se il testo e' collegato a un id generico (tstc-id-gen) ne prende la descrizione dal generico SCRTESTG; filtra per contenuto e scrive su COGTRANS. Poi rilegge tutto il transito e, per ciascun record, recupera le quattro varianti (ufficiale in lingua, locale in italiano, locale in lingua) leggendo SCRTESTC/SCRTESTG con la lingua richiesta e l'ambito opportuno, e riscrive il transito completo.
Griglia paginata (a-grid)¶
Ciclo di accept sulla griglia. Gestisce Shift-F4 (personalizzazione GRIDADMN, con persistenza w-prg-pers), Shift-F5 (esporta Excel), Pag-Su/Pag-Giu (paginazione tramite le routine rn-start*/rp-start*/sn-read/sp-read e rd1-ft-go che riempie la tabella di griglia da COGTRANS), F1 (operazioni speciali). In modalita' SELEZIONE, l'invio restituisce tm-id (i) in geslnc-o-id e termina.
Modifica testo personalizzato (x-controlla-tm-testo-c-lng / x-aggiorna-dati-i)¶
Alla modifica in griglia della colonna del testo personalizzato in lingua: rilegge il record da COGTRANS, aggiorna trs-testo-c-lng e lo riscrive; poi salva il testo (ambito A) sull'archivio SCRTESTC (per testi di programma) o SCRTESTG (per testi generici), creando il record se assente. Se il testo e' collegato a un id generico, x-spalma-testo-generico propaga la nuova traduzione a tutti i testi locali di programma collegati (scansione SCRTESTC per chiave alternata tstc-chia3 su tstc-id-gen).
Operazioni speciali (F1 - b-operazioni-speciali)¶
Dialog (via DIALOGS) con due funzioni manutentive massive:
- F1 Adegua caratteri (
b-adegua-caratteri): scandisce interamente SCRTESTC e SCRTESTG e passa ogni testo aGESSTR("CONV-TESTO-IMPORTATO") per adeguare i caratteri speciali alla configurazione font attuale, riscrivendo i record modificati. - F3 Distribuzione testi generici (
b-spalma-testi-generali): ridistribuisce i testi generali (SCRTESTG) su tutti i testi custom di programma (SCRTESTC, ambitoB) collegati per id generico. Serve a recuperare messaggi rimasti vuoti a seguito di problemi nei rilasci.
Tabelle e file¶
| File logico | Chiave / accesso | Descrizione |
|---|---|---|
| FEURTAB | - | Tabella di sistema (aperta via cogfiles.cpy) |
SCRTESTC (tstc-rec) |
primaria tstc-chia1 (tstc-prg+tstc-lng+tstc-tip+tstc-ambito+tstc-id+tstc-sez); alternata tstc-chia3 su tstc-id-gen; accesso dinamico |
Testi (label/messaggi) per singolo programma nelle varie lingue; record a lunghezza variabile 196-6196, testo in tstc-des per tstc-pnt caratteri |
SCRTESTG (tstg-rec) |
primaria tstg-chia1 (tstg-lng+tstg-tip+tstg-ambito+tstg-id+tstg-sez); accesso dinamico |
Testi generici condivisi; record a lunghezza variabile 136-6136, testo in tstg-des per tstg-pnt caratteri |
COGTRANS (trs-rec) |
primaria trs-chia1 (trs-programma+trs-tip-oggetto+trs-id+trs-sez) |
File di transito temporaneo che aggrega, per ciascun testo, le quattro varianti (ufficiale ita/lingua, locale ita/lingua); dichiarato manualmente nel sorgente, ricreato a ogni conferma e cancellato in chiusura |
COGTBLNG (lng-rec) |
lng-cod (rd-cogtblng) |
Tabella lingue: validazione codice lingua e recupero descrizione |
COPY incluse¶
Working-Storage¶
geslnc.wrk, k-personal.cpy, opensave.def, wgrave.cpy, wnscr.cpy, wopenf.cpy, wstato.cpy, cogazien.cpy, utilgesstr.cpy, wgrid.cpy, utilgdad.cpy, utilcoge0a.cpy, utildlg.cpy
File section¶
feurtab.fd, geslnc.select, cogfiles.cpy, geslnc.fd (generati da Screen Designer); scrtestc.fd/scrtestc.cpy, scrtestg.fd/scrtestg.cpy; COGTRANS (SELECT/FD dichiarati manualmente nel sorgente)
Linkage¶
wcont.cpy, wcont1.cpy, utilgeslnc.cpy
Procedure Division¶
geslnc.decla, geslnc-01.scr (screen), stato.cpy, stato1.cpy, winmsg.cpy, grave.cpy, opengen.cpy, mmmask.cpy, geslnc.prc, dtab.cpy, fscrol2.cpy, scrtestc.k01, scrtestc.k03, scrtestg.k01, cogtrans.k01
Le routine di I/O su SCRTESTC/SCRTESTG/COGTRANS (st-, rdnxt-, rdprv-, rd-, wr-, rwr-) sono incluse tramite la catena di COPY (.k01/.k03).
CALL a sottoprogrammi¶
| Programma | Scopo |
|---|---|
| GESSTR | Ricerca del contenuto nei testi (operazioni CERCA-PREPARA/CERCA-ESEGUI) e conversione caratteri speciali (CONV-TESTO-IMPORTATO) |
| COGE0A | Help/selezione lingua (F8 sul campo lingua): tabella lingue, restituisce coge0a-out-cod |
| GRIDADMN | Gestione e personalizzazione della griglia paginata (Prepara, Svuota-Tutto, Shift-F4) |
| DIALOGS | Dialog delle operazioni speciali (F1) |
I sottoprogrammi Y* eventualmente presenti nella catena di COPY sono gestori tabella generati dallo Screen Designer.
Configurazioni RNEWCONF¶
Il programma non contiene un paragrafo x99-confi e non legge chiavi RNEWCONF applicative. Dipende invece da variabili di ambiente (ext-scr-dir, ext-prg-dir, ext-tmp-dir, ext-lingua, ext-ambiente-sviluppo, ext-os-slash) per localizzare gli archivi dei testi e determinare la lingua di default.
Note tecniche¶
- Doppia posizione a menu: la stessa maschera compare sia sotto Sistema > Utility > Varie ("Gestione lingua") sia sotto Sistema > Configurazione ("Etichette e Messaggi"); e' lo stesso programma GESLNC.
- Doppia veste (menu / lookup): quando richiamato via CALL con
geslnc-ope = "SELEZIONE"la griglia diventa di sola selezione (l'entry-pointz-event-grid-det-epforza il terminate sul begin-entry) e l'invio restituisce l'id del testo al chiamante. - Ambito B vs A:
B= testo ufficiale rilasciato (di base),A= testo personalizzato locale. La modifica dell'operatore crea/aggiorna sempre record di ambitoA, senza toccare i rilasci. - Id generico e propagazione: i testi possono ereditare da un testo generico (
tstg/tstc-id-gen); la modifica di un testo generico locale viene propagata a tutti i testi di programma collegati (x-spalma-testo-generico, chiave alternatatstc-chia3). - File di transito manuale:
COGTRANSnon e' gestibile da Screen Designer, per cui SELECT, FD e layout record sono dichiarati direttamente nel sorgente; il file e' temporaneo (nome per operatore) e viene creato/distrutto a runtime. - Operazioni massive: le funzioni speciali (adeguamento caratteri e ridistribuzione testi generici) agiscono sull'intero contenuto di SCRTESTC/SCRTESTG e vanno usate solo in caso di necessita' (protette da conferma esplicita).