COGM06 - Importazione Distinta Base¶
Sorgente: cbl/cogm06.cbl | Tipo: Programma batch interattivo | Program-ID: COGM06
Menu:
- Magazzino > Archivi & Tabelle > Supp. Magnetici > Importazione Dist.Base
Scopo¶
Caricamento della distinta base di un prodotto da file di testo sequenziale. Cancella la distinta base precedente della merce selezionata e la ricrea con i componenti letti dal file. Al termine, contrassegna il prodotto come "padre" con distinta di tipo "P".
Interfaccia utente¶
Maschera (tab-maschera)¶
| Campo | Tipo | Descrizione |
|---|---|---|
| tm-da-merce | X(09) | Codice prodotto (gruppo 2 + sottogruppo 2 + codice 5) |
| tm-da-merce-des | X(36) | Descrizione del prodotto |
| tm-file | X(132) | Percorso del file di input |
| tm-file-local | X(132) | Percorso locale del file (per thin client) |
| tm-file-remote | X(132) | Percorso remoto (copia su ext-tmp-dir) |
| tm-c-l | 9(06) | Contatore righe lette |
| tm-c-v | 9(06) | Contatore righe valide |
| tm-c-n | 9(06) | Contatore righe non valide |
| tm-note | X(160) | Note |
Ordine di accept dei campi¶
Prodotto > File input > Conferma
Tasti funzione¶
| Tasto | Funzione |
|---|---|
| F3 | Conferma e avvia elaborazione |
| F5 | Apri finestra selezione file (C$OPENSAVEBOX) |
| F8 | Aiuto |
| F9 | Ricerca avanzata |
| ESC | Esce |
| F2 | Torna al campo precedente |
File e tabelle¶
| File/Tabella | Copybook | Uso |
|---|---|---|
| FEURTAB | cogfiles.cpy | Tabella parametri generali |
| COGMERCI | cogm06.fd | Anagrafica merci (verifica esistenza componenti) |
| COGDBASE | cogm06.fd | Distinta base (tabella aggiornata) |
| COGTRANS | -- | File indicizzato temporaneo (deduplicazione componenti) |
| COGSEQUE | -- | File sequenziale di input (line sequential) |
Struttura file di input (COGSEQUE)¶
| Campo | Tipo | Descrizione |
|---|---|---|
| seq-merce | X(09) | Codice merce componente |
| seq-qta | 9(05)V99 | Quantita' |
Struttura file temporaneo (COGTRANS)¶
| Campo | Tipo | Descrizione |
|---|---|---|
| trs-merce | X(09) | Codice merce (chiave univoca) |
Programmi chiamati¶
| Programma | Scopo |
|---|---|
| C$OPENSAVEBOX | Finestra selezione file (solo su Windows) |
| C$COPY | Copia file da client a server (thin client) |
| COGS68 | Ricerca merce |
Copybook principali¶
cogm06.select,cogm06.fd,cogm06.wrk,cogm06.prc,cogm06.decla,cogm06-01.scr-- Screenscogazien.cpy-- Dati azienda (az-sys per rilevare Windows)utils68.cpy-- Ricerca merce (COGS68)utildlg.cpy-- Utility dialogoopensave.def-- Definizioni C$OPENSAVEBOX
Logica di elaborazione¶
Fase 1: Cancellazione distinta precedente (b-canc-dba)¶
- Posizionamento su COGDBASE con chiave = merce selezionata (dba-merce)
- Ciclo RDNXT: per ogni record con la stessa merce padre, esegue DELETE
Fase 2: Inserimento nuova distinta (c-ins-dba)¶
- Se thin client: copia il file dal client al server via C$COPY in
ext-tmp-dir/import.txt - Apre COGTRANS (file temporaneo indicizzato per deduplicazione)
- Apre COGSEQUE (file di input sequenziale)
- Per ogni riga letta:
- Verifica esistenza del componente in COGMERCI
- Se non trovato: incrementa tm-c-n (non valide), skip
- Cerca il componente in COGTRANS: se gia' presente (duplicato), skip
- Scrive il componente in COGTRANS (deduplicazione)
- Se quantita' = 0, la forza a 1
- Scrive il record in COGDBASE con: merce padre, progressivo, merce componente, quantita', data
- Incrementa tm-c-v (valide)
- Al termine, se almeno un componente inserito:
- Legge COGMERCI con lock per la merce padre
- Imposta mer-padre = 'P' e mer-tipo-distinta = 'P'
- REWRITE
Gestione thin client¶
Se az-sys = "W" (Windows), il programma verifica la disponibilita' di C$OPENSAVEBOX. Se il file viene selezionato da un client remoto, viene prima copiato nella directory temporanea del server tramite C$COPY.
Note¶
- Il file temporaneo COGTRANS e' specifico per operatore (nome include k-program-id e wo-oper) e viene cancellato alla chiusura (DELETE FILE).
- Il programma usa
PERFORM ... THRUper le sezioni di elaborazione (b-canc-dba thru ex-b, c-ins-dba thru ex-c). - La visualizzazione note (vis-note) e' richiamata all'inizio ma non ha un campo di input dedicato nella maschera di conferma.
Documentazione tecnica -- 2026-05-01