COGV06 - Launcher anagrafica merci¶
Sorgente: cbl/cogv06.cbl | Program-ID: cogv06 | Tipo: Launcher/dispatcher
Menu: Magazzino > Archivi & Tabelle > Merci
Scopo¶
COGV06 non contiene logica applicativa propria: e' un programma di lancio ("Programma di lancio dei programmi personalizzati", come dichiarato nell'intestazione del sorgente) che seleziona ed esegue la versione corretta della gestione anagrafica merci in base alla personalizzazione dell'azienda.
Il criterio di selezione e' il campo az-personal (dalla struttura az-rec, copybook cogazien.cpy), valorizzato copiando azien-area all'avvio:
- Se
az-personalnon e' vuoto, viene composto dinamicamente il nome del programma personalizzatoCOGV06<az-personal>.cob(variabilename-call) e lo si esegue concall name-call using stringhe. - Se
az-personale' vuoto, oppure lacalldel programma personalizzato va inon overflow(programma personalizzato non presente/non caricabile), si esegue la versione standardCOGV06NO.COB. - Se anche la
calldiCOGV06NO.COBva in overflow, si recupera la descrizione dell'errore conC$CALLERRe la si mostra a video tramitebox-msg(nessun programma eseguibile).
Al termine il programma chiamato viene rilasciato con cancel name-call.
La versione standard delegata e' COGV06NO (program-id cogv06no, "Gestione anagrafica merci - Versione STANDARD"), che contiene la logica effettiva di gestione dell'anagrafica merci/articoli.
Nota: non e' presente in questo launcher alcun meccanismo di configurazione RNEWCONF/COGU30. La scelta della variante e' guidata esclusivamente dal codice di personalizzazione azienda
az-personal.
File e tabelle¶
| File/Tabella | Tipo | Modalita' | Descrizione |
|---|---|---|---|
| FEURTAB | Indexed | Input | Tabella generica Eurosystem (SELECT via cogv06.select, FD via feurtab.fd + cogfiles.cpy). Aperta/gestita dalle procedure generate da Screens |
Non ci sono altre tabelle applicative aperte direttamente dal launcher: l'accesso ai dati dell'anagrafica merci avviene nel programma delegato.
Copybook utilizzate¶
| Copybook | Descrizione |
|---|---|
feurtab.fd |
SELECT del file FEURTAB (Screen Designer) |
cogv06.select |
SELECT dei file gestiti da Screens (in cbl/screens/) |
cogfiles.cpy |
FD di FEURTAB |
cogv06.fd |
FD dei file gestiti da Screens (in cbl/screens/) |
cogv06.wrk |
Working storage della maschera (in cbl/screens/) |
wstato.cpy |
Working storage stato file |
wgrave.cpy |
Working storage errori gravi |
wopenf.cpy |
Working storage apertura file |
wnscr.cpy |
Working storage screen |
cogazien.cpy |
Dati azienda (fornisce az-rec / az-personal) |
wcont.cpy |
Linkage: struttura stringhe (contesto chiamante) |
wcont1.cpy |
Linkage: contesto aggiuntivo |
stato.cpy |
Gestione stato |
stato1.cpy |
Gestione stato file |
winmsg.cpy |
Gestione messaggi/box (box-msg) |
grave.cpy |
Gestione errori gravi |
opengen.cpy |
Apertura file generica |
mmsubw.cpy |
Init/exit sottoprogramma (z-99-init-program, z-99-exit-subroutine) |
cogv06.prc |
Procedure division della maschera (in cbl/screens/) |
Logica di elaborazione¶
z-99-init-program(dammsubw.cpy): inizializzazione, apertura file gestiti da Screens.move azien-area to az-rec: carica i dati azienda, da cuiaz-personal.- Se
az-personal = spaces-> salta alla versione standard (st-80-standard). - Altrimenti compone
name-call = 'COGV06' + az-personal + '.cob'(string ... delimited by size) ecall name-call using stringhe; suon overflow-> versione standard. st-80-standard:call 'COGV06NO.COB' using stringhe; suon overflowrecupera l'errore conC$CALLERR(inw-ce-status/w-ce-descr) e mostra il box di errore conbox-msg.st-90-ok:cancel name-call(rilascio del programma chiamato).z-99-exit-subroutineeexit program.
Chiamate a sottoprogrammi¶
| Programma | Scopo |
|---|---|
COGV06<az-personal>.cob |
Variante personalizzata della gestione anagrafica merci (nome composto a runtime; eseguita solo se az-personal valorizzato) |
| COGV06NO | Versione standard della gestione anagrafica merci (fallback) |
C$CALLERR |
Routine di sistema AcuCOBOL: recupera stato e descrizione dell'ultimo errore di call (usata solo se anche COGV06NO.COB fallisce) |