COGM16 — Ristampa trasferimento di magazzino¶
| Campo | Valore |
|---|---|
| Sorgente | cbl/cogm16.cbl |
| Program-ID | cogm16 |
| Tipo | Programma interattivo GUI (maschera singola, chiama la stampa) |
| Posizione menu | Magazzino > Trasferimenti > Inserimento/gestione > Ristampa |
Scopo¶
COGM16 permette di ristampare un documento di trasferimento di magazzino gia' registrato. L'operatore identifica il trasferimento tramite la chiave documento (magazzino, anno, tipo, numero); il programma verifica l'esistenza della testata e dei relativi movimenti, e delega la stampa vera e propria al modulo esterno COGP28M1.
Il tipo bolla e' fissato a 'T' (trasferimento): tm-tipo viene inizializzato a 'T' in a4 e non e' modificabile dall'operatore.
Una logica specifica gestisce il caso del trasferimento di entrata: se il documento indicato risulta un movimento di entrata (mag-entrusc = 'E'), COGM16 risale al documento di uscita corrispondente prima di stampare (vedi Ricerca del documento di uscita).
Struttura e flusso¶
Il programma e' costruito sul modello standard delle maschere Screen Designer: una main section con paragrafo di apertura apri, la sequenza di accept dei campi, e un blocco di conferma/elaborazione.
- Apertura (
apri):z-99-init-program, controllo abilitazione (ctr-abil), lettura azienda (rd-azi), apertura file (open-files), attivazione tasti funzione (F3 conferma, F8 aiuto), lettura data di sistema (century-date), caricamento lingua (x-carica-lingua), impostazione titolo "Ristampa Trasferimenti" e costruzione controlli (z-costruisci-controlli). - Reset maschera (
a4): inizializzatab-maschera, forzatm-tipo = 'T', ricarica i controlli e attiva la conferma F3. - Accept dei campi:
a-tm-mag— Codice magazzino. Supporta l'aiuto F8 che richiama la ricerca magazzini (send-w36→WIN036); il valore selezionato viene riportato intm-mag. Validato dax-controlla-tm-mag.a-tm-anno— Anno documento. Gestito con supporto calendario/data tramiteutil-s52(z-s52-tm-anno). Validato dax-controlla-tm-anno(obbligatorio, diverso da zero).a-tm-numero— Numero documento. Validato dax-controlla-tm-numero(obbligatorio, diverso da zero).- Richiesta conferma (
a-richiesta-conferma):x-imposta-confermariesegue tutti i controlli di campo; se il complesso e' corretto la status bar segnala "Dati corretti", altrimenti "N" e si ritorna sul primo campo. - Lettura testata (
rd-cogtesbosu chiavetes-chia3): se il record non esiste viene emesso "Trasferimento non esistente!!" e si torna sul magazzino. - Verifica movimenti (
a60-read): scansione di COGMOMAG a partire dalla chiave documento; se non ci sono movimenti compatibili viene emesso "Trasferimento senza movimenti!!" (a60-err). Se il primo movimento e' di entrata (mag-entrusc = 'E') si eseguex1-src-usc. - Conferma e stampa (
a90): richiesta finale (acc-conf); alla conferma viene valorizzata la strutturautil-p28(magazzino/anno/tipo/numero) e chiamato COGP28M1 per la ristampa; al ritorno il modulo vienecancel-lato. - Chiusura (
fine/z-chiudi):z-close-files, chiusura della window,z-99-exit-program,exit program.
Ricerca del documento di uscita¶
Il paragrafo x1-src-usc gestisce il caso in cui il documento indicato sia un trasferimento di entrata. La chiave del documento di uscita corrispondente e' memorizzata negli ultimi 12 caratteri della descrizione della testata (tes-descr1, ridefinita da w-note: filler 38 + wn-key 12). Questa chiave viene spostata in tes-chia3 e riletta con rd-cogtesbo. Se il documento di uscita non e' piu' presente (stato not = '00') viene emesso "Trasferimento di entrata cancellato!!" con la chiave, e si ritorna al reset maschera (a4).
Nota sul flusso¶
La scansione COGMOMAG in a60-read usa read cogmomag next con perform cstato thru ex-cstato e alcuni go to di rottura chiave: e' codice storico (conversione GUI 2008) e non segue il pattern rdnxt/PERFORM UNTIL previsto dalle convenzioni attuali del progetto.
File e tabelle principali¶
| Archivio | Record | Chiave usata | Accesso | Scopo |
|---|---|---|---|---|
| COGTESBO | tes-rec |
tes-chia3 = tes-mag + tes-anno + tes-tipob + tes-bolla3 |
Lettura | Testata del documento di trasferimento |
| COGMOMAG | record mag-... |
mag-chiap = mag-mag1 + mag-anno + mag-tipob1 + mag-bolla1 |
Start/Read next | Movimenti di magazzino del documento; il flag mag-entrusc distingue entrata ('E') / uscita |
| COGMAGAZ | magz-rec |
magz-tipo = "M" + magz-cod |
Lettura | Anagrafica magazzini (validazione del codice magazzino) |
| FEURTAB | fil-chia1 (via cogfiles.cpy) |
fil-chia1 |
Lettura | Tabella nomi file Eurosystem |
I nomi dei campi chiave usati nel sorgente sono verificati nelle rispettive copybook: cogtesbo.cpy (tes-chia3, tes-mag, tes-anno, tes-tipob, tes-bolla3, tes-descr1), cogmomag.cpy (mag-chiap, mag-mag1, mag-anno, mag-tipob1, mag-bolla1, mag-entrusc), cogmagaz.cpy (magz-rec, magz-tipo, magz-cod).
Le strutture di lavoro tab-maschera (tm-mag, tm-anno, tm-tipo, tm-numero) e util-p28 (p28-mag, p28-ann, p28-tip, p28-num) sono dichiarate localmente nel sorgente.
Copybook principali¶
Screen Designer (generate)¶
| Copybook | Contenuto |
|---|---|
cogm16.select |
SELECT dei file (include cogmagaz.fd, cogtesbo.fd, cogmomag.fd) |
cogm16.fd |
FD dei file (COGMAGAZ, COGTESBO, COGMOMAG) |
cogm16.wrk |
Working storage della maschera |
cogm16.decla |
Declaratives |
cogm16-01.scr |
Maschera principale |
cogm16.prc |
Paragrafi generati (read routine rd-cogtesbo/rd-cogmagaz, controlli, gestione lingua e calendario) |
Strutture dati e utility¶
| Copybook | Contenuto |
|---|---|
feurtab.fd |
SELECT di FEURTAB |
cogfiles.cpy |
FD/record di FEURTAB |
cogazien.cpy |
Dati azienda |
utilw36.cpy |
Struttura util-w36 per la ricerca magazzini (WIN036) |
utils52.cpy |
Struttura util-s52 per calendario/data (COGS52W) |
sendw36.cpy |
Paragrafo send-w36 (chiamata a WIN036) |
wstato.cpy / wgrave.cpy / wopenf.cpy / wnscr.cpy |
Working storage comuni (stato file, gestione errori gravi, apertura, schermo) |
wcont.cpy / wcont1.cpy |
Area di linkage stringhe (parametri comuni di menu) |
grave.cpy / mmmask.cpy / opengen.cpy / stato.cpy / stato1.cpy / winmsg.cpy |
Copybook standard di fine procedure division |
Sottoprogrammi chiamati (CALL)¶
| Programma | Chiamato da | Scopo |
|---|---|---|
| COGP28M1 | a90 (main) |
Stampa/ristampa del documento di trasferimento (riceve stringhe e util-p28); cancel-lato al ritorno |
| WIN036 | send-w36 (sendw36.cpy) |
Finestra di ricerca/aiuto magazzini (aiuto F8 sul campo magazzino) |
| COGS52W | cogm16.prc |
Gestione data/calendario del campo anno (util-s52) |
| READLNG | cogm16.prc |
Caricamento etichette multilingua della maschera |
Nota: COGP28M1 e' un modulo esterno compilato (variante della famiglia di stampa COGP28); il sorgente non e' presente in
cbl/comecogp28m1.cbl. La chiamata e la struttura parametriutil-p28sono verificate nel sorgente di COGM16.
Note¶
- Il tipo bolla e' vincolato a
'T'(trasferimento) e non e' esposto all'operatore. - Il magazzino inserito e' validato contro COGMAGAZ (
magz-tipo = "M"); se inesistente viene bloccato con "Magazzino inesistente". - Anno e numero sono campi obbligatori (controllo
= zero). - La gestione mouse (
x-test-mouse) instrada il focus sui campi in base aevent-control-id(k-id-tm-mag,k-id-tm-anno,k-id-tm-numero). - Programma di conversione GUI storica (2008): contiene ancora costrutti
go toeperform ... thrunon piu' conformi alle convenzioni attuali del progetto; da trattare con cautela in caso di manutenzione.