COGO25 — Ristampa/stampa ordini fornitori (dispatcher)¶
| Campo | Valore |
|---|---|
| Sorgente | cbl/cogo25.cbl |
| Program-ID | cogo25 |
| Tipo | Programma GUI (subroutine, chiamata using stringhe) |
| Posizione menu | Ordini > Fornitori > Stampe > Ristampa |
| Ordini > Buoni di versamento > Stampa |
Scopo¶
COGO25 e' il programma di lancio (dispatcher) per la stampa/ristampa degli ordini fornitori. Non produce direttamente il modulo di stampa: raccoglie l'identificativo dell'ordine (anno, numero, progressivo), verifica che l'ordine esista, legge la configurazione di stampa e poi richiama il vero programma di stampa — la versione personalizzata dell'ambiente (cogo25<personal>) oppure, in assenza di personalizzazione, la versione standard cogo25no (a sua volta lanciatore delle versioni ad aghi / laser).
L'ordine trattato e' sempre di tipo fornitore (tor-tipo = k-ana-tipo-for = "F").
Modalita' di funzionamento¶
Il programma opera in due modalita', distinte dal contenuto del campo o25-id passato in linkage (redefine di user-area):
- Interattiva (
o25-iddiverso da'NODISP'): viene aperta la mascheracogo25-01.scr"Ristampa Ordini Fornitori" con i campi Anno / Numero ordine / Progressivo ordine; l'operatore inserisce i dati e conferma con F3. Sono disponibili i tasti F1 (configura stampa), F3 (conferma) e F8 (calendario). - Non visuale (
o25-id = 'NODISP', flag internofl-nodisp = k-yes): i dati dell'ordine e i parametri di forzatura stampante arrivano gia' valorizzati dal chiamante nella strutturautil-o25; la maschera non viene mostrata, si esegue subito il controllo dati e la stampa. In questo caso i valori vengono travasati intab-maschera(tm-anno,tm-numero,tm-progr) e inutil-o25-altri-dati(u-o25-prf,u-o25-forza-prf).
Il programma distingue anche se e' stato lanciato come sottoprogramma o come programma autonomo tramite w-nome (confronto = 'cogo25'), gestendo di conseguenza la chiusura (z-99-exit-subroutine vs z-99-exit-program + close window).
Struttura / flusso¶
apri: impostaprog-err/w-nome-hlp, legge la data di sistema (century-date), inizializzatab-maschera. Seo25-id = 'NODISP'travasa i parametri dal linkage. Poiz-99-init-program,ctr-abil(controllo abilitazione),open-files,rd-azi(lettura dati azienda) ex99-cfg(lettura configurazione stampa).- Ramo NODISP: esegue
x-controlla-dati; se i controlli parziali falliscono mostra il messaggio e va afine, altrimenti salta direttamente ast-70-accept. - Ramo interattivo: prepara la maschera (
x-carica-lingua, titolo "Ristampa Ordini Fornitori",rd-msk-pop,z-costruisci-controlli) e accetta in sequenza i campi: a-tm-anno(Anno ordine, obbligatorio) — con help, F1=configura, F8=calendario;a-tm-numero(Numero ordine, obbligatorio);a-tm-progr(Progressivo ordine).a-fine-dati:x-controlla-daticomplessivo; se non valido torna sua-tm-anno.st-70-accept: costruisce la chiave ordine (tor-tipo=F,tor-anno,tor-numero,tor-progr) e legge COGTESOR (rd-cogtesor). Se l'ordine non e' rintracciato: se lanciato come programma standalone esce, altrimenti mostra "ORDINE NON RINTRACCIATO" e torna sull'accept. Da COGTESOR estrae il tipo/codice anagrafica fornitore (tor-tipo1→ext-ana-tip,tor-clifor→ext-ana-cod).- Dispatch alla stampa:
- se l'ambiente e' personalizzato (
az-personaldiverso da spaces) costruisce il nomecogo25<personal>e lo richiama concall name-call using stringhe tab-maschera util-o25-altri-dati; inon overflow(programma inesistente) ricade su quello standard (st-80-standard); st-80-standard: richiamacogo25nocon gli stessi parametri; inon overflowmostra "Impossibile eseguire stampa ordine!!".st-90-ok: esegued-privacy(stampa modulo privacy viacogy27), facanceldel programma chiamato, recupera l'eventuale codice eccezione (tm-exception→funzio) e, se l'utente e' uscito con ESC/F2 e non si e' in modalita' NODISP, torna sua-tm-progr.fine/z-chiudi:z-close-filese uscita (exit program).
Configurazione di stampa (COGTABEL tipo 70)¶
Il paragrafo x99-conf (richiamato da F1 e dalla catena x99-cfg) apre la finestra di configurazione della stampa ordini:
- richiama
COGN05(call 'COGN05' using stringhe util-n05conn05-tip = "F") per gestire la configurazione dei dati di stampa ordini clienti/fornitori; x99-src-cfglegge la riga di COGTABEL coneuta-tipo = 70,euta-cfg-arg = 'PRNT',euta-cfg-key = 'ORDNFO'(viard-tab→rd-cogtabel); se il record non esiste riempieeuta-reccon'*';x99-rd-cfgvaluta il campo stampanteeuta-c005-prn: valore'L001'→tm-cfg-prn = 'B'(laser), altrimentitm-cfg-prn = 'A'(aghi).
Il layout della configurazione stampa ordini (record euta-c005, redefine di euta-descr) e' descritto in cnfgprnt.cpy: euta-c005-prn (stampante), euta-c005-page, euta-c005-dat-con, euta-c005-int, euta-c005-ind, euta-c005-faxt, euta-c005-des-mer, euta-c005-tip-cod, euta-c005-cmc, ecc.
File e tabelle principali¶
| File logico | Record | Modo | Uso |
|---|---|---|---|
| COGTABEL | euta-rec (chiave euta-key) |
Input | Tabelle generalizzate; qui la configurazione stampa ordini (tipo 70, arg PRNT, key ORDNFO) |
| COGTESOR | tor-rec (chiave primaria tor-chia = tor-tipo+tor-anno+tor-numero+tor-progr) |
Input | Testata ordini clienti/fornitori; legge l'ordine fornitore da stampare |
| FEURTAB | cogfiles.cpy |
Input | Tabella file Eurosystem (percorsi/nomi file) |
I file sono aperti in sola lettura (open input, paragrafi f-co-001/f-co-017 in cogo25.prc). Le routine di lettura rd-cogtabel e rd-cogtesor provengono dai copybook cogtabel.k01 / cogtesor.k01 (chiave primaria) inclusi in fondo alla procedure division.
Campi COGTESOR usati¶
tor-tipo="F"(k-ana-tipo-for),tor-anno,tor-numero,tor-progr: chiave dell'ordine.tor-tipo1,tor-clifor: tipo e codice anagrafica del fornitore (usati perext-ana-tip/ext-ana-code per il modulo privacy).
Strutture linkage¶
Il programma riceve stringhe (area comune, copybook wcont.cpy/wcont1.cpy). La user-area (da utily27.cpy) e' ridefinita in util-o25:
o25-altri-dati:o25-prf(flag stampante/preferenza) eo25-forza-prf(forzatura stampante);o25-id: identificativo di modalita' ('NODISP'per la chiamata non visuale);o25-ordine:o25-o-ann,o25-o-num,o25-o-pro(anno/numero/progressivo ordine passati dal chiamante).
I dati per la stampa vengono girati al programma chiamato tramite tab-maschera (anno/numero/progressivo + tm-exception) e util-o25-altri-dati (u-o25-prf, u-o25-forza-prf).
Copybook principali¶
Screen Designer (in cbl/screens/)¶
| Copybook | Contenuto |
|---|---|
cogo25.select |
SELECT dei file (COGTABEL, COGTESOR) |
cogo25.fd |
FD dei file |
cogo25.wrk |
Working storage della maschera (costanti k-program-id='COGO25', k-m-v-size, k-m-h-size, ID controlli) |
cogo25-01.scr |
Maschera principale |
cogo25.decla |
Declaratives |
cogo25.prc |
Procedure di supporto (apertura/chiusura file, rd-msk-pop, gestione controlli, READLNG) |
Strutture dati / utility (in cpy/)¶
| Copybook | Contenuto |
|---|---|
feurtab.fd / cogfiles.cpy |
SELECT/FD e record FEURTAB |
cogtabel.fd / cogtabel.cpy / cogtabel.k01 |
File, record e routine di lettura COGTABEL |
cogtesor.fd / cogtesor.cpy / cogtesor.k01 |
File, record e routine di lettura COGTESOR |
cnfgprnt.cpy |
Layout configurazioni di stampa (redefine euta-c005 per stampa ordini) |
utiln05.cpy |
Interfaccia util-n05 (parametro n05-tip per COGN05) |
utily27.cpy |
user-area / interfaccia util-y27 per il modulo privacy (COGY27) |
utils52.cpy |
Interfaccia calendario COGS52 (util-s52) |
cogazien.cpy |
Dati azienda (az-personal, ecc.) |
k-personal.cpy |
Costanti di personalizzazione |
wgrave.cpy / wnscr.cpy / wopenf.cpy / wstato.cpy |
Working storage comuni |
wcont.cpy / wcont1.cpy |
Delimitatori area linkage stringhe |
Copybook finali¶
grave.cpy, mmmask.cpy (programma GUI standalone: fornisce z-99-init-program/z-99-exit-program), opengen.cpy, stato.cpy, stato1.cpy, winmsg.cpy, config.cpy (paragrafi x99-cfg/ex-x99-cfg), cogo25.prc.
Sottoprogrammi chiamati (CALL)¶
| Programma | Contesto | Scopo |
|---|---|---|
cogo25<personal> |
st-70-accept (nome costruito con az-personal) |
Versione di stampa ordini fornitori personalizzata per l'ambiente; se non esiste (on overflow) si ricade sullo standard |
cogo25no |
st-80-standard |
Versione standard/generalizzata: lanciatore delle stampe ordini fornitori ad aghi o laser |
COGN05 |
x99-conf (F1) |
Configurazione dati di stampa ordini clienti/fornitori (n05-tip = "F") |
cogy27 (COGY27) |
d-privacy |
Stampa del modulo privacy per l'anagrafica del fornitore (y27-in-caller = "COGO25", y27-tipo-ana, y27-cod-ana) |
READLNG |
cogo25.prc (x-carica-lingua) |
Caricamento etichette maschera nella lingua configurata (COGO25.lng) |
Dopo ogni stampa il programma esegue il cancel del modulo chiamato.
Storico modifiche¶
2026-07-16 — TASK-5607: descrizione avanzata merce sulle stampe ordini fornitori¶
Modifica nel modulo di stampa cogo25m (variante richiamata da COGO25 in base a az-personal,
vedi Note). Nella composizione della descrizione articolo (w-des) la logica di scelta tra
descrizione anagrafica (mer-descr) e descrizione avanzata letta da COGRACMC (rcm-des) e' stata
corretta:
- dopo la lettura di COGRACMC (
rd-cogracmc-chia2), se la lettura fallisce (not w-verbo-ok) vengono azzeratircm-cod-avaercm-lenper non riutilizzare i valori di una merce letta in precedenza; - la descrizione avanzata
rcm-desviene usata solo sercm-len > 36ercm-des not = spaces; - se dopo questo la descrizione risulta vuota (
w-des = spaces), si ricade sulla descrizione anagraficamer-descr.
E' stata inoltre rimossa l'assegnazione incondizionata move spaces to rcm-des sul ramo di lettura
fallita, che poteva azzerare erroneamente il campo.
Effetto: sulle stampe/ristampe degli ordini fornitori (e sui buoni di versamento) la descrizione
dell'articolo non risulta piu' vuota ne' ereditata da un altro articolo: viene sempre valorizzata con
la descrizione avanzata corretta oppure, in sua assenza, con la descrizione anagrafica standard. La
stessa correzione e' stata applicata a cogo65m (ordini clienti) e a cogs58 (subroutine descrizione
completa merce).
Note¶
- L'accesso ai file e' in sola lettura: COGO25 non aggiorna ne' COGTESOR ne' COGTABEL. La marcatura "ordine stampato" (
tor-fl-sta) e la stampa vera e propria sono a carico del programma di stampa richiamato (cogo25<personal>/cogo25no). - Il campo di configurazione
euta-c005-prnletto inx99-rd-cfgfa riferimento al layouteuta-c005descritto incnfgprnt.cpy(configurazione stampa ordini, COGTABEL tipo 70 /PRNT ORDNFO). - La stessa maschera e' usata sia per la ristampa ordini fornitori sia per la stampa dei buoni di versamento (entrambe le voci di menu puntano a COGO25): la differenziazione del modulo effettivo e' demandata al programma di stampa personalizzato e alla configurazione.
- Esistono numerose varianti personalizzate del programma di stampa in
cbl/(es.cogo25a,cogo25bb,cogo25be,cogo25ec,cogo25eg,cogo25fx,cogo25ip,cogo25m,cogo25om,cogo25qs,cogo25wi), selezionate a runtime tramiteaz-personal.