Vai al contenuto

COG020 - Sequenze di ricerca merce

Sorgente: cbl/cog020.cbl | Tipo: Programma interattivo carattere (maschera testo con tabella scrollabile) | Program-ID: COG020

Menu:

  • Sistema > Configurazione > Sequenze (voce "Ricerca merci")
  • Sistema > Configurazione

Scopo

Configura la sequenza di ricerca merce che ogni funzione applicativa deve usare quando l'operatore cerca un articolo. Per ciascuna funzione (Gestione Distinte Base, Ordini Clienti/Fornitori, Bolle, Anagrafica Merci, ecc.) e' possibile stabilire in che ordine attivare i vari tipi di ricerca disponibili (codice interno, descrizione, codice merce fornitore, listini, ecc.).

Esiste una sequenza base valida come default, e la possibilita' di ridefinirla puntualmente per ogni funzione. Le configurazioni sono memorizzate come record di tipo 5 sulla tabella generalizzata COGTABEL.

Il programma opera anche come selezione mirata: quando e' richiamato da un'altra funzione (che passa in ut-cod il proprio codice funzione a 4 caratteri via user-area), COG020 si posiziona direttamente sulla riga di quella funzione permettendo di modificarne la sequenza.


Struttura del programma

Il programma usa una maschera carattere disegnata con la tabella mm-1 (18 righe) e gestisce lo scorrimento di una tabella interna tab-maschera che contiene la sequenza base (tm-seq-base, 5 slot) e le sequenze per funzione (tm-sequenza, una per ciascuna delle k-ele-righe = 32 funzioni). Ogni slot di sequenza e' una coppia tipo+codice di ricerca. La scelta dei valori avviene tramite la subroutine di scelta a opzioni COGS21.

Inizializzazione (apri / a4)

ctr-abil, open-files, rd-azi, caricamento della maschera (rd-msk-all), display titolo e footer. Legge la configurazione RNEWCONF ACCEPT-CON-TAB (paragrafo x99-src-cfg, vedi sotto) e prepara la tabella funzioni statica tab-funzioni (tf-tip/tf-des).

Caricamento (a-rd-tab / a-10-loop)

Scandisce COGTABEL sui record di tipo 5 (st-cogtabel-notmin + rdnxt-cogtabel). Il record con euta-cod = spaces porta la sequenza base (euta-st-des -> tm-seq-base); gli altri record vengono associati alla funzione corrispondente cercando euta-cod nella tabella statica (a1-src-tab) e caricati in tm-sequenza(i). Se il programma e' stato richiamato da una funzione (ut-cod valorizzato), memorizza in w-pos la posizione della riga da presentare direttamente.

Sequenza base (b-acc-base)

Se non arriva da richiamo (w-pos = 0), accetta le 5 posizioni della sequenza base tramite COGS21 (opzioni in w-opt-ricerca), controllando via x2-ctr-seq che non compaiano due ricerche uguali o due ricerche dello stesso tipo.

Riempimento vuoti (d-fill-vuoti)

Le funzioni prive di sequenza propria ereditano la sequenza base (tm-sequenza(i) = tm-seq-base).

Griglia funzioni (c-acc-tab)

Scorre l'elenco funzioni con la tabella mm-1 e permette di accettare, per la funzione selezionata, le 5 posizioni di ricerca (COGS21), con navigazione su/giu/pagina (tst-fun) e validazione x2-ctr-seq. F3 conferma e passa all'aggiornamento.

Aggiornamento (e-aggiorna)

Cancella i vecchi record di tipo 5 (del-cogtabel), preservando pero' i record la cui coda chiave euta-cod(8:3) e' numerica (sequenze "di nuovo tipo" gestite per operatore da COGS68). Riscrive quindi il record della sequenza base e un record per ogni funzione (e1-agg-tab, wr-cogtabel) con la descrizione in euta-st-des.


Tabelle e file

File logico Chiave / accesso Descrizione
FEURTAB - File di sistema aziende (aperto via cogfiles.cpy, rd-azi)
COGTABEL primaria euta-key (euta-tipo + euta-cod); accesso dinamico Tabella generalizzata. Record di tipo 5: sequenze di ricerca merce; euta-cod = codice funzione (spaces = sequenza base), euta-st-des = 5 coppie tipo/codice ricerca

COPY incluse

Working-Storage

feurtab.fd, cogtabel.fd (SELECT), cogfiles.cpy, cogtabel.cpy, cnfgrice.cpy (redefine euta-c008), wstato.cpy, wgrave.cpy, wopenf.cpy, wnscr.cpy, utilncnf.cpy, utils21.cpy, cogazien.cpy

Linkage

wcont.cpy (con redefine locale util -> ut-cod sul user-area), wcont1.cpy

Procedure Division

stato.cpy, stato1.cpy, winmsg.cpy, grave.cpy, open1.cpy, mmmask.cpy, dtab.cpy (routine disp-tab/disp-msk per la tabella scrollabile), tstfun1.cpy (tst-fun navigazione), cogtabel.k01


CALL a sottoprogrammi

Programma Scopo
COGS21 Subroutine di scelta a opzioni: presenta l'elenco dei tipi di ricerca (w-opt-ricerca) e restituisce la selezione per ciascuna posizione della sequenza
RNEWCONF Lettura della configurazione applicativa (paragrafo x99-src-cfg)

Configurazioni RNEWCONF

Il paragrafo x99-src-cfg legge, tramite RNEWCONF (copybook utilncnf.cpy, pacchetto k-pack-coge), la chiave:

  • gruppo RICEGENERA, chiave ACCEPT-CON-TAB -> caricata in tm-cfg-bc-tab (default N se vuota).

Note tecniche

  • Tabella funzioni statica: le 32 funzioni gestite (tab-funzioni) sono cablate nel sorgente come coppie codice/descrizione a 4+40 caratteri; l'aggiunta di una nuova funzione ricercabile richiede l'aggiornamento di questa tabella e di k-ele-righe.
  • Convivenza con COGS68: in fase di riscrittura vengono cancellati solo i record di tipo 5 con coda chiave non numerica; i record con euta-cod(8:3) numerico (sequenze per operatore gestite da COGS68) sono lasciati intatti.
  • Controllo di coerenza (x2-ctr-seq): impedisce di inserire nella stessa sequenza due ricerche identiche o due ricerche dello stesso tipo.
  • Doppia veste (menu / richiamo): quando ut-cod (campo del user-area in wcont.cpy) e' valorizzato, il programma parte posizionato sulla funzione chiamante; da menu parte dalla sequenza base.
  • La copybook cnfgrice.cpy fornisce la redefine euta-c008 ma qui non e' usata: la sequenza e' memorizzata in euta-st-des (redefine euta-stati).