Vai al contenuto

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