Vai al contenuto

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

  1. Inizializzazione (inizio):
  2. Controllo abilitazione (ctr-abil) e inizializzazione programma (z-99-init-program).
  3. Caricamento lingua (x-carica-lingua), apertura file (open-files), lettura dati azienda (rd-azi).
  4. 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.
  5. Avvio elaborazione (a4):
  6. Lettura data di sistema (century-date) per l'intestazione.
  7. Messaggio "Attendere Prego ..." (clock-msg).
  8. Posizionamento su COGTABEL con euta-tipo = 67 e euta-codr = 0 tramite st-cogtabel-notmin, seguito da rdnxt-cogtabel.
  9. 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.
  10. Loop di stampa (ela-10-loop): per ogni record con euta-tipo = 67:
  11. Si valorizzano r1co (codice = euta-cod), r1ali (aliquota = euta-ivali), r1ese (esente = euta-ivaes).
  12. Si stampa la riga di dettaglio (stampa) e si legge il record successivo (rdnxt-cogtabel).
  13. Il ciclo termina alla fine file o al cambio di tipo tabella (fine-sta).
  14. 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".
  15. 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).