COGR14 - Ricostruzione ricerca: Anagrafiche Cli./For./Soci¶
Sorgente: cbl/cogr14.cbl | Tipo: Programma di menu / elaborazione batch | Program-ID: COGR14
Menu: Sistema > Archivi > Ricostruzioni > Ricerche [Anagrafiche Cli./For./Soci]
Scopo¶
COGR14 svuota e ricostruisce l'archivio di ricerca per stringa delle anagrafiche COGSTANA. Per ogni anagrafica cli/for/soci (COGGEANA) spezza la denominazione (ana-nome e, se presente, ana-nome2) in parole-chiave di ricerca tramite la subroutine COGS34, e per ciascuna parola aggiorna un indice inverso: parola -> elenco dei numeri interni delle anagrafiche che la contengono.
L'indice memorizza il numero interno dell'anagrafica (non la chiave tipo+codice): tale numero viene letto dal raccordo COGRACAN, che deve essere gia' stato ricostruito da COGR13. Il risultato e' la struttura usata a runtime dalle finestre di ricerca anagrafica per parola.
Nota etichetta di menu vs funzione reale: la voce di menu recita "Anagrafiche Cli./For./Soci" (e l'anagrafica trattata e' effettivamente
COGGEANA), ma la funzione svolta e' la ricostruzione delle stringhe di ricercaCOGSTANA(titolo maschera interno: "Ricostruzione Stringhe Anagrafiche"). Non ricostruisce l'anagrafica in se'.
File e tabelle principali¶
| File/Tabella | Copybook | Uso |
|---|---|---|
| COGGEANA | cogfiles.cpy (ana-rec) |
Anagrafica cli/for/soci: sorgente scandita in sequenza su ana-chia; letti ana-nome e ana-nome2 |
| COGRACAN | cogfiles.cpy (ran-rec) |
Raccordo anagrafica/numero: letto per chiave secondaria ran-chia1 (tipo+codice) per ricavare ran-nume |
| COGSTANA | cogr14.fd / cogstana.cpy (stan-rec) |
Indice di ricerca per parola: file di destinazione, svuotato e ricostruito |
| COGTABEL | cogfiles.cpy (euta-rec) + cnfgrice.cpy |
Tabella #70 (arg RICE, key DEFINE): abilitazione ricerche |
Struttura del record COGSTANA (cogstana.cpy) - record a lunghezza variabile:
stan-key1=stan-paro1PIC X(9) +stan-prog1PIC 9(4) COMP-4 - parola di 9 byte + progressivo di chiave primariastan-ultiPIC 9(8) COMP-4 - puntatore al primo elemento tabellare liberostan-puntPIC 9(2) - numero elementi presenti (DEPENDING ON)stan-tabeOCCURS 0..40 PIC 9(8) COMP-4 - elenco numeri interni anagrafiche (ran-nume)
Flusso principale¶
main / a000- init programma,ctr-abil,open-files,rd-azi, accept data,x-carica-lingua.- Legge la configurazione ricerche
COGTABELtipo 70 (argRICE, keyDEFINE) viard-tab; blocca se assente o seeuta-c008-ana = 'N'. - Conferma "Confermi ricostruzione Stringhe Anagrafiche ?" (
acc-conf-custom); prosegue solo con F3. - Svuotamento file:
close cogstana,open output cogstana(azzera),close,open i-o cogstana, con controllo stato su ogni open. a1-agg-mer- azzera i contatori (anagrafiche lette, stringhe scritte, stringhe riscritte), posizionaCOGGEANAconstartsulow-valuee scandisce in sequenza:- per ogni anagrafica legge
COGRACANper chiaveran-chia1 = ana-chiaper recuperareran-nume; - passa
ana-nomea COGS34 (s34-key = 'RICANA',s34-l-str = 40) che restituisce le parole di 9 byte (s34-paro,s34-t); esegueaggpalper inserirle nell'indice; - se
ana-nome2non e' spazi, ripete tokenizzazione +aggpalanche sulla seconda denominazione. aggpal- per ogni parola non vuota costruiscestan-key1(parola + progressivo 0) e leggeCOGSTANA:- parola non presente ->
aggpal-1: crea il primo record della parola (progressivo 0) con il numero interno come primo elemento; - parola presente con
stan-ulti < 40->aggpal-2: aggiunge il numero interno in coda al record esistente (rewrite); - parola presente con
stan-ulti >= 40(record saturo): calcoladiv1 = stan-ulti / 40ediv2 = resto; se il resto e' 0 ->aggpal-3(crea un nuovo record con progressivodiv1e aggiornastan-ultidel record base), altrimenti ->aggpal-4(aggiunge al record di progressivodiv1nella posizionediv2+1e aggiornastan-ultidel record base). - A fine scansione visualizza i totali e mostra "Fine Elaborazione".
fine / z-chiudi- chiusura file, chiusura finestra,z-99-exit-program,exit program.
Sottoprogrammi chiamati¶
| Programma | Ruolo |
|---|---|
| COGS34 | Tokenizzatore: spezza la denominazione in parole-chiave di 9 byte secondo i parametri della tabella #70 individuata da s34-key (qui RICANA); interfaccia util-s34 (utils34.cpy). Richiamato con call + cancel a ogni riga |
Le restanti routine (gestione errori grave, stato file, apertura, messaggistica) sono incluse via copybook standard.
Configurazioni (COGTABEL / RNEWCONF)¶
| Tabella | Arg | Key | Campo | Uso |
|---|---|---|---|---|
| #70 | RICE | DEFINE | euta-c008-ana (cnfgrice.cpy) |
Abilitazione ricerca anagrafiche cli/for: se N la ricostruzione e' bloccata |
| #70 | RICANA | - | (letta da COGS34) | Parametri di spezzatura descrizione in parole di ricerca anagrafiche |
Note¶
- Prerequisito:
COGRACANdeve essere allineato/ricostruito da COGR13 prima di lanciare COGR14, perche' l'indice memorizza il numero internoran-numeletto daCOGRACAN. Se il numero interno non e' coerente, l'indice punta ad anagrafiche errate. - Il record di indice a paginazione (progressivo 0 come record base, progressivi >0 come pagine successive di 40 elementi ciascuna) permette a una stessa parola di raccogliere piu' di 40 anagrafiche superando il limite dell'OCCURS.
- Il file viene azzerato con la sequenza
open output/close/open i-o. - I contatori a video sono aggiornati ogni 10 record.