COGI20 - Lavorazioni (Colture)¶
Panoramica¶
Programma interattivo a carattere (maschera testuale in finestra) per la gestione dell'anagrafica di base delle Lavorazioni del modulo Colture. Ogni Lavorazione e' individuata da un codice e da una descrizione, con un coefficiente, e ha collegate una lista di attivita' (Voci di controllo) che ne compongono la distinta. La gestione consente inserimento, modifica e cancellazione della testata (file CICBASTE) e delle righe di collegamento alle attivita' (file CICBASRI), risolvendo la descrizione di ciascuna attivita' dal file CICLAVOR.
Il sorgente e' condiviso con COGI21 (Macchine) e COGI22 (Risorse): la funzione effettiva e' selezionata dal campo interno w-tipo, che in COGI20 vale '1' (Lavorazioni).
Posizione nel menu¶
| Menu | Percorso |
|---|---|
| Magazzino | Colture > Archivi di Base > Lavorazioni |
Struttura del programma¶
File e tabelle utilizzati¶
| File/Tabella | Tipo | Descrizione |
|---|---|---|
| FEURTAB | Input | Tabella di sistema / anagrafica azienda (letta da rd-azi) |
| CICTABEL | I-O | Tabella generica del modulo Colture (aperta ma non movimentata direttamente) |
| CICLAVOR | Input | Anagrafica Voci di controllo / attivita': letta per risolvere la descrizione delle attivita' collegate |
| CICBASTE | I-O | Anagrafica di Base - testata (codice, descrizione, coefficiente); file gestito, discriminato per cic-bas-tipo |
| CICBASRI | I-O | Anagrafica di Base - righe: legami fra la testata e le attivita' collegate |
Copybook principali¶
| Copybook | Descrizione |
|---|---|
| feurtab.fd / cictabel.fd / ciclavor.fd / cicbaste.fd / cicbasri.fd | SELECT / File Description dei file |
| cogfiles.cpy | Record di FEURTAB |
| cictabel.cpy / ciclavor.cpy / cicbaste.cpy / cicbasri.cpy | Layout record dei file |
| cicbaste.k01 / cicbasri.k01 / ciclavor.k01 | Chiavi primarie dei file gestiti |
| wstato.cpy / wgrave.cpy / wopenf.cpy / wnscr.cpy | Working storage standard (stato verbi, errori gravi, apertura file, gestione video) |
| cogazien.cpy | Dati azienda |
| utili06.cpy | Interfaccia del modulo di ricerca I06 (COGI06) |
| utili08.cpy | Interfaccia del modulo di help I08 |
| sendi08.cpy | Routine di chiamata al modulo di help I08 |
| dtab.cpy | Routine di gestione tabella a video (disp-tab, disp-riga) |
| tstfun1.cpy | Routine di gestione tasti di navigazione tabella (tst-fun) |
| stato.cpy / stato1.cpy | Routine di gestione stato dei verbi di I/O |
| winmsg.cpy / grave.cpy | Gestione messaggi a video ed errori gravi |
| open1.cpy / openc.cpy | Routine di apertura file (open-files, open-files-ci) |
| mmmask.cpy | Gestione maschera in finestra (rd-msk-pop, disp-msk) |
| wcont.cpy / wcont1.cpy | Aree di linkage con il chiamante (stringhe) |
Chiamate a sottoprogrammi (CALL)¶
| Programma | Scopo |
|---|---|
| COGI06 | Ricerca/immissione guidata del codice o della descrizione della testata (chiamato in a1-acqui-tmbase, area util-i06) |
I08 (via send-i08) |
Help sul codice attivita' durante l'inserimento delle righe (file di ricerca CICLAVOR) |
Logica di elaborazione¶
1. Inizializzazione (apri)¶
Imposta il nome programma (COGI20), apre i file di sistema (open-files) e i file del modulo (open-files-ci, che tramite search-file-ci apre CICTABEL in I-O, CICLAVOR in input, CICBASTE e CICBASRI in I-O), legge i dati azienda. Imposta w-tipo = '1' (Lavorazioni), carica la maschera testuale mm-1 (15 righe da 58 colonne) come main-mask e la visualizza (rd-msk-pop).
2. Presentazione maschera (a4)¶
Visualizza la maschera con titolo "Anagrafiche di Base:" e, in base a w-tipo, l'etichetta "Lavorazioni" (evaluate su '1'/'2'/'3'). Mostra la barra ESC=Esci e inizializza tab-maschera.
3. Acquisizione codice (a6 / a1-acqui-tmbase)¶
Chiama COGI06 (call "cogi06") per l'immissione guidata del codice/descrizione della testata, passando in util-i06 il tipo record (w-tipo), le coordinate video e la dimensione dei campi. Al ritorno riporta l'esito in funzio e il codice selezionato in tm-stm. ESC esce; se l'esito e' "Y" (record scelto) prosegue in a10; se il codice e' vuoto ripete.
4. Lettura testata e righe (a10)¶
Sposta w-tipo/tm-stm in cic-bas-tipo/cic-bas-cod e legge CICBASTE (rd-cicbaste):
- se non esiste (w-verbo-invalido) imposta modalita' inserimento (sw-inserimento = "I") e salta all'accettazione descrizione (a-45);
- se esiste, mostra codice, descrizione (cic-bas-des) e coefficiente (cic-bas-coeff), quindi carica le attivita' collegate scandendo CICBASRI (y1-start-cicbasri + a1-car in loop) e riempie la tabella tm-tab con i codici attivita' (tm-att-cod).
In a-30 per ciascun codice attivita' caricato legge CICLAVOR (rd-ciclavor) e ne ricava la descrizione (tm-att-des).
5. Editing testata (a-40 / a-45 / a-47 / a-48)¶
Mostra F3=Aggiorna, F4=Cancella e visualizza la tabella (disp-tab). Accetta in sequenza la descrizione (a-45), la parte intera del coefficiente (a-47, tm-coeff-1) e la parte decimale (a-48, tm-coeff-2). In ogni punto: F2 torna al campo precedente, F4 lancia la cancellazione (b-cancella) e torna in a4, ESC esce.
6. Inserimento attivita' collegate (a-50 / a-50-tab)¶
Ciclo di immissione dei codici attivita' nella tabella (max t-size = 50 elementi, t-length = 5 righe visibili). Per ogni codice:
- F8 attiva l'help I08 (send-i08) sul file CICLAVOR;
- i tasti di scorrimento (su/giu'/pagina/inizio/fine) sono gestiti da tst-fun (tstfun1.cpy);
- alla conferma (a-50-tab) verifica l'esistenza dell'attivita' leggendo CICLAVOR; se non esiste segnala "Attivita' non esistente!!", altrimenti ne visualizza codice e descrizione e avanza alla riga successiva (con eventuale ripaginazione via disp-tab).
F3 conferma l'insieme e passa all'aggiornamento (a-90).
7. Aggiornamento (a-90 / b-aggiorna / aggio-cicbaste)¶
aggio-cicbaste scrive/riscrive la testata su CICBASTE (wr-cicbaste / rwr-cicbaste) con codice, descrizione e coefficiente. Quindi b-aggiorna cancella tutte le righe attivita' preesistenti in CICBASRI (y1-start-cicbasri + b1-del) e riscrive le nuove: per ogni tm-att-cod non nullo compone la chiave (cic-bri-tipo, cic-bri-cod, cic-bri-att) e scrive con wr-cicbasri (riscrivendo con rwr-cicbasri se gia' presente). Al termine torna in a4.
8. Cancellazione (b-cancella)¶
Dopo conferma (acc-conf, tasto F3) cancella la testata su CICBASTE (del-cicbaste) e scorre/cancella tutte le righe collegate su CICBASRI (del-cicbasri) per la coppia tipo+codice corrente.
9. Chiusura (fine / z-chiudi)¶
Chiude CICTABEL, CICLAVOR, CICBASTE e CICBASRI, chiude la finestra ed esce con exit program.
Note tecniche¶
- Sorgente condiviso a tre funzioni: COGI20, COGI21 e COGI22 hanno lo stesso codice; differiscono per
program-ide per il valore diw-tipoimpostato inapri('1'= Lavorazioni,'2'= Macchine,'3'= Risorse). Il campocic-bas-tipo/cic-bri-tipodiscrimina i record dei tre archivi (e nella tabella e' previsto anche4= Commesse,7= Centro di costo, non gestiti da questi programmi). - Testata + righe: la testata sta in CICBASTE (
cic-bas-..., coefficiente9(03)v99), le righe di collegamento alle attivita' in CICBASRI (cic-bri-att= codice attivita' collegata). Le descrizioni delle attivita' sono sempre risolte da CICLAVOR (aperto in sola lettura). - Interfaccia a carattere: maschera testuale semigrafica (
mm-1, gestita dammmask.cpy) con tabella scorrevole a video, non una griglia GUI. - Uso di PERFORM ... THRU e GO TO: il programma e' legacy e usa estesamente
GO TOePERFORM ... THRU(es.b-cancella thru ex-b-cancella,tst-fun thru ex-tst-fun), pattern sconsigliati nelle convenzioni attuali ma mantenuti per compatibilita' con il codice esistente. - Nessuna configurazione RNEWCONF viene letta.
- Dimensione sorgente: circa 602 righe (
cbl/cogi20.cbl).