Vai al contenuto

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

  1. main / a000 - init (ctr-abil, open-files, rd-azi), finestra di avviso con contatori "Merci Forn.Lette" e "Raccordi Scritti".
  2. Lettura configurazione (rd-tab) e controllo abilitazione euta-c008-cmf.
  3. a010 - acc-conf: ESC (wesc) esce senza fare nulla; solo F3 (f3) prosegue.
  4. a020 - reinizializzazione fisica: close cogracmf, open output cogracmf (crea/tronca), close cogracmf, open i-o cogracmf. Azzera w-nume.
  5. a1-agg-mer - scansione archivio (start cogmerfo key is not < mfr-chia1 da low-value, poi read cogmerfo next):
  6. per ogni record incrementa "Merci Forn.Lette";
  7. salta il record se mfr-for = zero (fornitore non valorizzato) oppure se mfr-cod-for = spaces (codice merce fornitore vuoto): questi legami incompleti non vengono indicizzati;
  8. per i record validi: inizializza raf-rec, incrementa w-nume e lo assegna a raf-nume, copia mfr-gru/mfr-sot/mfr-cod in raf-gru/raf-sot/raf-cod e mfr-for in raf-for, poi write raf-rec;
  9. incrementa "Raccordi Scritti".
  10. fine - "Fine Elaborazione !!", chiusura di cogmerfo, cogracmf, cogtabel e 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 primaria RAF-CHIA = RAF-NUME (progressivo, 9(08) COMP-4), chiave secondaria RAF-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-nume e' 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-file e' la routine standard di apertura richiamata da open-files (apre in input cogtabel, cogmerfo, cogracmf).