Vai al contenuto

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 ricerca COGSTANA (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-paro1 PIC X(9) + stan-prog1 PIC 9(4) COMP-4 - parola di 9 byte + progressivo di chiave primaria
  • stan-ulti PIC 9(8) COMP-4 - puntatore al primo elemento tabellare libero
  • stan-punt PIC 9(2) - numero elementi presenti (DEPENDING ON)
  • stan-tabe OCCURS 0..40 PIC 9(8) COMP-4 - elenco numeri interni anagrafiche (ran-nume)

Flusso principale

  1. main / a000 - init programma, ctr-abil, open-files, rd-azi, accept data, x-carica-lingua.
  2. Legge la configurazione ricerche COGTABEL tipo 70 (arg RICE, key DEFINE) via rd-tab; blocca se assente o se euta-c008-ana = 'N'.
  3. Conferma "Confermi ricostruzione Stringhe Anagrafiche ?" (acc-conf-custom); prosegue solo con F3.
  4. Svuotamento file: close cogstana, open output cogstana (azzera), close, open i-o cogstana, con controllo stato su ogni open.
  5. a1-agg-mer - azzera i contatori (anagrafiche lette, stringhe scritte, stringhe riscritte), posiziona COGGEANA con start su low-value e scandisce in sequenza:
  6. per ogni anagrafica legge COGRACAN per chiave ran-chia1 = ana-chia per recuperare ran-nume;
  7. passa ana-nome a COGS34 (s34-key = 'RICANA', s34-l-str = 40) che restituisce le parole di 9 byte (s34-paro, s34-t); esegue aggpal per inserirle nell'indice;
  8. se ana-nome2 non e' spazi, ripete tokenizzazione + aggpal anche sulla seconda denominazione.
  9. aggpal - per ogni parola non vuota costruisce stan-key1 (parola + progressivo 0) e legge COGSTANA:
  10. parola non presente -> aggpal-1: crea il primo record della parola (progressivo 0) con il numero interno come primo elemento;
  11. parola presente con stan-ulti < 40 -> aggpal-2: aggiunge il numero interno in coda al record esistente (rewrite);
  12. parola presente con stan-ulti >= 40 (record saturo): calcola div1 = stan-ulti / 40 e div2 = resto; se il resto e' 0 -> aggpal-3 (crea un nuovo record con progressivo div1 e aggiorna stan-ulti del record base), altrimenti -> aggpal-4 (aggiunge al record di progressivo div1 nella posizione div2+1 e aggiorna stan-ulti del record base).
  13. A fine scansione visualizza i totali e mostra "Fine Elaborazione".
  14. 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: COGRACAN deve essere allineato/ricostruito da COGR13 prima di lanciare COGR14, perche' l'indice memorizza il numero interno ran-nume letto da COGRACAN. 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.