COGK25 - Stampa Listino Auto (Emporio Auto)¶
Panoramica¶
Programma interattivo a carattere (maschera testuale, non GUI) che estrae dalle schede auto dell'Emporio Auto l'elenco delle vetture disponibili e ne produce un listino consultabile a video e stampabile su carta. Scandisce l'archivio schede auto COGSKAUT per le sole vetture in stato "A" (acquistate, ancora disponibili), risolve per ciascuna la merce collegata, la targa, i dati di immatricolazione, il colore, il concessionario e il prezzo di listino, e raccoglie i risultati in un file di lavoro indicizzato temporaneo che viene poi paginato a video e stampato. E' una funzione di sola consultazione/stampa: non aggiorna gli archivi anagrafici.
Il prezzo esposto e' cifrato negli archivi (campi ska-campo-a/ska-campo-d) e viene decifrato in fase di caricamento tramite le routine CRYPT/encrypt. La colonna prezzo mostrata dipende dal profilo di funzione (funzio): prezzo di acquisto oppure prezzo a cui si intende vendere.
Posizione nel menu¶
| Menu | Percorso |
|---|---|
| Magazzino | Autoveicoli > Listini |
Struttura del programma¶
File e tabelle utilizzati¶
| File/Tabella | Tipo | Descrizione |
|---|---|---|
| FEURTAB | Input | Tabella di sistema (nomi file) |
| COGSKAUT | Input | Archivio schede auto Emporio Auto (scansione per stato via chiave secondaria ska-chia2) |
| COGRACMC | Input | Raccordo codice avanzato -> merce (da telaio/ska-cod-ava a codice merce) |
| COGMERCI | Input | Anagrafica merci (descrizione veicolo) |
| COGMERFO | Input | Merci/fornitore (targa in mfr-cod-for) |
| COGGEANA | Input | Anagrafica clienti/fornitori (nome concessionario) |
| COGTABEL | Input | Tabella generica (letta in rd-tab) |
| work-file | I-O (temp) | File indicizzato di lavoro, nome univoco per operatore, che raccoglie le righe del listino prima della visualizzazione/stampa |
| sta | Output | File di stampa (PRINTER) |
Copybook principali¶
| Copybook | Descrizione |
|---|---|
| cogskaut.cpy | Tracciato archivio schede auto |
| cogracmc.cpy | Tracciato raccordo codice avanzato/merce |
| cogmerci.cpy / cogmerfo.cpy | Tracciati anagrafica merci e merci/fornitore |
| coggeana.cpy | Tracciato anagrafica clienti/fornitori |
| cogtabel.cpy / cnfgprfr.cpy | Tracciato tabella generica e configurazione profili |
| cogfiles.cpy | Tracciato FEURTAB |
| cogazien.cpy | Dati azienda |
| wstato / wgrave / wopenf / wnscr | Working storage standard (stato file, errori gravi, apertura file, gestione schermo) |
| utils22.cpy / utils54.cpy / utils60.cpy | Interfacce sottoprogrammi COGS22, COGS54 (stampa), COGS60 (scelta a menu) |
| utilsk10.cpy | Interfaccia verso COGK10 (scheda auto) |
| stato / stato1 / winmsg / grave / open1 | Procedure standard di gestione stato/messaggi/apertura |
| mmmask.cpy | Gestione maschera testuale standalone (fornisce z-99-exit-program) |
| dtab.cpy / fscrol2.cpy | Gestione tabella video e scrolling paginato |
| coggeana.k01 / cogmerfo.k01 / cogracmc.k01 / cogracmc.k02 / cogmerci.k01 | Chiavi lettura archivi (incluse in coda alla procedure division) |
Chiamate a sottoprogrammi (CALL)¶
| Programma | Scopo |
|---|---|
| COGS60 | Scelta a menu (ordinamento di stampa) |
| COGS54 | Selezione stampante/emulazione per la stampa su carta |
| CRYPT / encrypt | Decifratura dei campi prezzo cifrati (ska-campo-a, ska-campo-d) |
| COGK10 | Apertura della scheda auto della riga selezionata (F7) |
Logica di elaborazione¶
1. Inizializzazione (a000)¶
Imposta il nome programma per la gestione errori/maschera/help, apre i file (open-files), legge i dati azienda (rd-azi) e visualizza la maschera principale mm-1 (25x80).
2. Scelta ordinamento (a20)¶
Tramite COGS60 propone l'ordine di stampa (tm-ordine): A = Descrizione, B = Targa, C = Anno immatricolazione, D = KW/CV, E = Concessionario, F = Data di entrata. L'ordinamento scelto valorizza il campo chiave work-ordine del file di lavoro, determinando cosi' l'ordine con cui le righe verranno rilette.
3. Estrazione dati (fill-file / fill-file-next)¶
Scandisce COGSKAUT per chiave secondaria ska-chia2 partendo dallo stato "A" e prosegue finche' ska-stato = "A" (vetture disponibili). Per ogni scheda esegue upd-work-file:
- da
ska-cod-ava(telaio/codice avanzato) risolve la merce inCOGRACMC->COGMERCI(descrizione) eCOGMERFO(targa inmfr-cod-for); - da
ska-forrisolve il concessionario inCOGGEANA(ana-nome); - valorizza il campo di ordinamento
work-ordinesecondotm-ordine; - valorizza i dati di riga (descrizione, targa, anno/mese immatricolazione, colore, KW, concessionario);
- decifra il prezzo tramite
prep-campo/CRYPT: sefunzio = 11usaska-campo-a, sefunzio = 14usaska-campo-d, altrimenti prezzo a zero; - scrive il record nel file di lavoro (
write ... invalid key rewrite).
4. Caricamento tabella video e paginazione (rst-not-less, a-40, disp-riga)¶
Riletto il file di lavoro dal primo record, riempie la tabella indicizzata tm-tab (fino a 16 righe per pagina, campo tmr-*) tramite le routine di scroll fscrol2/dtab. La maschera consente scorrimento su/giu' e sinistra/destra (c1-shift sposta la finestra orizzontale sulle colonne larghe come descrizione/concessionario), oltre a PagSu/PagGiu' per la paginazione avanti/indietro sul file di lavoro. La riga selezionata e' evidenziata in reverse (str-reverse).
5. Interazione (a-45)¶
- ESC: torna alla scelta ordinamento;
- F7: apre la scheda auto della riga corrente richiamando
COGK10(targa passata insk10-targa); - F9: avvia la stampa su carta (
st-stampa).
6. Stampa su carta (st-stampa / intesta)¶
Seleziona stampante/emulazione tramite COGS54 (form CAP076), apre il file di stampa e rilegge il file di lavoro in ordine di chiave, componendo l'intestazione "LISTINO AUTO DISPONIBILI" con data e numero pagina (intesta) e le righe di dettaglio (det-riga: descrizione, targa, anno/mese, KW, colore, prezzo, concessionario), con salto pagina ogni 60 righe.
7. Chiusura (fine / z-chiudi)¶
Chiude tutti i file, chiude ed elimina il file di lavoro (delete work-file) ed esce dal programma.
Note tecniche¶
- Archivio di riferimento: l'intero sotto-modulo Autoveicoli ruota attorno a
COGSKAUT(scheda auto per Emporio Auto). Il tracciato e' documentato incogskaut.cpy:ska-statocodifica la posizione del veicolo (A=acquistato/disponibile, B=passaggio a rivenditore, C=vendita, D=richiesta passaggio, E=fine pratica, F/G=demolizione). - Prezzi cifrati: i campi prezzo (
ska-campo-aacquisto,ska-campo-dprezzo obiettivo di vendita, ecc.) sono memorizzati cifrati e decifrati a run-time conCRYPT(chiavew-psv-key) in blocchi di 8 caratteri (prep-campo). - File di lavoro temporaneo: indicizzato, con nome costruito da
ext-tmp-dir+ext-os-slash+#$cogk25.+ operatore (wo-oper); e' ricreato in output all'ingresso di ogni ricerca e cancellato in uscita. - Chiave del file di lavoro:
work-ordine(campo di ordinamento derivato datm-ordine) +work-prog(progressivo). Cambiando l'ordinamento cambia l'ordine di lettura. - Colonne dinamiche: la finestra orizzontale (
c1-shift,w-dh) scorre sulle colonne oltre la descrizione, per visualizzare a video campi altrimenti tagliati (concessionario). Le frecce laterali (������) segnalano la possibilita' di scorrere. - Nota sul menu: la voce di menu "Listini" corrisponde alla stampa del listino delle auto disponibili (stato "A").
- Programma a carattere: usa
mmmask.cpy(standalone testuale), non l'infrastruttura GUI Screens; la maschera e' definita come literalmm-1in working storage.