Vai al contenuto

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 (gruppo uscite, pacchetto gestionale "C") viene letta all'avvio tramite RNEWCONF e il valore restituito e' salvato in tm-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 di wo-parametro per 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 locale link-w-u30, elaborati dal programma delegato e ricopiati in uscita su link-u30 al 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 (le call non hanno clausola on 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

  1. move k-program-id ("COGV50") to prog-err w-nome-hlp: identificazione programma.
  2. call "C$NARG" using w-argomenti e evaluate: se 1 argomento inizializza link-w-u30, se 2 argomenti copia link-u30 in link-w-u30.
  3. perform z-99-init-program (da util1.cpy): inizializzazione ambiente/maschere.
  4. perform rd-azi (da util1.cpy): caricamento dati azienda.
  5. Composizione della richiesta util-ncnf: pacchetto "C", gruppo "uscite", chiave "versione-programmi-ddt", ncnf-pnt = 01.
  6. call "RNEWCONF" using stringhe util-ncnf ncnf-tab + cancel "RNEWCONF"; il valore letto (ncnf-valore (01)) viene spostato in tm-cfg-versione.
  7. ela-00: se tm-cfg-versione = "GRAFICA" imposta w-nome-programma = "COGV50W" e wo-parametro (3:1) = "I"; altrimenti w-nome-programma = "COGV50C".
  8. Se u30b-caller = "COGU30" e u30b-called = "COGV50" -> call w-nome-programma using stringhe link-w-u30; altrimenti call w-nome-programma using stringhe.
  9. cancel w-nome-programma (rilascio del programma delegato), quindi go to fine.
  10. fine / z-chiudi: se 2 argomenti ricopia link-w-u30 in link-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