Vai al contenuto

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 in COGRACMC -> COGMERCI (descrizione) e COGMERFO (targa in mfr-cod-for);
  • da ska-for risolve il concessionario in COGGEANA (ana-nome);
  • valorizza il campo di ordinamento work-ordine secondo tm-ordine;
  • valorizza i dati di riga (descrizione, targa, anno/mese immatricolazione, colore, KW, concessionario);
  • decifra il prezzo tramite prep-campo/CRYPT: se funzio = 11 usa ska-campo-a, se funzio = 14 usa ska-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 in sk10-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 in cogskaut.cpy: ska-stato codifica 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-a acquisto, ska-campo-d prezzo obiettivo di vendita, ecc.) sono memorizzati cifrati e decifrati a run-time con CRYPT (chiave w-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 da tm-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 literal mm-1 in working storage.