Vai al contenuto

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-ope diverso 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 in geslnc-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 su COGTBLNG (rd-cogtblng) in x-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, tipo G, ambito B), applica l'eventuale filtro geslnc-tip-oggetto, filtra per contenuto (a4-cerca-testo via GESSTR "CERCA-ESEGUI") e scrive i record trovati su COGTRANS.
  • a2-carica-testi-programmi: scandisce SCRTESTC per il programma richiesto (lingua ITA, ambito B); 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 a GESSTR ("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, ambito B) 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-point z-event-grid-det-ep forza 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 ambito A, 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 alternata tstc-chia3).
  • File di transito manuale: COGTRANS non 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).