Vai al contenuto

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-id e per il valore di w-tipo impostato in apri ('1' = Lavorazioni, '2' = Macchine, '3' = Risorse). Il campo cic-bas-tipo / cic-bri-tipo discrimina i record dei tre archivi (e nella tabella e' previsto anche 4 = Commesse, 7 = Centro di costo, non gestiti da questi programmi).
  • Testata + righe: la testata sta in CICBASTE (cic-bas-..., coefficiente 9(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 da mmmask.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 TO e PERFORM ... 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).