Vai al contenuto

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 - tabella stcs-tabe (fino a 40 codici cespite OCCURS 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

  1. 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.
  2. Verifica configurazione - legge COGTABEL tipo 70, argomento RICE, chiave DEFINE. Se assente segnala "Configurazione Assente!!" ed esce; se euta-c008-csp = 'N' segnala "Manca Abilitazione !!" ed esce.
  3. a010 - acc-conf: ESC esce, F3 conferma.
  4. a020 - azzera il file: open output cogstcsp + close (svuotamento), poi riapertura i-o. Esegue a1-agg-mer.
  5. a1-agg-mer - scandisce COGCESAN dall'inizio (start + read next); per ogni cespite:
  6. incrementa il contatore letti (ctr-m-l);
  7. chiama COGS34 (RICCSP, lunghezza 40) per ottenere le parole da csa-nome;
  8. esegue aggpal per indicizzare ogni parola.
  9. aggpal - per ogni parola non vuota della tabella (s34-paro(i1)):
  10. legge il record stcs-key1 con stcs-prog1 = 0;
  11. se non esiste (aggpal-1) crea il primo record della parola con il codice cespite;
  12. se esiste con lista non piena (stcs-ulti < 40, aggpal-2) aggiunge il codice e riscrive;
  13. se la lista e' piena (aggpal-3 / aggpal-4) usa la divisione stcs-ulti / 40 per 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: COGSTCSP viene 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 paragrafi search-file / sf-01..sf-03 sono residui non attivi (l'apertura di cogstcsp in sf-03 e' commentata).
  • Le parole sono lunghe 9 byte (stcs-paro1); COGS34 e' invocato con lunghezza stringa 40 (pari alla descrizione csa-nome).