DFNM02 -- Subroutine accesso DB Frontiera Modula¶
Sorgente: cbl/dfnm02.cbl | Tipo: Subroutine (CALL) | Program-ID: DFNM02
Scopo¶
DFNM02 e' la subroutine di servizio per l'accesso al database di frontiera Modula (PostgreSQL esterno). Espone diverse operazioni sui dati Modula (tabelle exp_* e imp_*) a beneficio dei programmi gestionali che integrano i magazzini automatizzati.
Interfaccia: linkage util-dfnm02 (copybook utildfnm02.cpy).
Interfaccia (util-dfnm02)¶
Input¶
| Campo | Tipo | Uso |
|---|---|---|
dfnm02-caller |
x(08) | Program-ID del chiamante |
dfnm02-called |
x(08) | Sempre "DFNM02" |
dfnm02-i-operazione |
x(25) | Operazione richiesta (vedi sotto) |
dfnm02-i-mag |
x(01) | Magazzino Modula |
dfnm02-i-data |
9(08) | Data riferimento (giacenze, FEFO) |
dfnm02-i-lotti-aperti |
x(01) | Filtro lotti aperti (S/N) |
dfnm02-i-merce |
x(09) | Codice merce (gru+sot+cod) |
Output (operazione "lotti-disp-prelievo")¶
| Campo | Tipo | Uso |
|---|---|---|
dfnm02-o-ld-count |
9(04) | Numero lotti restituiti |
dfnm02-o-ld-prog (n) |
9(06) | Progressivo lotto interno Area (mlt-prog) |
dfnm02-o-ld-lotto (n) |
x(15) | Codice lotto esterno |
dfnm02-o-ld-qta (n) |
s9(07)v999 | Quantita' disponibile sul lotto |
dfnm02-o-ld-scad (n) |
9(08) | Data scadenza |
Vettore con OCCURS 200 (k-max-ld = 200).
Operazioni¶
| Operazione | Descrizione |
|---|---|
agg-qta-scomparto |
Aggiorna quantita' per scomparto su COGSLOSCO leggendo exp_ubicazioni |
lotti-disp-prelievo |
(nuova 2026-06-04) Restituisce i lotti realmente disponibili al prelievo a Modula per la merce, ordinati per scadenza (FEFO) |
Operazione lotti-disp-prelievo (TASK-2318)¶
Per la merce indicata, scorre exp_ubicazioni (tabella Modula con i lotti presenti per scomparto) filtrando solo i record con ubi_tipo_scomparto in {FITT, MODUL}. Aggrega le quantita' per ubi_lotto (rottura su ubi_lotto durante la scan ordinata per lotto).
Per ciascun lotto aggregato:
- Cerca su
COGRACMCchiave 2 il codice merce avanzato corrispondente al codice merce di input. - Cerca su
COGMERLT(chiave 2: lotto + merce + magazzino) il record Area corrispondente al lotto Modula, recuperandomlt-prog(progressivo interno) emlt-data-scad. - Se il lotto Modula non e' mappato in Area, segnala il problema su debug (
gesdebug-write) e salta. - Accoda il lotto al vettore
dfnm02-o-ld-*.
Al termine, applica un bubble-sort sul vettore per dfnm02-o-ld-scad crescente (FEFO -- First Expired First Out).
Limite massimo: 200 lotti per chiamata.
File e tabelle¶
| File | Tipo | Uso |
|---|---|---|
| COGRACMC | ISAM (chiave 2) | Codice merce avanzato |
| COGMERLT | ISAM (chiave 2) | Mappatura lotto Area ↔ lotto Modula |
exp_ubicazioni |
PostgreSQL (DB Frontiera Modula) | Giacenze fisiche per scomparto/lotto |
imp_* / exp_* |
PostgreSQL | Altre tabelle frontiera |
Chiamanti noti¶
| Programma | Operazione | Contesto |
|---|---|---|
| COGDB6 | agg-qta-scomparto |
Aggiornamento qta scomparto su menu o called |
| COGF64 | lotti-disp-prelievo |
Creazione BDP con lotti Modula (TASK-2318, flusso disponibilita' Modula) |
Storico modifiche¶
| Build | Descrizione |
|---|---|
| 2026/0604 | Aggiunta operazione lotti-disp-prelievo: estrae lotti effettivamente disponibili a Modula (giacenza fisica > 0), mappa al lotto Area e ordina per scadenza (FEFO). Output su nuovo vettore dfnm02-o-ld-* (max 200). Nuove variabili k-max-ld, c1-i/j/k, w-mlt-scad, w-ld-swap. |