COGR05 - Ricostruzione ricerca: Legame Merce/Numero¶
Sorgente: cbl/cogr05.cbl | Tipo: Programma di menu / utility batch | Program-ID: COGR05
Menu: Sistema > Archivi > Ricostruzioni > Ricerche [Legame Merce/Numero]
Scopo¶
COGR05 ricostruisce da zero il file di raccordo COGRACME (legame merce/numero). E' il primo anello della catena degli indici di ricerca merce: assegna a ogni merce dell'anagrafica un numero progressivo interno (RAM-NUME) e memorizza l'associazione biunivoca numero <-> chiave merce (RAM-MER = gruppo/sottogruppo/codice). Questo progressivo numerico viene poi usato come "codice interno" dagli altri indici di ricerca (COGSTDME per la descrizione, COGSTCME per il codice), che memorizzano riferimenti compatti a RAM-NUME invece della chiave merce estesa.
Il programma svuota completamente COGRACME e lo riscrive scandendo tutta l'anagrafica COGMERCI in ordine di chiave primaria.
File e tabelle principali¶
| File/Tabella | Copybook (record) | Uso |
|---|---|---|
| COGMERCI | cogmerci.cpy (mer-rec) |
Anagrafica merce: sorgente scandita in sequenza su chiave primaria mer-chia (gruppo/sottogruppo/codice) |
| COGRACME | cogracme.cpy (ram-rec) |
Indice ricostruito: svuotato e riscritto, un record per merce (ram-nume progressivo, ram-mer = chiave merce) |
| COGTABEL | cogtabel.cpy (euta-rec, tipo 70) |
Configurazione ricerche: legge il record RICE/DEFINE per verificare l'abilitazione |
| feurtab | cogfiles.cpy |
File tabellare di servizio (gestione errori/stati) |
Programmi chiamati¶
Il programma non richiama subroutine applicative: e' un'utility autonoma. Utilizza solo le routine standard fornite dalle copybook (gestione finestre, messaggi, apertura file, controllo abilitazione), tramite perform ctr-abil, perform open-files, perform box-msg, perform vis-win, perform acc-conf.
Configurazione (COGTABEL tipo 70 - RICE/DEFINE)¶
All'avvio COGR05 legge da COGTABEL il record di configurazione delle ricerche:
euta-tipo= 70euta-cfg-arg=RICEeuta-cfg-key=DEFINE
Se il record e' assente (stato not = '00') mostra "Configurazione Assente!!" e termina.
L'abilitazione e' governata dai flag della ridefinizione euta-c008:
| Flag | Significato |
|---|---|
euta-c008-cm |
Utilizzo della ricerca su codice interno merce (S/N) |
euta-c008-dm |
Utilizzo della ricerca su descrizione merce (S/N) |
Se entrambi euta-c008-cm = N e euta-c008-dm = N, il programma mostra "Manca Abilitazione !!" e termina: senza almeno una delle due ricerche merce abilitate il raccordo numero/merce non serve.
Flusso principale¶
main / a000- inizializzazione (ctr-abil,open-files,rd-azi), visualizzazione finestra di avviso "Il programma distruggera' tutti i dati esistenti !!" con contatori "Merci Lette" e "Raccordi Scritti".- Lettura configurazione (
rd-tab) e controllo abilitazione come sopra. a010-acc-conf: attesa conferma operatore. ESC (wesc) esce senza fare nulla; solo F3 (f3) prosegue.a020- reinizializzazione fisica dell'indice:close cogracme,open output cogracme(crea/tronca il file),close cogracme, poiopen i-o cogracme. Azzera il progressivow-nume.a1-agg-mer- scansione anagrafica:start cogmerci key is not < mer-chiaconmer-chia= low-values (dal primo record);- loop
read cogmerci next: per ogni merce incrementa il contatore "Merci Lette", inizializzaram-rec, incrementaw-numee lo assegna aram-nume, copiamer-chiainram-mer, poiwrite ram-recsuCOGRACME; - incrementa il contatore "Raccordi Scritti"; a fine file esce.
fine- "Fine Elaborazione !!", chiusura dicogmerci,cogracme,cogtabele uscita (z-99-exit-program,exit program).
Note¶
- La corrispondenza e' 1:1 tra merci in anagrafica e record scritti: viene scritto un record per ogni merce letta, senza filtri (nessuna esclusione per classe o stato).
- Struttura del record
COGRACME: chiave primariaRAM-CHIA=RAM-NUME(progressivo, PIC 9(08) COMP-4), chiave secondariaRAM-CHIA1=RAM-MER(gruppo X(02) + sottogruppo X(02) + codice 9(05)). Il progressivo consente il lookup "dal numero alla merce" e la chiave secondaria il percorso inverso "dalla merce al numero". - Il progressivo
w-numee' assegnato in modo sequenziale nell'ordine di lettura dell'anagrafica: ricostruzioni successive possono riassegnare numeri diversi alle stesse merci, percio' gli indici dipendenti (COGSTDME, COGSTCME) vanno ricostruiti a valle di COGR05. - Il paragrafo
search-file(congo to ... depending on w-ind-fl) e' la routine standard di apertura file richiamata daopen-files: apre in inputcogtabel,cogmerci,cogracme.