COGI54 - Legame Servizi vari a Merci¶
Sorgente: cbl/cogi54.cbl | Program-ID: COGI54 | Tipo: Programma interattivo (editor tabella con griglia, modalita' aggiornamento/selezione)
Menu: Magazzino > Archivi & Tabelle > Varie > Legame Servizi vari a Merci
Scopo¶
Gestisce l'associazione tra un codice "servizio vario" (prestazione) e una merce. I legami sono mantenuti su COGTABEL con tipo FM (k-euta-tipo): ogni riga collega una prestazione (euta-prest) a una merce (euta-merce) e ha un codice progressivo (euta-codr) generato automaticamente in fase di salvataggio.
Pattern standard "editor tabella" con griglia editabile e duplice modalita' aggiornamento/selezione. La modalita' selezione (chiamata esterna via w-dc-called = "S") e' predisposta ma attualmente disattivata nel codice (il ramo cogi54-called/cogi54-caller e' commentato in apri).
Struttura della maschera¶
Screen definita in cogi54-01.scr. Maschera a griglia unica (e-tm-tab), array tm-righe (max k-max-ele-tab = 500).
Colonne della griglia (tab-maschera / tm-grid-dati-ele):
tm-prest: codice prestazione (servizio vario)tm-merce-cm: codice merce collegata (gestito via COGS68W, aiuto merce)tm-cod: codice progressivo del legame (euta-codr)
Tasti funzione:
- F3: in modalita' aggiornamento salva la tabella e torna in selezione; in modalita' selezione passa in aggiornamento (o conferma la selezione se chiamato esternamente).
- Invio: in modalita' selezione conferma l'elemento corrente e ritorna.
- Ctrl+A / Ctrl+E: aggiungi / elimina (marca) una riga (solo in modalita' aggiornamento).
- S-F4: GRIDADMN per personalizzazione griglia.
- F8 aiuto, F9 ricerca avanzata.
La marcatura di eliminazione imposta tm-stato (i) = "D" (riga colorata con w-color-cancellato); la cancellazione effettiva avviene al salvataggio.
Logica di elaborazione¶
Apertura (apri): init programma, apertura file, lettura azienda, impostazione tasti funzione. Titolo maschera forzato a "Legame Servizi vari a Merci". Modalita' impostata ad "A" (aggiornamento) salvo il ramo selezione (commentato).
Caricamento griglia (a4 / a10-loop): start su COGTABEL con euta-tipo = "FM" (st-cogtabel-notmin), scan in sequenza fino a rottura del tipo o a k-max-ele-tab. Per ogni record carica euta-prest, euta-merce, euta-codr nella griglia.
Gestione griglia (a-grid / a-accept-grid): accept sulla griglia con gestione eventi mouse (x-test-mouse), doppio click/invio, S-F4 (GRIDADMN), F3, Invio, Ctrl+A, Ctrl+E.
Salvataggio (a1-aggiorna / b-aggiorna):
- Valida tutte le righe (
x-controlla-tm-tab-tutto). - Cancella e riscrive tutto: scandisce COGTABEL tipo
FMe cancella ogni record esistente (del-cogtabel), poi reinserisce le righe correnti della griglia. - Per ogni riga non marcata "D" (
b1-inserisci): scrive un nuovo record coneuta-codr = w-cod; in caso di chiave duplicata (w-verbo-invalido) incrementaw-code riprova finche' la write ha successo. Il codice progressivo e' quindi assegnato in cascata e non conservato dall'utente.
Controllo cancellazione (c1-ctrl-canc): verifica solo che la griglia non sia vuota; non ci sono dipendenze da altri archivi.
File utilizzati¶
| File/Tabella | Tipo | Modalita' | Descrizione |
|---|---|---|---|
| FEURTAB | ISAM | Input | Parametri generali azienda |
COGTABEL (euta-rec) |
ISAM | I-O | Tabella generica; tipo FM = legame prestazione/merce (record principale) |
La chiave usata e' euta-tipo + euta-codr (chiave primaria); la scansione di caricamento e cancellazione avviene per tipo.
Programmi chiamati¶
| Programma | Utilizzo |
|---|---|
GRIDADMN |
Preparazione e personalizzazione griglia (S-F4) |
COGS68W (via utils68/z-s68-tm-merce) |
Aiuto e selezione codice merce sulla cella merce |
Le routine di lettura/scrittura COGTABEL (st-cogtabel-notmin, rdnxt-cogtabel, wr-cogtabel, del-cogtabel) sono generate nel copybook cogi54.prc.
Copybook principali¶
| Copybook | Contenuto |
|---|---|
cogi54.select, cogi54.fd, cogi54.wrk, cogi54-01.scr, cogi54.prc, cogi54.decla |
Screen Designer: select, FD, working, screen, procedure, declaratives |
cogfiles.cpy |
Layout FEURTAB |
wgrave, wnscr, wopenf, wstato, cogazien |
Working storage standard + dati azienda |
wgrid.cpy, utilgdad.cpy |
Working griglia + linkage GRIDADMN |
utile04.cpy |
Linkage COGE04 (utility generica) |
utils68.cpy |
Linkage COGS68W (aiuto merce) |
wcont.cpy, wcont1.cpy |
Linkage standard |
grave, mmmask, opengen, stato, stato1, winmsg |
Copybook standard di fine procedure |
Note tecniche¶
- Il tipo COGTABEL e' definito da
k-euta-tipo = "FM". - Il salvataggio adotta la strategia "cancella tutto e riscrivi": tutti i record tipo
FMvengono eliminati e ricreati dalla griglia. I codici progressivi (euta-codr) non sono stabili tra due salvataggi. - La write in
b1-inseriscigira in loopperform until w-verbo-okincrementandow-codsu chiave duplicata: garantisce un codice libero ma non preserva l'eventuale codice originale. - Massimo righe griglia:
k-max-ele-tab = 500. - Il colore delle righe cancellate e'
w-color-cancellato(valore"2465"). - Le routine
c1-ctrl-canc,b-aggiorna,b1-inseriscisono richiamate conPERFORM ... THRUverso i paragrafiex-*(pattern legacy presente nel sorgente originale).