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¶
main / apri- init,ctr-abil,rd-azi, apertura file, poix99-src-cfgper leggere la configurazione; imposta la maschera "COGR40: Ricostruzione COGSTRIF".x99-src-cfg- lettura configurazione:- via RNEWCONF (pacchetto Coge, gruppo
RICEGENERA, chiaveRICERCA-UPPER) ricavatm-cfg-upper(conversione maiuscolo delle stringhe); - via
COGTABELtipo 70 (RICE/DEFINE) ricava l'abilitazioneeuta-c008-rifintm-cfg-ricerca-strif(S/N; configurazione assente o valore diverso da S/N = non abilitata). a4- resettab-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 eseguefase1.fase1- azzera il file:close cogstrif+open output cogstrif+close(svuotamento). Poi scandisceCOGRIFERdall'inizio (st-cogrifer-notmin+ looprdnxt-cogrifer). Per ogni contatto:- incrementa
tm-letti; - esegue
z-cogsa1-inserisci-stringhe-rif; - in base all'esito COGSA1 (
cogsa1-esito) incrementatm-scrittiotm-errori. - a fine ciclo esegue
z-cogsa1-chiudi-stringhe-rif(flush finale). z-cogsa1-inserisci-stringhe-rif- preparautil-cogsa1: chiave contatto (rif-chia1), origine parolak-dove-nome("O"), descrizione =rif-nome, operazioneI, log abilitato, flag maiuscolo da configurazione; chiama COGSA1.z-cogsa1-chiudi-stringhe-rif- operazioneXsu COGSA1 per chiudere/scaricare l'indice.fine- chiusura file; se la ricerca era abilitata eseguecancel "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 (tipost-rif-k-tip+ codicest-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:
COGSTRIFviene svuotato infase1e 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-skippedresta a zero. - Il campo
st-rif-fl-dovedistingue l'origine della parola; questo programma indicizza solo il nome (k-dove-nome = "O"). Le costantik-dove-ana/k-dove-notesono definite ma non usate qui. - Il file
COGSTRIFnon e' aperto direttamente in scrittura da COGR40 (a parte lo svuotamento iniziale): tutte le write/rewrite sono gestite internamente da COGSA1.