COGP01 — Stampa aliquote IVA
Intestazione
| Campo |
Valore |
| Sorgente |
cbl/cogp01.cbl |
| Program-ID |
COGP01 |
| Tipo |
Stampa (report) |
| Posizione menu |
Contabilita' > Archivi & Tabelle > Tabelle > Stampe > Aliquote Iva |
Scopo
COGP01 produce la stampa elencativa delle aliquote IVA codificate nella tabella generalizzata COGTABEL (tipo 67). Per ogni aliquota vengono riportati il codice, il valore percentuale e il codice di esenzione. E' un report semplice, senza filtri di selezione: scorre l'intera tabella IVA e la stampa in ordine di chiave.
Il programma e' interattivo: l'operatore, tramite la maschera di selezione stampante gestita da COGS54, sceglie la periferica e conferma. L'output e' rediretto sul file di spool di stampa flsta.
Struttura e flusso
- Inizializzazione (
inizio):
- Controllo abilitazione (
ctr-abil) e inizializzazione programma (z-99-init-program).
- Caricamento lingua (
x-carica-lingua), apertura file (open-files), lettura dati azienda (rd-azi).
- Selezione stampante (
a002): chiamata a COGS54 (interfaccia util-s54) con s54-chr-stampa = 78 (larghezza riga richiesta). Se l'operatore preme ESC o F2 si esce; con F3 (cambio periferica) si ripete la selezione; altrimenti si procede.
- Avvio elaborazione (
a4):
- Lettura data di sistema (
century-date) per l'intestazione.
- Messaggio "Attendere Prego ..." (
clock-msg).
- Posizionamento su COGTABEL con
euta-tipo = 67 e euta-codr = 0 tramite st-cogtabel-notmin, seguito da rdnxt-cogtabel.
- Se non ci sono record, se il file e' terminato o se il tipo letto non e' 67, viene mostrato il box "NESSUNA ALIQUOTA" e si esce.
- Loop di stampa (
ela-10-loop): per ogni record con euta-tipo = 67:
- Si valorizzano
r1co (codice = euta-cod), r1ali (aliquota = euta-ivali), r1ese (esente = euta-ivaes).
- Si stampa la riga di dettaglio (
stampa) e si legge il record successivo (rdnxt-cogtabel).
- Il ciclo termina alla fine file o al cambio di tipo tabella (
fine-sta).
- Chiusura stampa (
fine-sta): salto pagina finale, poi chiamata a COGS54 con s54-after-print = "S" per la fase di chiusura della stampa e cancel "COGS54".
- Uscita (
fine / z-chiudi): rimozione clock, close cogtabel, z-99-exit-program, exit program.
Gestione intestazione e paginazione (intesta)
Emessa quando il contatore riga ctrri supera s54-stm-lin - 10 (numero linee della stampante meno un margine). Compone:
- rint1: ragione sociale azienda (az-int), titolo "ALIQUOTE IVA", data di stampa e numero pagina (ctrpa).
- rint2 / rint3: intestazioni di colonna ("CODICE", "ALIQUOTA", "ESENTE") e riga di separazione.
Durante l'intestazione viene richiamato cs1-print (cambio periferica in corso stampa): con ESC si va a fine, con F3 si ripete l'intestazione.
File e tabelle principali
| File logico |
Record |
Modalita' |
Uso |
| COGTABEL |
euta-rec |
Input |
Tabella generalizzata; tipo 67 = aliquote IVA (unica sorgente dati) |
| FEURTAB |
cogfiles.cpy |
Input |
Tabella file Eurosystem |
| flsta |
riga |
Output |
File di spool di stampa (assign to print "PRINTER") |
Campi COGTABEL usati (tipo 67, redefines euta-iva)
| Campo |
Contenuto |
euta-tipo |
Tipo tabella (deve valere 67) |
euta-cod |
Codice aliquota IVA (stampato in r1co) |
euta-codr |
Redefines numerico di euta-cod, usato come chiave di posizionamento (= 0) |
euta-ivali |
Valore aliquota IVA 9(02)v9(02) (stampato in r1ali) |
euta-ivaes |
Codice esenzione x(02) (stampato in r1ese) |
Le verbe di accesso st-cogtabel-notmin e rdnxt-cogtabel sono generate da Screen Designer a partire dalla chiave primaria cogtabel.k01 (incluse in cogp01.prc).
Copybook principali
Screen Designer (non modificabili manualmente)
| Copybook |
Contenuto |
cogp01.select |
SELECT dei file |
cogp01.fd |
FD dei file |
cogp01.wrk |
Working storage maschera |
cogp01-01.scr |
Maschera (screen section) |
cogp01.decla |
Declaratives |
cogp01.prc |
Procedure generate (accessi COGTABEL, open-files, ecc.) |
Strutture dati e utility
| Copybook |
Contenuto |
feurtab.fd |
SELECT/FD FEURTAB |
cogfiles.cpy |
Record FEURTAB |
flsta.fd / flsta.cpy |
SELECT/FD e record riga del file di stampa |
cogtabel (via .prc/.k01) |
Record euta-rec e accessi tabella generalizzata |
cogazien.cpy |
Dati azienda (az-int ragione sociale) |
utils54.cpy |
Interfaccia util-s54 per COGS54 |
wgrave.cpy / wnscr.cpy / wopenf.cpy / wstato.cpy |
Working storage comuni |
wcont.cpy / wcont1.cpy |
Aree in linkage (parametro stringhe) |
grave.cpy / opengen.cpy / stato.cpy / stato1.cpy / winmsg.cpy |
Procedure di servizio (gestione errori, apertura file, messaggi) |
printer.cpy |
Procedure di stampa riga (st-stampa-riga) |
mmsubw.cpy |
z-99-init-program / z-99-exit-program |
Sottoprogrammi chiamati (CALL)
| Programma |
Scopo |
| COGS54 |
Selezione/assegnazione stampante e gestione apertura/chiusura della stampa (interfaccia util-s54). Chiamato all'avvio per la scelta periferica (s54-chr-stampa = 78) e al termine con s54-after-print = "S" per la chiusura stampa; poi cancel "COGS54". |
Note
- Il programma riceve in linkage il parametro
stringhe (aree wcont / wcont1), condiviso dai programmi del gestionale.
- La larghezza di stampa richiesta e' fissa a 78 caratteri; il numero di linee per pagina (
s54-stm-lin) e' determinato dalla stampante selezionata via COGS54.
- La tabella IVA e' identificata dal tipo
67 di COGTABEL, condiviso con molti altri moduli contabili e di magazzino che leggono le aliquote (es. gestione documenti e liquidazione IVA).
- Non esistono chiavi secondarie in gioco: il report usa esclusivamente la chiave primaria di COGTABEL, scorsa in modo sequenziale dopo lo start posizionale sul tipo 67.
- Il sorgente originale usa costrutti
PERFORM ... THRU e GO TO per il flusso di stampa; sono pattern legacy pre-esistenti e non vanno replicati in nuovi programmi (vedi convenzioni COBOL del progetto).