COGL40 - Principi Attivi¶
Sorgente: cbl/cogl40.cbl | Tipo: Programma interattivo con griglia | Program-ID: COGL40
Menu:
- Magazzino > Uscite > Presidi Sanitari > Principi Attivi
Scopo¶
Gestione della tabella dei principi attivi (COGPRIAT). Interfaccia a griglia con dettaglio per inserimento, modifica e cancellazione. Puo' funzionare sia standalone sia richiamato come subroutine in modalita' selezione (linkage util-g40).
Interfaccia utente¶
Griglia (grid-record)¶
| Colonna | Tipo | Descrizione |
|---|---|---|
| grd-cod | ZZZZ | Codice principio attivo |
| grd-des | X(40) | Descrizione |
Tabella interna (tab-maschera)¶
| Campo | Tipo | Descrizione |
|---|---|---|
| tm-tab | occurs k-max-ele-tab | Array di righe (max 1000) |
| tm-cod | 9(04) | Codice principio attivo |
| tm-des | X(40) | Descrizione |
| tm-ele-old | Copia del record prima della modifica | |
| tm-pnt | 9(04) | Puntatore all'ultima riga caricata |
Modalita'¶
| Modalita' | Descrizione |
|---|---|
| a-modalita = "S" | Selezione: Invio restituisce il codice/descrizione al chiamante |
| a-modalita = "A" | Aggiornamento: Invio apre il dettaglio per modifica |
Tasti funzione¶
| Tasto | Funzione |
|---|---|
| Invio | Modifica riga (modalita' A) / Seleziona riga (modalita' S) |
| F3 | Conferma dettaglio / Cambia modalita' S/A |
| F8 | Aiuto |
| S-F4 | Gestione griglia (GRIDADMN) |
| Ctrl+A | Aggiungi riga |
| Ctrl+E | Elimina riga |
| ESC | Esce |
File e tabelle¶
| File/Tabella | Copybook | Uso |
|---|---|---|
| FEURTAB | cogfiles.cpy | Tabella parametri generali |
| COGPRIAT | cogl40.fd | Principi attivi (tabella gestita) |
Chiavi di accesso¶
| Tabella | Chiave | Composizione | Uso |
|---|---|---|---|
| COGPRIAT | primaria | pri-cod (4 byte) | Lettura/scrittura per codice |
| COGPRIAT | k02 (chia2) | pri-desc | Ricerca per descrizione (modalita' selezione con filtro) |
Programmi chiamati¶
| Programma | Scopo |
|---|---|
| GRIDADMN | Gestione griglia (S-F4) |
| COGE04W | Utility export (via utilagprg) |
Copybook principali¶
cogl40.select,cogl40.fd,cogl40.wrk,cogl40.prc,cogl40.decla,cogl40-01.scr-- Screenscogazien.cpy-- Dati aziendawgrid.cpy,utilgdad.cpy-- Supporto grigliautilagprg.cpy-- Utility programmautile04.cpy-- Utility exportutilg40.cpy-- Linkage per chiamata come subroutine
Logica di elaborazione¶
Caricamento dati (a10)¶
In base alla modalita':
- Standalone (w-dc-called != "S"): inizializza pri-rec, START da inizio tabella
- Richiamato (w-dc-called = "S"): usa g40-in-des per posizionarsi sulla chiave k02 (descrizione)
Ciclo RDNXT su COGPRIAT: per ogni record con pri-cod != 0, popola tm-tab. Se si supera k-max-ele-tab (1000), mostra "Tabella Piena" e interrompe.
Inserimento (a-riga-dettaglio con a-operazione = "I")¶
- Incrementa tm-pnt, posiziona il cursore sulla nuova riga
- Accept del codice (obbligatorio, non modificabile dopo) e descrizione
- Verifica conferma utente
- Tenta WR su COGPRIAT. Se il codice esiste gia' (stato '22'): errore descrizione duplicata
Modifica (a-riga-dettaglio con a-operazione = "M")¶
- Legge il record con lock (rd-cogpriat-lk)
- Accept della descrizione (codice non modificabile)
- Tenta RWR su COGPRIAT. Se il record e' stato cancellato nel frattempo: reinserisce con WR
Cancellazione (c-cancella)¶
- Conferma utente
- Legge il record con lock
- DELETE su COGPRIAT
- Compatta la tabella interna spostando le righe successive
Selezione (modalita' S)¶
Quando l'utente preme Invio: muove tm-cod e tm-des nelle variabili di output g40-out-cod e g40-out-des, poi esce.
Note¶
- Non e' possibile eliminare l'ultima riga (controllo tm-pnt = 2, dove 2 include la riga intestazione della griglia).
- Il programma rileva se viene richiamato da un'altra funzione tramite il linkage g40-called / g40-caller.
- L'operazione di inserimento che trova il codice gia' esistente viene convertita automaticamente in modifica (con avviso).
Documentazione tecnica -- 2026-05-01