COGR10 - Ricostruzione ricerca: Legame List.Gen.Forn./Numero¶
Sorgente: cbl/cogr10.cbl | Tipo: Programma di menu / elaborazione batch | Program-ID: COGR10
Menu: Sistema > Archivi > Ricostruzioni > Ricerche [Legame List.Gen.Forn./Numero]
Scopo¶
COGR10 ricostruisce da zero l'archivio di raccordo COGRACLF, che collega
ogni riga del listino generale fornitori (COGGENMF) a un numero
progressivo univoco. Questo raccordo e' il prerequisito degli indici di
ricerca sul listino generale: gli indici (COGSTLFM per codice merce
fornitore, COGSTLFD per descrizione) memorizzano infatti il numero
progressivo ral-nume, non la chiave del listino. COGR10 va quindi eseguito
prima di COGR11 e COGR12.
A differenza degli altri programmi della famiglia, COGR10 non produce un indice per parole e non chiama COGS34: si limita a creare, per ogni riga di listino valida, un record di raccordo numero <-> (fornitore + codice merce fornitore).
Il programma:
- svuota completamente
COGRACLF(open output + close, poi riapertura in i-o); - scandisce il listino generale fornitori
COGGENMF; - per ogni riga valida assegna un numero progressivo crescente (
w-nume) e scrive un recordCOGRACLFcon quel numero, il fornitore e il codice merce fornitore.
E' interattivo: mostra la finestra di avviso "Il programma distruggera' tutti i dati esistenti", attende conferma con F3 (ESC per uscire) e aggiorna a video i contatori (merci fornitore lette, raccordi scritti).
File e tabelle principali¶
| File/Tabella | Copybook | Uso |
|---|---|---|
| COGRACLF | cograclf.cpy (ral-rec) |
Raccordo listino generale fornitore / numero: svuotato e ricostruito |
| COGGENMF | coggenmf.cpy (gmf-rec) |
Listino generale fornitori: sorgente scandita |
| COGTABEL | cogtabel.cpy (euta-rec, tipo 70) |
Configurazione ricerche RICE/DEFINE: flag di abilitazione (euta-c008-lidm, euta-c008-licmf) |
| FEURTAB | cogfiles.cpy |
File tabelle generale (aziende, controlli standard) |
Struttura del record raccordo (COGRACLF)¶
Il record ral-rec ha due chiavi:
ral-chia(chiave primaria) =ral-nume(9(08) comp-4): numero progressivo assegnato dal programma;ral-chia1(chiave secondaria) =ral-for(fornitore,9(05)) +ral-cmf(codice merce fornitore,X(22)): consente il lookup inverso da fornitore + codice al numero.
Flusso principale¶
main / a000- init (ctr-abil,open-files,rd-azi), visualizza la finestra di avviso.- Lettura configurazione:
rd-tableggeCOGTABELtipo 70, argomentoRICE, chiaveDEFINE. Se assente -> "Configurazione Assente"; se entrambieuta-c008-lidm = 'N'eeuta-c008-licmf = 'N'-> "Manca Abilitazione" e uscita (il raccordo serve solo se e' attiva almeno una delle due ricerche sul listino generale). a010-acc-conf: attende la conferma. ESC esce, solo F3 prosegue.a020- azzeramento raccordo:open output cograclf,close,open i-o cograclf.a1-agg-mer- scansione sequenziale diCOGGENMFdalow-value(start+read next):- incrementa e mostra il contatore letti (
ctr-m-l); - salta i record senza fornitore (
gmf-cf = zero) o senza codice merce fornitore (gmf-cmf = spaces); initialize ral-rec, incrementaw-numee lo assegna aral-nume;- copia
gmf-cmf -> ral-cmfegmf-cf -> ral-for; write ral-rece aggiorna il contatore raccordi scritti (ctr-m-s).fine- chiude i file ed esce (z-99-exit-program).
Sottoprogrammi chiamati¶
Nessuna CALL a subroutine applicative. COGR10 usa solo le utility standard di
messaggistica (box-msg / winmsg.cpy) e gestione stato/errore
(stato.cpy, grave.cpy).
Configurazioni (COGTABEL tipo 70)¶
| Argomento | Chiave | Campo | Uso |
|---|---|---|---|
| RICE | DEFINE | euta-c008-lidm | Abilitazione ricerca listino generale per descrizione (S/N) |
| RICE | DEFINE | euta-c008-licmf | Abilitazione ricerca listino generale per codice merce fornitore (S/N) |
Il programma parte se almeno uno dei due flag e' abilitato.
Note¶
- Il raccordo
COGRACLFviene azzerato completamente ad ogni esecuzione: i numeri progressiviral-numevengono riassegnati da 1. Percio', dopo COGR10, gli indiciCOGSTLFMeCOGSTLFDnon sono piu' coerenti (puntano a numeri vecchi) e vanno ricostruiti con COGR11 e COGR12. E' un vincolo d'ordine importante nella catena di ricostruzione. - COGR10 non usa COGS34 ne' produce alcun indice per parole: e' un semplice ripopolamento uno-a-uno del raccordo (una riga di listino -> un record di raccordo con numero progressivo).
- La descrizione dell'etichetta di menu ("Legame List.Gen.Forn./Numero") coincide con la funzione reale: creare la tabella di corrispondenza numero <-> riga di listino.
- I paragrafi usano lo stile legacy
PERFORM ... THRUeGO TO; sono qui descritti per fedelta' al sorgente, non come pattern da replicare.