Vai al contenuto

COGR10 - Ricostruzione ricerca: Legame List.Gen.Forn./Numero

Sorgente: cbl/cogr10.cbl | Tipo: Programma di menu / elaborazione batch | Program-ID: COGR10

Menu: Sistema > Archivi > Ricostruzioni > Ricerche [Legame List.Gen.Forn./Numero]


Scopo

COGR10 ricostruisce da zero l'archivio di raccordo COGRACLF, che collega ogni riga del listino generale fornitori (COGGENMF) a un numero progressivo univoco. Questo raccordo e' il prerequisito degli indici di ricerca sul listino generale: gli indici (COGSTLFM per codice merce fornitore, COGSTLFD per descrizione) memorizzano infatti il numero progressivo ral-nume, non la chiave del listino. COGR10 va quindi eseguito prima di COGR11 e COGR12.

A differenza degli altri programmi della famiglia, COGR10 non produce un indice per parole e non chiama COGS34: si limita a creare, per ogni riga di listino valida, un record di raccordo numero <-> (fornitore + codice merce fornitore).

Il programma:

  1. svuota completamente COGRACLF (open output + close, poi riapertura in i-o);
  2. scandisce il listino generale fornitori COGGENMF;
  3. per ogni riga valida assegna un numero progressivo crescente (w-nume) e scrive un record COGRACLF con quel numero, il fornitore e il codice merce fornitore.

E' interattivo: mostra la finestra di avviso "Il programma distruggera' tutti i dati esistenti", attende conferma con F3 (ESC per uscire) e aggiorna a video i contatori (merci fornitore lette, raccordi scritti).

File e tabelle principali

File/Tabella Copybook Uso
COGRACLF cograclf.cpy (ral-rec) Raccordo listino generale fornitore / numero: svuotato e ricostruito
COGGENMF coggenmf.cpy (gmf-rec) Listino generale fornitori: sorgente scandita
COGTABEL cogtabel.cpy (euta-rec, tipo 70) Configurazione ricerche RICE/DEFINE: flag di abilitazione (euta-c008-lidm, euta-c008-licmf)
FEURTAB cogfiles.cpy File tabelle generale (aziende, controlli standard)

Struttura del record raccordo (COGRACLF)

Il record ral-rec ha due chiavi:

  • ral-chia (chiave primaria) = ral-nume (9(08) comp-4): numero progressivo assegnato dal programma;
  • ral-chia1 (chiave secondaria) = ral-for (fornitore, 9(05)) + ral-cmf (codice merce fornitore, X(22)): consente il lookup inverso da fornitore + codice al numero.

Flusso principale

  1. main / a000 - init (ctr-abil, open-files, rd-azi), visualizza la finestra di avviso.
  2. Lettura configurazione: rd-tab legge COGTABEL tipo 70, argomento RICE, chiave DEFINE. Se assente -> "Configurazione Assente"; se entrambi euta-c008-lidm = 'N' e euta-c008-licmf = 'N' -> "Manca Abilitazione" e uscita (il raccordo serve solo se e' attiva almeno una delle due ricerche sul listino generale).
  3. a010 - acc-conf: attende la conferma. ESC esce, solo F3 prosegue.
  4. a020 - azzeramento raccordo: open output cograclf, close, open i-o cograclf.
  5. a1-agg-mer - scansione sequenziale di COGGENMF da low-value (start + read next):
  6. incrementa e mostra il contatore letti (ctr-m-l);
  7. salta i record senza fornitore (gmf-cf = zero) o senza codice merce fornitore (gmf-cmf = spaces);
  8. initialize ral-rec, incrementa w-nume e lo assegna a ral-nume;
  9. copia gmf-cmf -> ral-cmf e gmf-cf -> ral-for;
  10. write ral-rec e aggiorna il contatore raccordi scritti (ctr-m-s).
  11. fine - chiude i file ed esce (z-99-exit-program).

Sottoprogrammi chiamati

Nessuna CALL a subroutine applicative. COGR10 usa solo le utility standard di messaggistica (box-msg / winmsg.cpy) e gestione stato/errore (stato.cpy, grave.cpy).

Configurazioni (COGTABEL tipo 70)

Argomento Chiave Campo Uso
RICE DEFINE euta-c008-lidm Abilitazione ricerca listino generale per descrizione (S/N)
RICE DEFINE euta-c008-licmf Abilitazione ricerca listino generale per codice merce fornitore (S/N)

Il programma parte se almeno uno dei due flag e' abilitato.

Note

  • Il raccordo COGRACLF viene azzerato completamente ad ogni esecuzione: i numeri progressivi ral-nume vengono riassegnati da 1. Percio', dopo COGR10, gli indici COGSTLFM e COGSTLFD non sono piu' coerenti (puntano a numeri vecchi) e vanno ricostruiti con COGR11 e COGR12. E' un vincolo d'ordine importante nella catena di ricostruzione.
  • COGR10 non usa COGS34 ne' produce alcun indice per parole: e' un semplice ripopolamento uno-a-uno del raccordo (una riga di listino -> un record di raccordo con numero progressivo).
  • La descrizione dell'etichetta di menu ("Legame List.Gen.Forn./Numero") coincide con la funzione reale: creare la tabella di corrispondenza numero <-> riga di listino.
  • I paragrafi usano lo stile legacy PERFORM ... THRU e GO TO; sono qui descritti per fedelta' al sorgente, non come pattern da replicare.