COGV50 - Bolle Accompagnatorie (Ins. Immediate)¶
Sorgente: cbl/cogv50.cbl | Program-ID: cogv50 | Tipo: Launcher/dispatcher
Menu: Magazzino > Uscite > Bolle Accompagnatorie > Ins. Immediate
Scopo¶
COGV50 non contiene logica applicativa propria: e' un programma di lancio ("Inserimento ddt uscita - programma di lancio", come dichiarato nell'intestazione del sorgente) che seleziona ed esegue la versione corretta della gestione di inserimento delle bolle accompagnatorie (DDT) di uscita/vendita.
A differenza di COGV06, che sceglie la variante in base al codice di personalizzazione azienda, COGV50 decide quale programma eseguire in base a una configurazione RNEWCONF:
- La chiave
versione-programmi-ddt(gruppouscite, pacchetto gestionale"C") viene letta all'avvio tramiteRNEWCONFe il valore restituito e' salvato intm-cfg-versione. - Se
tm-cfg-versione = "GRAFICA"viene eseguita la versione grafica COGV50W (w-nome-programma = "COGV50W"), impostando anche il carattere"I"(inserimento) nella terza posizione diwo-parametroper segnalare la modalita' di ingresso (inserimento vs variazione). - In tutti gli altri casi viene eseguita la versione a carattere COGV50C (
w-nome-programma = "COGV50C"), fallback standard.
Il programma puo' essere invocato in due modalita', distinte dal numero di argomenti ricevuti (C$NARG -> w-argomenti):
- 1 argomento (
stringhe): avvio da menu; la struttura di interfaccia U30 (link-w-u30) viene inizializzata. - 2 argomenti (
stringhe+link-u30): invocazione dall'orchestratore di generazione documenti COGU30; i dati U30 in ingresso vengono copiati in una copia localelink-w-u30, elaborati dal programma delegato e ricopiati in uscita sulink-u30al termine.
La struttura U30 viene passata al programma delegato solo quando l'invocazione proviene da COGU30, cioe' quando u30b-caller = "COGU30" e u30b-called = "COGV50" (campi in utilu30b.cpy, ridefinizione di wo-resto-area); altrimenti si chiama il delegato con la sola stringhe.
Al termine il programma chiamato viene rilasciato con cancel w-nome-programma.
Nota: in questo launcher non e' presente alcuna chiamata a
C$CALLERR: non e' gestito esplicitamente il caso di delegato mancante/non caricabile con recupero e visualizzazione dell'errore (lecallnon hanno clausolaon overflow/on exception).
File e tabelle¶
| File/Tabella | Tipo | Modalita' | Descrizione |
|---|---|---|---|
| COGTABEL | Indexed | Input | Tabella configurazioni/aziende letta indirettamente da RNEWCONF (lettura chiave versione-programmi-ddt) e dalla routine rd-azi (dati azienda) |
Il launcher non apre direttamente tabelle applicative: l'accesso ai dati (documenti, righe DDT, anagrafiche) avviene nel programma delegato COGV50W / COGV50C.
Copybook utilizzate¶
| Copybook | Descrizione |
|---|---|
wgrave.cpy |
Working storage errori gravi |
wnscr.cpy |
Working storage screen |
wopenf.cpy |
Working storage apertura file |
wstato.cpy |
Working storage stato file |
cogazien.cpy |
Dati azienda (usati da rd-azi) |
utilncnf.cpy |
Struttura util-ncnf / ncnf-tab per la chiamata a RNEWCONF |
linku30.cpy |
Struttura interfaccia U30; inclusa due volte: in working-storage come link-w-u30 (via replacing) e in linkage come link-u30 |
wcont.cpy |
Linkage: struttura stringhe (contesto chiamante, wo-parametro, wo-resto-area) |
utilu30b.cpy |
Linkage: ridefinizione di wo-resto-area con u30b-caller / u30b-called |
wcont1.cpy |
Linkage: contesto aggiuntivo (area azienda) |
stato.cpy |
Gestione stato |
stato1.cpy |
Gestione stato file |
winmsg.cpy |
Gestione messaggi/box |
util1.cpy |
Routine generali: rd-azi, z-99-init-program, z-99-exit-program, gestione maschere e conferme (include a sua volta rdazi.cpy, prc-m-gen.cpy, stringfun.cpy, filesystem.cpy) |
Logica di elaborazione¶
move k-program-id ("COGV50") to prog-err w-nome-hlp: identificazione programma.call "C$NARG" using w-argomentieevaluate: se 1 argomento inizializzalink-w-u30, se 2 argomenti copialink-u30inlink-w-u30.perform z-99-init-program(dautil1.cpy): inizializzazione ambiente/maschere.perform rd-azi(dautil1.cpy): caricamento dati azienda.- Composizione della richiesta
util-ncnf: pacchetto"C", gruppo"uscite", chiave"versione-programmi-ddt",ncnf-pnt = 01. call "RNEWCONF" using stringhe util-ncnf ncnf-tab+cancel "RNEWCONF"; il valore letto (ncnf-valore (01)) viene spostato intm-cfg-versione.ela-00: setm-cfg-versione = "GRAFICA"impostaw-nome-programma = "COGV50W"ewo-parametro (3:1) = "I"; altrimentiw-nome-programma = "COGV50C".- Se
u30b-caller = "COGU30"eu30b-called = "COGV50"->call w-nome-programma using stringhe link-w-u30; altrimenticall w-nome-programma using stringhe. cancel w-nome-programma(rilascio del programma delegato), quindigo to fine.fine/z-chiudi: se 2 argomenti ricopialink-w-u30inlink-u30(ritorno dati a COGU30),perform z-99-exit-program,exit program.
Chiamate a sottoprogrammi¶
| Programma | Scopo |
|---|---|
| COGV50W | Versione grafica dell'inserimento/gestione bolle di vendita (eseguita se configurazione versione-programmi-ddt = "GRAFICA") |
| COGV50C | Versione a carattere dell'inserimento bolle di vendita (fallback standard) |
RNEWCONF |
Lettura della configurazione versione-programmi-ddt (gruppo uscite) che determina quale variante eseguire |