Griglie Evolute - Variabili e PRC Base¶
Variabili Utili¶
FL-MOD-nomegrid¶
77 fl-mod-grid-atr pic x(01).
77 fl-mod-grid-atr-sav pic x(01).
La variabile FL-MOD-nomegrid serve per identificare quando la griglia è modificabile. - Se viene impostata a "S", è modificabile quindi assumerà il layout della griglia modificabile: ovvero tutte le righe con colore omogeneo. - Se viene impostata a "N", non è modificabile quindi assumerà il layout della griglia in visualizzazione: le righe avranno il colore alternato, se previsto dalla configurazione.
Il valore di questa variabile viene impostato dalla routine X-SET-SET-FL-MOD. La seconda variabile: FL-MOD-nomegrid-SAV viene gestita internamente dalle routines, per ottimizzare le operazioni di modifica dello stato griglia.
FL-VALIDAZIONE-*¶
77 fl-validazione-contestuale pic x(01) value 'S'.
77 fl-validazione-post-accept pic x(01) value 'N'.
Queste due variabili consentono di controllare in che modo effettuare i controlli.
FL-VALIDAZIONE-CONTESTUALE Viene impostato ad "S" automaticamente all'avvio del programma. Se rimane "S", alla terminazione di una accept viene eseguita la routine X-CONTROLLA-TM-nome-campo, ed emesso un errore quando necessario. Si può impostare questo valore a "N" per eliminare ogni controllo durante l'editazione di una griglia. Come effetto collaterale, ogni "automatismo" inserito all'interno delle routine "X-CONTROLLA-TM-nome-campo" verrà disattivato. Di conseguenza tutti i controlli e le elaborazioni si potranno effettuare ad esempio al termine dell'editazione, quando si richiede l'aggiornamento.
FL-VALIDAZIONE-POST-ACCEPT Viene impostato ad "S" automaticamente durante l'esecuzione della routine Z-nomegriglia-_FINISH-ENTRY. In questo modo è possibile condizionare quello che viene fatto all'interno delle routine X-CONTROLLA-TM-_nome-campo a seconda se siamo al termine dell'accept di una cella (FL-VALIDAZIONE-POST-ACCEPT = "S") oppure durante i controlli finali.
NB: questa variabile assume piu' importanza in caso di gestione griglia evoluta: qui, la routine di aggiornamento X-CONTROLLA-TM-_nomecampo-_AUTO effettua un aggiornamento automatico del file di transito controllato dalle procedure; ora viene effettuato solo nel caso di validazione post-accept; ad esempio, COGE29:
x-controlla-tm-r-car-tab-cod-auto.
move 'S' to x-f3-ok-parziale
perform x-controlla-tm-r-car-tab-cod
if x-f3-ok-parziale = 'S' and
fl-validazione-post-accept = 'S'
perform z-aggiorna-t-gor-r-car-tab-cod
end-if
move x-f3-ok-parziale to tm-r-gcv-car-tab-cod (i)
.
'NOMEPRG'.PRC¶
Questo files va incluso direttamente nella procedure division del programma. Contiene una serie di routines che possono o devono essere utilizzate per la gestione della maschera o dei singoli controlli.
Gestione Base¶
Z-COSTRUISCI-S60¶
Questa routine esegue la chiamata a COGS60W necessaria per popolare i valori delle combo-box presenti in un programma.
Esempio della chiamata alla routine Generalmente questa routine viene richiamata all'interno della z-costruisci-controlli
Esempio della routine
**---------------------------------------------------------------**
** Preparazione screen - preparo i valori delle combo
**---------------------------------------------------------------**
z-costruisci-s60.
initialize util-s60
move 'P' to s60-ope
perform z-s60-tm-tip
initialize util-s60
move 'P' to s60-ope
perform z-s60-tm-link-des
Z-S60-TM-nomecampo¶
Questa routine esegue la chiamata a COGS60W necessaria per eseguire l'accept di un campo combo-box.
Esempio della chiamata alla routine Generalmente questa routine viene richiamata all'interno della sezione di accept di un campo; ad esempio:
*
**---------------------------------------------------------------*
** Tipo informazione
**---------------------------------------------------------------*
a-tm-tip.
perform x-aiuto-tm-tip
initialize util-s60
perform z-s60-tm-tip
perform z-carica-controlli
if f-event
go to x-test-mouse
end-if
if wesc go to a-tm-num-tf.
if f2 go to a-tm-des.
Esempio della routine
**---------------------------------------------------------------**
** richiesta di combo: Tipo informazione
**---------------------------------------------------------------**
z-s60-tm-tip.
move 29 to s60-s
move 'D' to s60-fl-disp
move 12 to s60-n-opt
move tab-opt-tm-tip to s60-dati
set s60-handle to handle of e-tm-tip
if i > 0
move tm-tip (i) to s60-i-field
end-if
move funzio to s60-exception
move control-id to s60-o-control-id
call 'COGS60W' using stringhe util-s60
move s60-exception to funzio
if i > 0
move s60-o-field to tm-tip (i)
end-if
move s60-o-control-id to control-id
.
Z-CARICA-S95¶
Questa routine esegue la chiamata a COGS95W necessaria per visualizzare sulla maschera i valori corretti dei check-box in funzione del valore della variabile associata.
Esempio della chiamata alla routine Generalmente questa routine viene richiamata all'interno della z-carica-controlli Può anche essere richiamata, al bisogno, per effettuare il refresh dei campi della maschera quando un valore viene modificato.
Esempio della routine
**---------------------------------------------------------------**
** Impostazione valore a check-box
**---------------------------------------------------------------**
z-carica-s95.
initialize util-s95
move 'Riempi' to s95-ope
perform z-s95-tm-fl-dati-ana
initialize util-s95
move 'Riempi' to s95-ope
perform z-s95-tm-ricerca-nom
.
Z-S95-TM-nomecampo¶
Questa routine esegue la chiamata a COGS95W necessaria per eseguire l'accept di un campo check-box.
Esempio della routine
**---------------------------------------------------------------**
** richiesta di check-box: Ordinamento x codice
**---------------------------------------------------------------**
z-s95-tm-ord-cod.
move 'S ' to s95-when-true
move 'N ' to s95-when-false
set s95-handle to handle of e-tm-ord-cod
move tm-ord-cod to s95-i-field
move funzio to s95-exception
move control-id to s95-o-control-id
call 'COGS95' using stringhe util-s95
move s95-exception to funzio
move s95-o-control-id to control-id
move s95-o-field to tm-ord-cod
.
Z-CARICA-S52¶
Questa routine esegue la chiamata a COGS52W necessaria per visualizzare sulla maschera le date nei campi appositi, formattati nel modo corretto.
Esempio della routine
**---------------------------------------------------------------**
** Visualizzazione editata data
**---------------------------------------------------------------**
z-carica-s52.
initialize util-s52
move 'Edita' to s52-ope
perform z-s52-tm-doc-ann
Z-CARICA-S93¶
Questa routine esegue la chiamata a COGS93W necessaria per visualizzare sulla maschera le ore nei campi appositi, formattati nel modo corretto.
Esempio della routine
**---------------------------------------------------------------**
** Visualizzazione editata ora
**---------------------------------------------------------------**
z-carica-s93.
initialize util-s93
move 'Edita' to s93-ope
perform z-s93-tm-ora-tra
.
Z-CARICA-U10¶
Questa routine esegue la chiamata a COGU10W necessaria per visualizzare sulla maschera i campi valore, formattati nel modo corretto.
Esempio della routine
*----------------------------------------------------------------*
* Visualizzazione editata valori
*----------------------------------------------------------------*
z-carica-u10.
initialize util-u10
move 'Edita' to u10-ope
perform z-u10-w-tot-non-ivato
modify e-w-tot-non-ivato, value = u10-edit
.
Z-CARICA-S68¶
Questa routine esegue la chiamata a COGS68W necessaria per visualizzare sulla maschera i campi valore, formattati nel modo corretto.
Esempio della routine
**---------------------------------------------------------------**
** Refresh del valore dei controlli merci
**---------------------------------------------------------------**
z-carica-s68.
initialize util-s68
move 'Display' to s68-ope
perform z-s68-tm-mer
.
X-AIUTO-TM-nomecampo¶
Per ciascun campo standard presente in maschera che non sia disabilitato viene prodotta questa routine, che contiene alcune impostazioni necessarie per ottenere aiuto sul campo: - Emissione Status bar - Impostazione Help-context-id - Impostazione "Notefld" (forse obsoleto)
Esempio della routine
x-aiuto-tm-num.
move 000000005331 to ext-help-context-id
move 'EUROCOGE' to notefld-pac
move 'CRM013' to notefld-prg
move 'num' to notefld-fld
move s-tm-num to sb-msg
perform x-status-bar-msg
.
X-CTR-COLOR-TM-nomecampo¶
Viene costruita una routine di questo tipo per ciascun controllo della maschera che è soggetto ad accept. Permette di variare il colore del controllo dopo la validazione.
Esempio della chiamata alla routine Questa routine viene inserita all'interno della routine X-CONTROLLA-TM-nomecampo come ultima operazione prima di uscire.
x-controlla-tm-des.
move "S" to x-f3-ok-parziale
if tm-des (i) = spaces
move "m-crm013-29-1" to x-f3-msg-id
move m-crm013-29-1 to x-f3-msg
move "N" to x-f3-ok-parziale
end-if
perform x-ctr-color-tm-des
.
Esempio della routine
**---------------------------------------------------------------**
** Modifico il colore del campo: Descrizione informazione
** dopo il controllo della validita` del campo
**---------------------------------------------------------------**
x-ctr-color-tm-des.
if x-f3-ok-parziale = "S"
if x-enabled-dettaglio = 0
modify e-tm-des,
color = ext-color-disabled
else
modify e-tm-des,
color = t-cf-color-control
(k-idc-tm-des)
end-if
else
modify e-tm-des,
color = ext-color-error
end-if
.
Z-CAMBIA-CONTROLLI¶
Routine che racchiude le routines di modifica controlli per ciascuna pagina presente nel programma (e la pagina 0 che contiene i campi di testata).
Esempio della routine
**---------------------------------------------------------------**
** Procedure di modifica visibilita` e/o abilitazione
**---------------------------------------------------------------**
z-cambia-controlli.
perform z-cambia-pagina-00
move 'N' to z-forza-cambia-ctr
.
Z-CAMBIA-PAGINA-nn¶
Viene costruita una routine di questo tipo per i controlli che non fanno parte del tab-control, e una per ciascuna pagina dell'eventuale tab-control. Contiene la chiamata alla modifica di ciascun campo della maschera.
Esempio della routine
z-cambia-pagina-00.
move z-forza-cambia-ctr to z-forza-cambia-pagina
perform z-cambia-tm-num
perform z-cambia-tm-des
perform z-cambia-tm-tip
....
Z-CAMBIA-TM-nomecampo¶
Viene costruita una routine di questo tipo per ciascun controllo della maschera che è soggetto a modifica di visibilità e/o abilitazione. Permette la modifica delle proprietà ENABLED e VISIBLE.
NB: la condizione di abilitazione/visibilità viene definita manualmente all'interno di SCREENS.
Esempio della routine
**---------------------------------------------------------------**
** Modifica visibilita`/abilitazione campo:
** 'Numero informazione'
**---------------------------------------------------------------**
z-cambia-tm-num.
if a-operazione = "I"
if x-enabled-tm-num = 0 or
z-forza-cambia-ctr = 'S'
move 1 to x-enabled-tm-num
modify e-tm-num, enabled = 1
, color = t-cf-color-control
(k-idc-tm-num)
modify e-label-tm-num, enabled = 1
, color = ext-color-label
end-if
else
if x-enabled-tm-num = 1 or
z-forza-cambia-ctr = 'S'
move 0 to x-enabled-tm-num
modify e-tm-num, enabled = 0
, color = ext-color-disabled
modify e-label-tm-num, enabled = 0
, color = ext-color-disabled
end-if
end-if
.
Z-FORZA-CAMBIA-CONTROLLI¶
Routine che racchiude le routines di modifica controlli per ciascuna pagina presente nel programma. A differenza di Z-CAMBIA-CONTROLLI, questa routine esegue la modify del controllo sempre, quindi è più pesante ma è più sicura.
Esempio della routine
z-forza-cambia-controlli.
move 'S' to z-forza-cambia-ctr
perform z-cambia-controlli.
.
Z-FORZA-CAMBIA-PAGINA-nn¶
A differenza di Z-CAMBIA-CONTROLLI, questa routine esegue la modify del controllo sempre, quindi è più pesante ma è più sicura.
Esempio della routine
z-forza-cambia-pagina-00.
move 'S' to z-forza-cambia-ctr
perform z-cambia-pagina-00
.
Gestione push-button "BITMAP"¶
Z-CARICA-BITMAP¶
Routine molto specializzata che viene usata nel caso in cui si inserisce sulla maschera un pulsante di tipo "BITMAP". Gestisce il caricamento del file che contiene la bitmap associata al pulsante, mettendo l'handle nell'apposito campo di working.
Esempio della routine In questo esempio sono presenti due diversi push-button di tipo bitmap.
*----------------------------------------------------------------*
* Caricamento bitmap x push buttons
*----------------------------------------------------------------*
z-carica-bitmap.
move ' ' to x-nome-bitmap-btn-su
string ext-sys-dir ext-os-slash
'crm052_btn-su.bmp'
delimited ' ' into x-nome-bitmap-btn-su
call 'W$BITMAP' using wbitmap-load,
x-nome-bitmap-btn-su
giving handle-btn-su
move ' ' to x-nome-bitmap-btn-giu
string ext-sys-dir ext-os-slash
'crm052_btn-giu.bmp'
delimited ' ' into x-nome-bitmap-btn-giu
call 'W$BITMAP' using wbitmap-load,
x-nome-bitmap-btn-giu
giving handle-btn-giu
.
Z-SCARICA-TUTTO¶
Routine complementare a Z-CARICA-BITMAP, che esegue la rimozione dalla memoria delle bitmap collegate ai pulsanti PUSH-BUTTON.
Esempio della routine
*----------------------------------------------------------------*
* Scaricamento bitmap x push buttons
*----------------------------------------------------------------*
z-scarica-tutto.
call 'W$BITMAP' using wbitmap-destroy,
handle-btn-su
call 'W$BITMAP' using wbitmap-destroy,
handle-btn-giu
.
Gestione customizzazioni maschera¶
Z-99-INIT-CUSTOM¶
Questa routine carica le customizzazioni definite sulla maschera (personalizzate dall'utente, o in mancanza di queste, quelle definite su screens).
Esempio della chiamata alla routine Questa routine viene chiamata automaticamente all'interno di X-CARICA-LINGUA, quindi non è necessario richiamarla.
Esempio della routine
**---------------------------------------------------------------**
** Attribuzione customizzazioni
**---------------------------------------------------------------**
z-99-init-custom.
move k-idc-tm-grid-frame to t-cf-id (0001)
move k-idc-tm-rif-ordine-cli to t-cf-id (0004)
move k-idc-w-grid-det-descrizione-ord to t-cf-id (0008)
move k-idc-grid-det to t-cf-id (0007)
move 0 to z
perform k-max-idc times
add 1 to z
initialize util-gesfield
move 'LEGGI' to gesfield-ope
move k-program-id to gesfield-prg
move 1 to gesfield-form
move t-cf-id (z) to gesfield-id
call 'GESFIELD' using stringhe util-gesfield
move gesfield-color-control to t-cf-color-control (z)
move gesfield-color-label to t-cf-color-label (z)
end-perform
.
X-CARICA-LINGUA¶
Questa routine carica su apposite variabili definite nel file ".WRK", tutti i testi gestiti nel programma: - Messaggi - Etichette - Valori fissi
Esempio della chiamata alla routine Questa routine deve essere inserita tra le prime istruzioni del programma, ad esempio:
move k-program-id to prog-err w-nome-hlp.
perform ctr-abil.
perform z-99-init-program
perform open-files
perform rd-azi
initialize util-ncnf
perform x-configurazione-nascosta
perform x-carica-lingua
initialize w-dati-called.
Esempio della routine La routine carica in sequenza: 1. Customizzazioni (z-99-init-custom) 2. Etichette locali (tipo 'LE') 3. Status bar (tipo 'LB') 4. Combo-box (tipo 'LV') 5. Messaggi locali (tipo 'LM') 6. Messaggi generici (tipo 'GM')
Ciascuna sezione usa READLNG per caricare i testi in lingua dal file .lng del programma.
X-SET-M-messaggio¶
Questa routine esegue le operazioni necessarie per la visualizzazione di un messaggio, seguendo il protocollo stabilito per una corretta gestione dei messaggi in lingua. Di fatto imposta l'id del messaggio e lo muove direttamente in WB-MSG.
Esempio della chiamata alla routine
if tm-pnt = 0
perform x-set-m-crm013-10-1
perform vbx-msg-error
go to a-grid
end-if
Esempio della routine
x-set-m-crm013-10-1.
perform x-set-m-crm013-10-1-id
move m-crm013-10-1 to wb-msg
.
Gestione files¶
SEARCH-FILES-GEN¶
Routine che contiene l'apertura dei files di un programma. Viene chiamata automaticamente dalla funzione generica di apertura dei files OPEN-FILES.
Esempio della routine
**---------------------------------------------------------------**
** Apertura files standard
**---------------------------------------------------------------**
search-file-gen.
go to
f-cp-001
f-cp-003
f-cp-004
f-cp-006
f-cp-007
f-cp-017
depending on w-ind-fl.
f-cp-001.
open input crmtipcl
go to ex-search-file-gen.
f-cp-003.
open i-o crminfor
go to ex-search-file-gen.
...
ex-search-file-gen. exit.
Z-CLOSE-FILES¶
Chiusura dei files previsti in un programma.
Esempio della routine
**---------------------------------------------------------------**
** Chiusura files standard
**---------------------------------------------------------------**
z-close-files.
close crmtipcl
crminfor
crminftt
crminfvf
crmskinf
crminfgr
.
Gestione griglie - funzioni comuni¶
X-TROVA-COL-NUM-nomegrid¶
Questa routine permette di caricare l'ordine delle colonne di una griglia all'interno di apposite variabili specifiche generate nella ".WRK" (GCN-nomecolonna).
NB: questa versione analizza il contenuto della griglia direttamente con INQUIRY del controllo "griglia", ed è alternativa a X-TROVA-COL-HD-nomegrid.
Esempio della chiamata alla routine Questa routine è essenziale nel caso di griglia modificabile, ma è consigliabile anche per gli altri programmi. Va messa nella parte iniziale di un programma, dopo le routine iniziali e soprattutto dopo la Z-PREPARA-nomegrid.
....
display s-mm-1
perform z-costruisci-controlli
perform z-prepara-tm-grid
* Caricamento id colonne griglia
perform x-trova-col-num-grid-det
.
Esempio della routine
*------------------------------------------------------------------
* Ricerca posizioni colonna per: tm-tab
*------------------------------------------------------------------
x-trova-col-num-tm-tab.
move 0 to k
perform with test after until w-hid-data-col-id = spaces
add 1 to k
inquire e-tm-tab (1, k), hidden-data in w-hidden-data
evaluate w-hid-data-col-id
when 'num'
move k to gcn-num
when 'des'
move k to gcn-des
when 'tip'
move k to gcn-tip
...
end-evaluate
inquire e-tm-tab (1, k), cell-data in w-hidden-data
end-perform
.
X-TROVA-COL-HD-nomegrid¶
Questa routine permette di caricare l'ordine delle colonne di una griglia all'interno di apposite variabili specifiche generate nella ".WRK" (GCN-nomecolonna).
NB: questa versione analizza il contenuto della griglia attraverso un'area di linkage restituita da GRIDADMN ed è alternativa a X-TROVA-COL-NUM-nomegrid.
Esempio della routine
*------------------------------------------------------------------
* Ricerca posizioni colonna per: tm-tab
*------------------------------------------------------------------
x-trova-col-hd-tm-tab.
move 0 to k
perform gdad-hd-pnt times
add 1 to k
move gdad-hd-ele (k) to w-hidden-data
evaluate w-hid-data-col-id
when 'num'
move k to gcn-num
when 'des'
move k to gcn-des
...
end-evaluate
end-perform
.
X-SET-ROW-nomegrid-COLOR¶
Questa routine permette di attribuire un colore specifico alle righe della griglia, in funzione di decisioni prese dal programma. Viene costruita utilizzando un'area apposita di codice inserita in un campo di screens.
Esempio della chiamata alla routine Questa routine deve essere inserita nelle routines principali di chiamata a GRIDADMN (in particolare in caso di aggiunta/modifica riga).
x-add-record-to-grid.
initialize util-gdad
move "Add-Record" to gdad-ope
move prog-err to gdad-prg
move 1 to gdad-frm
move k-id-grid to gdad-ctrl-id
move k to i-grid-color
perform x-set-row-grid-color
move row-grid-color to gdad-color
call "GRIDADMN" using stringhe util-gdad gdad-record
.
Z-GEN-CONTATORE¶
Routine generica collegata alle griglie, che centralizza la visualizzazione di un messaggio incrementale da visualizzare in un ciclo di caricamento record (vedi ASN210).
La routine esegue un refresh del contatore: - Ogni record fino a 10 - Ogni 10 record fino a 100 - Ogni 100 record fino a 1000 - Ogni 1000 record oltre
X-nomegrid-CAMBIA-DIM-COLONNA¶
Questa routine esegue una chiamata a GRIDADMN allo scopo di salvare il ridimensionamento di una colonna effettuata dall'operatore.
Esempio della chiamata alla routine Questa routine viene chiamata direttamente da altre routine generate automaticamente: vedi Z-99-EVENT-nomegrid.
evaluate event-type
when msg-col-width-changed
perform x-grid-cambia-dimensione-colonna
end-evaluate
Esempio della routine
**---------------------------------------------------------------**
** Se configurato dall'operatore, eseguo la modifica
** configurazione colonna
**---------------------------------------------------------------**
x-grid-cambia-dimensione-colonna.
initialize util-gdad
move 'Modifica-Col' to gdad-ope
move prog-err to gdad-prg
move 1 to gdad-frm
move event-control-id to gdad-ctrl-id
move event-data-2 to gdad-col-disp-size
move event-control-handle to gdad-handle
move 'S' to gdad-usa-gdh
move ghd-r-sub-h (event-data-1) to gdad-sub-h
move ghd-r-sub-esp (event-data-1) to gdad-sub-esp
call 'GRIDADMN' using stringhe util-gdad
.
Estratto da documentazione interna ClickUp