COGR36 - Ricostruzione ricerca: Cespiti¶
Sorgente: cbl/cogr36.cbl | Tipo: Programma di menu / elaborazione (interfaccia a caratteri) | Program-ID: COGR36
Menu: Sistema > Archivi > Ricostruzioni > Ricerche [Cespiti]
Scopo¶
COGR36 ricostruisce l'indice di ricerca per parole dell'anagrafica cespiti, ossia il file COGSTCSP ("stringhe ricerche cespiti"). Distrugge completamente il file esistente e lo ricrea scandendo l'anagrafica cespiti COGCESAN: per ogni cespite spezza la descrizione (csa-nome) in parole tramite la subroutine COGS34 e, per ciascuna parola, indicizza il codice cespite (csa-cod) nel file di stringhe.
E' un tipico "ricostruttore di file-indice di lookup": la tabella sorgente scandita e' COGCESAN, la grandezza ricostruita e' l'indice invertito parola -> lista codici cespite usato dalla ricerca cespiti per descrizione.
File e tabelle principali¶
| File/Tabella | Copybook | Uso |
|---|---|---|
| COGCESAN | cogcesan.cpy (csa-rec) |
Anagrafica cespiti: scansione completa (sorgente); si legge csa-nome (descrizione) e csa-cod (codice) |
| COGSTCSP | cogstcsp.cpy (stcs-rec) |
Indice stringhe ricerca cespiti: file distrutto e riscritto (destinazione) |
| COGTABEL | cogtabel.cpy (euta-rec, tipo 70) |
Configurazione ricerche: chiave RICE/DEFINE, flag abilitazione euta-c008-csp |
Sottoprogrammi chiamati¶
| Programma | Ruolo |
|---|---|
| COGS34 | Tokenizzazione: dalla descrizione (s34-stringa, chiave RICCSP) restituisce la tabella di parole s34-paro(...) (linkage utils34.cpy) |
Struttura del file-indice COGSTCSP¶
Il record stcs-rec e' un indice invertito con "capitolazione" delle liste:
stcs-paro1(9 byte) - parola chiave;stcs-prog1- progressivo, per spezzare in piu' record una parola con molti cespiti associati;stcs-ulti- puntatore al primo elemento libero;stcs-punt/stcs-cate- tabellastcs-tabe(fino a 40 codici cespiteOCCURS 0 TO 40 DEPENDING ON stcs-punt).
Ogni record contiene fino a 40 codici cespite; superata la soglia si crea un nuovo record con progressivo incrementato.
Flusso principale¶
a000- init:ctr-abil, apertura file,rd-azi; disegna la finestra a caratteri con l'avviso "Il programma distruggera' le stringhe cespiti precedenti!" e i contatori.- Verifica configurazione - legge
COGTABELtipo 70, argomentoRICE, chiaveDEFINE. Se assente segnala "Configurazione Assente!!" ed esce; seeuta-c008-csp = 'N'segnala "Manca Abilitazione !!" ed esce. a010-acc-conf: ESC esce, F3 conferma.a020- azzera il file:open output cogstcsp+close(svuotamento), poi riaperturai-o. Eseguea1-agg-mer.a1-agg-mer- scandisceCOGCESANdall'inizio (start+read next); per ogni cespite:- incrementa il contatore letti (
ctr-m-l); - chiama COGS34 (
RICCSP, lunghezza 40) per ottenere le parole dacsa-nome; - esegue
aggpalper indicizzare ogni parola. aggpal- per ogni parola non vuota della tabella (s34-paro(i1)):- legge il record
stcs-key1constcs-prog1 = 0; - se non esiste (
aggpal-1) crea il primo record della parola con il codice cespite; - se esiste con lista non piena (
stcs-ulti < 40,aggpal-2) aggiunge il codice e riscrive; - se la lista e' piena (
aggpal-3/aggpal-4) usa la divisionestcs-ulti / 40per calcolare progressivo (div1) e posizione (div2), creando/aggiornando i record di continuazione con progressivo > 0 e riallineando il record base.
Contatori maschera¶
| Campo | Significato |
|---|---|
| ctr-m-l | Cespiti letti |
| ctr-m-s | Stringhe (record indice) scritte |
| ctr-m-r | Stringhe (record indice) riscritte |
Configurazioni (COGTABEL tipo 70)¶
| Tipo | Argomento | Chiave | Campo | Uso |
|---|---|---|---|---|
| 70 | RICE | DEFINE | euta-c008-csp | Abilitazione ricerca cespiti: se N il programma esce senza ricostruire |
Note¶
- L'operazione e' distruttiva e non reversibile:
COGSTCSPviene svuotato all'inizio e ricostruito da zero. - Il programma non ha modalita' di simulazione: la conferma F3 avvia direttamente la ricostruzione.
- Programma a interfaccia a caratteri (usa
scree.cpy,open1.cpy), non convertito a GUI come gli altri della famiglia. I paragrafisearch-file/sf-01..sf-03sono residui non attivi (l'apertura dicogstcspinsf-03e' commentata). - Le parole sono lunghe 9 byte (
stcs-paro1); COGS34 e' invocato con lunghezza stringa 40 (pari alla descrizionecsa-nome).