COGR08 - Ricostruzione ricerca: Legame Mer.Forn./Numero¶
Sorgente: cbl/cogr08.cbl | Tipo: Programma di menu / utility batch | Program-ID: COGR08
Menu: Sistema > Archivi > Ricostruzioni > Ricerche [Legame Mer.Forn./Numero]
Scopo¶
COGR08 ricostruisce da zero il file di raccordo COGRACMF (legame merce fornitore/numero). E' l'analogo di COGR05 ma per i codici merce fornitore: assegna a ogni legame merce/fornitore dell'archivio COGMERFO un numero progressivo interno (RAF-NUME) e memorizza l'associazione tra il numero e la chiave del legame (RAF-MER = gruppo/sottogruppo/codice della merce + RAF-FOR = codice fornitore). Questo progressivo e' usato come "codice interno" dagli indici di ricerca per codice merce fornitore.
Il programma svuota completamente COGRACMF e lo riscrive scandendo l'archivio COGMERFO in ordine di chiave primaria.
File e tabelle principali¶
| File/Tabella | Copybook (record) | Uso |
|---|---|---|
| COGMERFO | cogmerfo.cpy (mfr-rec) |
Legami codici merce / codici merce fornitore: sorgente scandita in sequenza su chiave primaria mfr-chia1 (merce gru/sot/cod + fornitore) |
| COGRACMF | cogracmf.cpy (raf-rec) |
Indice ricostruito: svuotato e riscritto, un record per legame (raf-nume progressivo, raf-mer = chiave merce, raf-for = fornitore) |
| COGTABEL | cogtabel.cpy (euta-rec, tipo 70) |
Configurazione ricerche: record RICE/DEFINE |
| feurtab | cogfiles.cpy |
File tabellare di servizio |
Programmi chiamati¶
Il programma non richiama subroutine applicative: e' un'utility autonoma. Usa solo le routine standard delle copybook (gestione finestre, messaggi, apertura file, controllo abilitazione): ctr-abil, open-files, box-msg, vis-win, acc-conf.
Configurazione (COGTABEL tipo 70 - RICE/DEFINE)¶
Legge da COGTABEL (euta-tipo=70, euta-cfg-arg=RICE, euta-cfg-key=DEFINE). Se assente: "Configurazione Assente!!" e termina.
Flag euta-c008 |
Uso in COGR08 |
|---|---|
euta-c008-cmf |
Abilitazione ricerca su codice merce fornitore. Se = N -> "Manca Abilitazione !!" e termina |
Flusso principale¶
main / a000- init (ctr-abil,open-files,rd-azi), finestra di avviso con contatori "Merci Forn.Lette" e "Raccordi Scritti".- Lettura configurazione (
rd-tab) e controllo abilitazioneeuta-c008-cmf. a010-acc-conf: ESC (wesc) esce senza fare nulla; solo F3 (f3) prosegue.a020- reinizializzazione fisica:close cogracmf,open output cogracmf(crea/tronca),close cogracmf,open i-o cogracmf. Azzeraw-nume.a1-agg-mer- scansione archivio (start cogmerfo key is not < mfr-chia1da low-value, poiread cogmerfo next):- per ogni record incrementa "Merci Forn.Lette";
- salta il record se
mfr-for = zero(fornitore non valorizzato) oppure semfr-cod-for = spaces(codice merce fornitore vuoto): questi legami incompleti non vengono indicizzati; - per i record validi: inizializza
raf-rec, incrementaw-numee lo assegna araf-nume, copiamfr-gru/mfr-sot/mfr-codinraf-gru/raf-sot/raf-codemfr-forinraf-for, poiwrite raf-rec; - incrementa "Raccordi Scritti".
fine- "Fine Elaborazione !!", chiusura dicogmerfo,cogracmf,cogtabele uscita (z-99-exit-program,exit program).
Note¶
- A differenza di COGR05 (che indicizza tutte le merci senza filtro), COGR08 filtra i legami: vengono scritti solo i record con fornitore valorizzato (
mfr-for <> 0) e codice merce fornitore non vuoto (mfr-cod-for <> spaces). Il contatore "Merci Forn.Lette" conta i record letti, "Raccordi Scritti" solo quelli effettivamente indicizzati. - Struttura del record
COGRACMF: chiave primariaRAF-CHIA=RAF-NUME(progressivo, 9(08) COMP-4), chiave secondariaRAF-CHIA1=RAF-MER(gru X(02) + sot X(02) + cod 9(05)) +RAF-FOR(9(05)). Consente sia il lookup "dal numero al legame" sia "dal legame merce/fornitore al numero". - Il progressivo
w-numee' sequenziale nell'ordine di lettura: ricostruzioni successive possono riassegnare numeri diversi agli stessi legami, percio' gli indici dipendenti dal codice merce fornitore vanno ricostruiti a valle di COGR08. - Il paragrafo
search-filee' la routine standard di apertura richiamata daopen-files(apre in inputcogtabel,cogmerfo,cogracmf).