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 intm-cfg-bc-tab(defaultNse 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 dik-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 deluser-areainwcont.cpy) e' valorizzato, il programma parte posizionato sulla funzione chiamante; da menu parte dalla sequenza base. - La copybook
cnfgrice.cpyfornisce la redefineeuta-c008ma qui non e' usata: la sequenza e' memorizzata ineuta-st-des(redefineeuta-stati).