Per ciascuna griglia modificabile occorre aggiungere nel programma sorgente questa perform. Può anche essere lasciata vuota.
Permette di inserire controlli trasversali su una riga griglia (cioè controlli che non riguardano un singolo campo ma un insieme di campi, per cui inserire il controllo sotto la x-controlla della singola colonna potrebbe far si che il controllo non venga eseguito (perchè ad esempio viene modificato solo il 2.o campo interessato dal controllo).
In questo modo, i controlli inseriti in questa routine vengono eseguiti nella routine X-CONTROLLA-nomegrid-COL (routine privata), che è richiamata nelle routines pubbliche:
• X-CONTROLLA-nomegrid-TUTTO (controlli globali sulla griglia)
•X-CONTROLLA-nomegrid-RIGA (controlli su una specifica riga)
Esempio prelevato da COGV91G
*---------------------------------------------------------------**
* Qui introduco dei controlli aggiuntivi non legati ad un singolo
* campo
*---------------------------------------------------------------**
x-controlla-grid-det-col-ep.
*---------------------------------------------------------------**
* Merce "inizio voce":
* - Se contiene una voce, deve essere diversa dalla voce
* della riga precedente
* - Deve avere una descrizione
*---------------------------------------------------------------**
if tm-mer-cm (i) = tm-cfg-merce-ini-voce
if i > 1 and
tm-voce (i) <> " " and
tm-voce (i - 1) <> " " and
tm-voce (i - 1) = tm-voce (i)
string "La merce 'Inizio voce' deve "
"avere una voce diversa "
"dalla precedente" delimited size into x-f3-msg
perform x-set-f3-msg-grid-det
move "N" to x-f3-ok-parziale
end-if
if tm-idx-des (i) = 0
string "Sulla merce " tm-cfg-merce-ini-voce " deve "
"essere presente una descrizione"
delimited size into x-f3-msg
perform x-set-f3-msg-grid-det
move "N" to x-f3-ok-parziale
end-if
end-if
.
Esempio prelevato da CRM065
*---------------------------------------------------------------**
* Qui introduco dei controlli aggiuntivi non legati ad un singolo
* campo
*---------------------------------------------------------------**
x-controlla-grid-det-col-ep.
evaluate w-cell-x
when gcn-r-dos-key-num
if f9
initialize util-crmk11
move k-program-id to crmk11-caller
move "CRMK11" to crmk11-called
move "S" to crmk11-modalita
move " " to crmk11-tdo
call "CRMK11" using stringhe util-crmk11
cancel "CRMK11"
if crmk11-out-num not = 0
move crmk11-out-key-tdo to tm-r-dos-key-tip (i)
move crmk11-out-num to tm-r-dos-key-num (i)
perform x-controlla-tm-r-dos-key-num
Questa parte puo' essere omessa se gia' presente nella X-CONTROLLA-PRECEDENTE
move i to k-rg
perform x-modify-riga-grid-det
end-if
end-if
when gcn-r-dos-id
....
end-evaluate
.
.