Vai al contenuto

COGR40 - Ricostruzione ricerca: Contatti

Sorgente: cbl/cogr40.cbl | Tipo: Programma di menu / elaborazione GUI | Program-ID: COGR40

Menu: Sistema > Archivi > Ricostruzioni > Ricerche [Contatti]


Scopo

COGR40 ricostruisce l'indice di ricerca per parole dei contatti/riferimenti, ossia il file COGSTRIF ("stringhe ricerca Contatti/Riferimenti"). Distrugge il file esistente e lo ricrea scandendo l'anagrafica contatti COGRIFER: per ogni contatto delega alla subroutine COGSA1 la tokenizzazione del nome (rif-nome) e l'inserimento delle parole nell'indice, collegate alla chiave del contatto.

E' un ricostruttore di file-indice di lookup: la tabella sorgente scandita e' COGRIFER, la grandezza ricostruita e' l'indice invertito parola -> lista contatti (COGSTRIF) usato dalla ricerca contatti per nome.

File e tabelle principali

File/Tabella Copybook Uso
COGRIFER cogrifer.cpy (rif-rec) Anagrafica contatti/riferimenti: scansione completa (sorgente); si legge rif-chia1 (tipo+codice) e rif-nome
COGSTRIF cogstrif.cpy (st-rif-rec) Indice stringhe ricerca contatti: file distrutto e riscritto (destinazione, gestito da COGSA1)
COGTABEL cogtabel.cpy (euta-rec, tipo 70) Configurazione ricerche: chiave RICE/DEFINE, flag abilitazione euta-c008-rif

Sottoprogrammi chiamati

Programma Ruolo
COGSA1 Gestione dell'indice COGSTRIF: tokenizzazione del nome, inserimento stringhe (operazione I) e chiusura/flush (operazione X); linkage utilcogsa1.cpy
RNEWCONF Lettura configurazione RICEGENERA / RICERCA-UPPER (pacchetto Coge)

Flusso principale

  1. main / apri - init, ctr-abil, rd-azi, apertura file, poi x99-src-cfg per leggere la configurazione; imposta la maschera "COGR40: Ricostruzione COGSTRIF".
  2. x99-src-cfg - lettura configurazione:
  3. via RNEWCONF (pacchetto Coge, gruppo RICEGENERA, chiave RICERCA-UPPER) ricava tm-cfg-upper (conversione maiuscolo delle stringhe);
  4. via COGTABEL tipo 70 (RICE/DEFINE) ricava l'abilitazione euta-c008-rif in tm-cfg-ricerca-strif (S/N; configurazione assente o valore diverso da S/N = non abilitata).
  5. a4 - reset tab-maschera, acc-conf: senza F3 esce. Se la ricerca non e' abilitata (tm-cfg-ricerca-strif <> S) mostra "Ricerca non abilitata in Configurazione!" ed esce. Altrimenti esegue fase1.
  6. fase1 - azzera il file: close cogstrif + open output cogstrif + close (svuotamento). Poi scandisce COGRIFER dall'inizio (st-cogrifer-notmin + loop rdnxt-cogrifer). Per ogni contatto:
  7. incrementa tm-letti;
  8. esegue z-cogsa1-inserisci-stringhe-rif;
  9. in base all'esito COGSA1 (cogsa1-esito) incrementa tm-scritti o tm-errori.
  10. a fine ciclo esegue z-cogsa1-chiudi-stringhe-rif (flush finale).
  11. z-cogsa1-inserisci-stringhe-rif - prepara util-cogsa1: chiave contatto (rif-chia1), origine parola k-dove-nome ("O"), descrizione = rif-nome, operazione I, log abilitato, flag maiuscolo da configurazione; chiama COGSA1.
  12. z-cogsa1-chiudi-stringhe-rif - operazione X su COGSA1 per chiudere/scaricare l'indice.
  13. fine - chiusura file; se la ricerca era abilitata esegue cancel "COGSA1".

Struttura del file-indice COGSTRIF

Il record st-rif-rec e' un indice invertito:

  • st-rif-paro1 (25 byte) - parola chiave;
  • st-rif-fl-dove - origine della parola (nome/anagrafica/note);
  • st-rif-prog1 - progressivo per spezzare liste lunghe;
  • st-rif-ctr-occupati + st-rif-dati (OCCURS 40) - lista di chiavi contatto (tipo st-rif-k-tip + codice st-rif-k-cod).

La scrittura effettiva dei record e' interamente delegata a COGSA1.

Contatori maschera

Campo Significato
tm-letti Contatti letti
tm-scritti Contatti indicizzati con successo (COGSA1 esito positivo)
tm-errori Contatti con esito negativo da COGSA1
tm-skipped Contatti saltati (attualmente non usato: filtro per tipo anagrafico commentato)

Configurazioni

Fonte Pacchetto/Tipo Gruppo/Argomento Chiave Campo Uso
RNEWCONF Coge RICEGENERA RICERCA-UPPER ncnf-valore Conversione stringhe in maiuscolo (passata a COGSA1 come cogsa1-cfg-upper)
COGTABEL tipo 70 RICE DEFINE euta-c008-rif Abilitazione ricerca contatti: se non S il programma non ricostruisce

Note

  • L'operazione e' distruttiva: COGSTRIF viene svuotato in fase1 e ricostruito da zero.
  • Nel sorgente e' presente (commentato) un filtro per indicizzare solo i contatti legati ad anagrafiche cliente/fornitore/prospect; attualmente tutti i contatti vengono indicizzati, quindi il contatore tm-skipped resta a zero.
  • Il campo st-rif-fl-dove distingue l'origine della parola; questo programma indicizza solo il nome (k-dove-nome = "O"). Le costanti k-dove-ana/k-dove-note sono definite ma non usate qui.
  • Il file COGSTRIF non e' aperto direttamente in scrittura da COGR40 (a parte lo svuotamento iniziale): tutte le write/rewrite sono gestite internamente da COGSA1.