COGP99 - Stampa Bar Code Imballi¶
Scopo¶
Stampa una pagina grafica per ogni merce selezionata contenente codice prodotto, descrizione, codice a barre EAN dell'imballo e codice a barre del reso (EAN preceduto da ".R"). La stampa e' generata in linguaggio PRESCRIBE per stampanti compatibili.
Posizioni menu¶
- Magazzino > Archivi & Tabelle > Stampe > Merci > Bar code imballi
File e Tabelle¶
| File | Copybook | Utilizzo |
|---|---|---|
| FEURTAB | cogfiles.cpy | Tabella file di sistema |
| COGMERCI | cogp99.fd (cogmerci.cpy) | Anagrafica merci, scansione e lettura EAN imballo (mer-ean) |
| FLSTA | flsta.cpy | File di stampa |
cogmerci e' dichiarato is external in cogp99.fd (gestione tramite COGU16).
Copybook¶
feurtab.fd,cogp99.select,flsta.fd,cogp99.fd,cogp99.wrk,cogp99-01.scrflsta.cpy,cogfiles.cpywstato.cpy,wgrave.cpy,wopenf.cpy,wnscr.cpyutils54.cpy,utilu16.cpy,utils50.cpy,utils68.cpy,cogazien.cpywcont.cpy,wcont1.cpystato.cpy,stato1.cpy,grave.cpy,winmsg.cpy,opengen.cpy,mmmask.cpy,cogp99.prc,cogp99.decla
CALL¶
| Programma | Scopo |
|---|---|
| COGS54 | Gestione parametri di stampa (richiesta stampante, formato, anteprima); s54-emu = 'PRESCRIBE' |
| COGS68W | Composizione stringa descrittiva merce (operazione "String") |
| COGS50 | (riferimento commentato/usato altrove) Lettura merce |
| COGU16W | Subroutine di scansione anagrafica merci con range e ordinamento |
Logica di elaborazione¶
Parametri input (tab-maschera)¶
tm-ord-mer: ordinamento (C=Codice, D=Descrizione)tm-da-merce(gru+sot+cod) etm-da-merce-des: range di partenzatm-a-merce(gru+sot+cod) etm-a-merce-des: range di arrivo (k-merce-null= fino alla fine, mappato ahigh-valueslato U16)
Flusso¶
- Inizializzazione (
a000): apre file, carica azienda, prepara controlli S68 per i due campi merce, attiva F3/F8/F9. - Maschera (
a-tm-ord-mer,a-tm-da-merce,a-tm-a-merce): accept dei parametri, validati dax-controlla-tm-*. - Conferma (
a-richiesta-conferma,a-cogs54): chiama COGS54 cons54-emu='PRESCRIBE', posizione 11/20, larghezza 132. - Elaborazione (
st-10->a1-10-loop): - Set estremi U16 con
u16-fl-sel = tm-ord-mer(C/D),u16-cm-da/dm-da,u16-cm-a/dm-a. - Loop
Leggisu U16 (perform z-u16conu16-ope = "Leggi"). - Salta merci con
mer-vuoto not = "I". - Salta EAN convenzionale
mer-chia = '999999999'. - Per ogni merce: chiama COGS68W con operazione
"String"per ottenere descrizione formattata di 56 caratteri (ins68-o-string). - Output PRESCRIBE: per ogni merce scrive in
rigacomandiMAP,FSET,TEXT,BARC: s31-set-test-map: posiziona il testo (verticale/orizzontale inw-testo-v-pos/w-testo-h-pos).s31-set-barc-map: scrive due bar code Code 24 (linguaggio PRESCRIBEBARC 24,N,...):- primo bar code =
mer-ean; - secondo bar code =
.R+mer-ean(campow-reso-ean), 5,5 unita' sotto il primo.
- primo bar code =
- Se la descrizione (
app-des/app-des1) e' lunga, manda a capo la seconda parte. - Salto pagina: quando
ct > (s54-stm-lin - 4)scrivebefore pagee ristampa intestazione (intesta). - Fine: dopo l'ultima merce scrive
!R! RES; EXIT;per resettare la stampante PRESCRIBE.
Posizionamento grafico¶
- Unita' di misura: cm (
UNIT C), font 12cpi (SPSZ 7; FTMD 15), marginiSTM 0; SLM 0; SBM 31; SLM 21. - Posizione testo iniziale: H=2,9 V=1; bar code: H=2,5 V=9,2.
- Le coordinate vengono convertite da formato italiano (
,) a inglese (.) tramiteinspect ... replacing all ',' by '.'perche' PRESCRIBE usa il punto decimale.
Note tecniche¶
- Programma GUI con screen
cogp99-01.scr. - L'output non e' una stampa testuale ma una sequenza di comandi PRESCRIBE che vengono inviati alla stampante.
- COGU16W gestisce l'iterazione su COGMERCI (file external nella
.fd) con l'ordinamento richiesto. - Larghezza linea stampa: 132 caratteri (impostata su S54).