COGA04 - Reparti Cassa (stampa)
Panoramica
Programma di stampa che produce l'elenco dei Reparti Cassa dalla tabella COGTABEL (euta-tipo = 50). Presenta la finestra di selezione stampante tramite COGS54, poi scorre i record e genera un report paginato con codice e descrizione di ogni reparto.
| Menu |
Percorso |
| Magazzino |
Archivi & Tabelle > Tabelle > Stampe > Reparti Cassa |
Struttura del programma
File e tabelle utilizzati
| File/Tabella |
Tipo |
Descrizione |
| FEURTAB |
Input |
Tabella di sistema |
| COGTABEL |
Input |
Tabella generica — legge tipo 50 (reparti cassa) |
| COGAZIEN |
Input |
Anagrafica azienda (aperto nel file-control, chiuso in fine) |
| FLSTA |
Output |
File di stampa (report) |
Campi COGTABEL utilizzati
Per i reparti cassa (euta-tipo = 50):
| Campo |
Descrizione |
| euta-tipo |
Tipo tabella (50 = reparti cassa) |
| euta-cod |
Codice reparto (stampato in r1co) |
| euta-descr |
Descrizione reparto (stampata in r1desc) |
Nota: il programma usa euta-cod e euta-descr (campi generici) anziche' il redefines euta-rep-dati, dato che stampa solo codice e descrizione.
Copybook principali
| Copybook |
Descrizione |
| coga04.select |
SELECT dei file |
| coga04.fd |
File Description |
| coga04.wrk |
Working storage generata |
| coga04.decla |
Declaratives |
| coga04.prc |
Procedure generate (open/close/read) |
| coga04-01.scr |
Screen section |
| feurtab.fd |
SELECT tabella di sistema |
| flsta.fd |
SELECT file di stampa |
| flsta.cpy |
FD file di stampa |
| cogfiles.cpy |
FD record FEURTAB |
| utils54.cpy |
Interfaccia COGS54 (gestione stampante) |
| wstato.cpy / wgrave.cpy / wopenf.cpy / wnscr.cpy |
Copybook standard |
| wcont.cpy / wcont1.cpy |
Linkage standard |
Chiamate a sottoprogrammi (CALL)
| Programma |
Scopo |
| COGS54 |
Gestione selezione stampante e anteprima; chiamato due volte: prima della stampa (selezione) e dopo la stampa (chiusura con s54-after-print = "S") |
Variabili chiave
| Variabile |
Tipo |
Descrizione |
| ctrri |
99 |
Contatore righe stampate nella pagina corrente (inizializzato a 90 per forzare intestazione alla prima riga) |
| ctrpa |
9(04) |
Contatore pagine (parte da 1) |
| k-chr-stampa |
78 |
Costante 78 — identificativo formato stampa per COGS54 |
| riga0 |
x(80) |
Buffer riga di stampa |
Righe di stampa
| Record |
Contenuto |
| rint1 |
Intestazione: titolo "STAMPA REPARTI CASSA", data, numero pagina |
| rint2 |
Sottointestazione colonne: "CODICE" e "DESCRIZIONE REPARTO CASSA" |
| rint3 |
Riga separatrice (caratteri "=") |
| rdet1 |
Riga dettaglio: r1co (codice, pic z(5)) e r1desc (descrizione, pic x(40)) |
Flusso operativo
1. Inizializzazione (apri)
- Inizializza il programma, controlla abilitazioni, apre i file
- Recupera la data di sistema e la formatta nell'intestazione (r1dabog, r1dabom, r1daboa)
2. Selezione stampante (a222)
- Chiama COGS54 per presentare la finestra di selezione stampante
- Se ESC o F2: esce dal programma
- Se F3: procede con la stampa
3. Posizionamento (a010 -> a015)
- Si posiziona su COGTABEL con euta-tipo = 50 e euta-codr = 0 (st-cogtabel-notmin)
- Legge il primo record (rdnxt-cogtabel)
- Se non ci sono record o il tipo non corrisponde: mostra messaggio "NESSUN REPARTO CASSA" e chiude
4. Ciclo di stampa (a030 -> a040)
- Per ogni record con euta-tipo = 50:
- Compone la riga di dettaglio (rdet1) con codice e descrizione
- Chiama il paragrafo stampa che gestisce automaticamente il salto pagina e l'intestazione
- La paginazione e' gestita confrontando ctrri con (s54-stm-lin - 12): se la pagina e' piena, esegue intesta
5. Intestazione pagina (intesta)
- Scrive l'intestazione (rint1) con titolo, data e numero pagina
- Chiama cs1-print per gestione eventi di stampa (eventuale annullamento con ESC)
- Scrive le sottointestazioni (rint2, rint3) e una riga vuota
- Incrementa il contatore pagine, azzera il contatore righe a 8
- La prima pagina usa "after zero" (nessun salto), le successive usano "after page"
6. Chiusura (a100 -> fine)
- Scrive un salto pagina finale
- Chiama COGS54 con s54-after-print = "S" per la chiusura del report (anteprima/invio a stampante)
- Chiude COGTABEL e COGAZIEN
- Esce dal programma
Note tecniche
- Il programma usa PERFORM ... THRU per i paragrafi stampa (stampa thru ex-stampa) e intesta (intesta thru ex-intesta).
- Il contatore righe ctrri e' inizializzato a 90 (valore superiore al massimo righe per pagina) per forzare la stampa dell'intestazione al primo record.
- Il campo euta-cod viene usato direttamente (non il redefines euta-codr) perche' il programma stampa il codice generico senza necessita' di interpretazione numerica.