IBM i Printing – Faq & Howto (IT)

Questa è una raccolta di FAQ e di Howto sulla gestione delle stampe, la produzione dei PDF e altre cose inerenti stampe e IBM i: vuole essere una guida in continua evoluzione quindi invito anche voi che state leggendo ora a segnalare, tramite la funzione commenti, trucchi, perplessità ed esperienze a riguardo.

iPrt-Faq-001: Posso creare un PDF da uno spool IBM i?

Sul mercato ci sono degli ottimi tools per la gestione delle stampe grafiche che, generalmente, permettono di generare PDF, HTML, XML, XLS ecc. e gestiscono anche il flusso per una vera e propria gestione documentale.

Ma anche con gli strumenti a disposizione del sistema operativo IBM i si possono fare delle belle cose, sia in modo manuale che in modo automatico da codice.

Se abbiamo già uno spool in coda possiamo aprire la gestione delle emissioni di stampa di ACS Access Client Solution (Azioni-Emissioni di stampa) e scegliere Scarica o Visualizza e Scarica. La stessa cosa possiamo farla anche con iNavigator.

Se invece vogliamo automatizzare il processo e generare PDF in qualche directory di IFS conviene lavorare un po’ sul codice, vediamo qualche esempio:

  • Produzione di un PDF invece dello spool con OVRPRTF
    • Prima di aprire il PrinterFile nel nostro programma è sufficiente fare un OVRPRTF, ad esempio OVRPRTF(QSYSPRT) DEVTYPE(*AFPDS) WSCT(*PDF) TOSTMF(‘/home/pdf/fatture/190001.PDF) OVRSCOPE(*CALLLVL), produrre quindi la stampa nel modo normale e al momento della chiusura del Printer File troveremo il PDF nella directory specificata!
  • Produzione di un PDF invece dello spool con un overlay
    • Se vogliamo aggiungere un Overlay, fincatura, al nostro PDF possiamo ancora usare OVRPRTF: OVRPRTF(QSYSPRT) DEVTYPE(*AFPDS) WSCT(*PDF) TOSTMF(‘/home/pdf/fatture/190001.PDF) FRONTOVL(MODFAT 0 0) OVRSCOPE(*CALLLVL)
    • In questo caso abbiamo indicato l’overlay MODFAT con offset 0 orizzontale e 0 verticale
    • Per la creazione dell’overlay MODFAT partendo da un PDF o da un modello Word o da quello che avete su PC seguire la procedura indicata più avanti in questa guida
  • Da uno spool già esistente a PDF
    • Nei due casi sopra riportati andiamo a produrre il PDF invece dello spool … ma se lo spool lo abbiamo già in coda e vogliamo trasformarlo in PDF?
    • Usiamo CPYSPLF: CPYSPLF FILE(QPRINT) TOFILE(TOSTMF) JOB(000001/ROBERTO/QPADEV0001) SPLNBR (LAST) TOSTMF(‘/home/pdf/roberto/xx.pdf’) WSCST(*PDF) STMFOPT(*REPLACE)
    • E’ importante individuare correttamente lo spool di stampa indicando il nome dello spool e i riferimenti al JOB
  • Da uno spool già esistente a PDF con Overlay di fincatura
    • Se, come nel caso precedente, abbiamo già lo spool e vogliamo anche aggiungere un overlay… dobbiamo fare qualche passo in più perchè CPYSPLF non ci permette di farlo direttamente … ma con un po’ di astuzia:
    • CRTPF QTEMP/MYSPOOL  RCDLEN(199) MAXMBRS(*NOMAX) SIZE(*NOMAX) LVLCHK(*NO)
    • CPYSPLF FILE(ORDINEWEB) TOFILE(QTEMP/MYSPOOL) JOB(037971/ROBERTO/QPADEV0001)SPLNBR(000013) CTLCHAR(*FCFC)   
    • OVRPRTF FILE(QSYSPRT) DEVTYPE(*AFPDS) CTLCHAR(*FCFC) CHLVAL(*NORMAL) FRONTOVL(ORDITADE) TOSTMF(‘/pdf/2019/ordini/1900001.pdf’) WSCST(*PDF) 
    • CPYF FROMFILE(QTEMP/MYSPOOL) TOFILE(QSYSPRT)
    • DLTOVR FILE(QSYSPRT
    • Come si vede in questa procedura creo un con un solo campo da 199 char (198 di stampa più uno di per i caratteri di controllo come salto pagina, salto riga), copio lo spool dentro il file DB, eseguo un OVRPRTF con il modulo di overlay desiderato e quindi mando in stampa il file di QTEMP …non è fantastico?

Ecco alcuni link per approfondire l’argomento:

iPrt-Faq-002: Come si creano OVERLAY e PAGE-SEGMENT (AFP Resource)?

La procedura è spiegata in dettaglio a questo link dell’IBM Support: Creating AFP Resources Using the IBM AFP Printer Drivers

In pratica, una volta installati gli appositi driver AFP scaricati dal sito RICOH e configurato opportunamente il driver per ottenere Overlay o Page Segment, è sufficiente indirizzare la nostra stampa del PDF, Word o quello che abbiamo per la fincatura, creare un file .prn sul pc, trasferirlo su IBM i via FTP e generare l’oggetto overlay con CRTOVL sul nostro sistema.

Non spiego in dettaglio il processo perchè la guida IBM Support è chiara e completa.

iPrt-Faq-003: Posso stampare un Cariage-return e Line-Feed in un barcode Code128?

Il barcode CODE128 permette creare dei barcode anche con “embeddato” un CR+LF per … ma per poter “stampare” questi caratteri speciali bisogna prestare attenzione alla compilazione del printer file PRTF indicando l’opzione RPLUNPRT(*NO)  nel CRTPRTF:

---------------------------------
Pgm

  dcl-s cr char(1) inz(X'0D');    
  dcl-s lf char(1) inz(X'25'); 
  // or
  Dcl-S CRLF  char(2) Inz(x'0d25'); 

  ...
  bcode=%trim(myvar)+cr+lf+%trim(myvar2);

------------------------------
 Print file:

A            BCODE         30A        1                                       
A                                      BARCODE(CODE128 2 *NOHRI (*WIDTH .-    
A                                      007))        

iPrt-FAQ-004: Vedere gli spool file con SQL?

Sotto il nome di DB2 for i Services troviamo un sacco di funzioni e viste che ci permettono di monitorare e controllare oggetti di sistema … come i file di stampa o le code di stampa:

  • QSYS2.OUTPUT_QUEUE_INFO: Vista sulle code di output: SELECT * FROM QSYS2.OUTPUT_QUEUE_INFO
  • QSYS2.OUTPUT_QUEUE_ENTRIES: UDTF sugli spool
  • QSYS2.OUTPUT_QUEUE_ENTRIES: Vista sugli spool
  • QSYS2.OUTPUT_QUEUE_ENTRIES_BASIC: Vista semplificata sugli spool
  • QSYS2.SPOOLED_FILE_DATA: UDTF per il centenuto di uno spool file specifico
Esempio preso da RPGPGM.COM
SELECT SIZE,SPOOLNAME,OUTQ,OUTQLIB,CREATED,USER_NAME,STATUS,
         PAGES,JOB_NAME,FILENUM 
    FROM QSYS2/OUTPUT_QUEUE_ENTRIES ORDER BY SIZE DESC

Approfondimenti su :

iPrt-FAQ-005: E’ possibile monitorare gli spool di una coda OUTQ?

Delle volte può essere utile monitorare una specifica coda in modo automatico per eseguire apposite azioni ogni volta che uno spool file viene aggiunto alla coda stessa… c’è un vecchio post su IBM System Mag “Automating Spool File Processing” che spiega tutto il processo creando una apposita DTAQ e monitorado quindi la stessa DTAQ

iPrt-FAQ-006: Visualizzare output spool ZPL Zebra

Per chi utilizza delle stampanti Zebra con linguaggio ZPL può essere utile questa anteprima della sito Labelary.com che prende una “etichetta” ZPL e la presenta a video:

http://labelary.com/viewer.html

iPrt-FAQ-007: Inviare caratteri ASCII ad una stampante etichette EPSON-TM-m30

Per inviare dei comandi ASCII (Hex Values) ad una stampante EPSON-TM bisogna ricorrere alla keyword TRNSPY

Ad esempio … il taglio carta a fine scontrino su una stampante EPSON-TM-m30

A          R DK3113E2
A                                      TEXT('CUT RECEIPT')
A                                     1X'1B691B40'
A                                      TRNSPY
Related Posts
DB2 for i SQL – Stringhe – POSSTR-LOCATE-LOCATE_IN_STRING (IT)

Introduzione Spesso, nelle nostre applicazioni, abbiamo la necessità di lavorare con le stringhe di testo e l'SQL del DB2 può Read more

DB2 for i & SQL – FAQ & Howto (Part. 1) (IT)

Database DB2 e SQL ... forse lo strumento più potente e completo che abbiamo sulla piattaforma IBM i: ecco una Read more

Annuncio IBM i 7.4

Arriva direttamente con l'uovo di Pasqua questo annuncio IBM per le novità della versione IBM i 7.4, versione iNext secondo Read more

Generated Always Columns – Approfondimenti (IT)

Introduzione "Generated Always Column": sono colonne, campi, di una tabella il cui contenuto è controllato direttamente dal sistema ... e Read more

--- Roberto De Pedrini Faq400.com

View Comments

  • Buongiorno, ho un problema con un Overlay generato con all'interno l'immagine di un logo.
    Il problema è che il documento viene generato e stampato con caratteri non validi. solo i numeri presenti nel logo sono corretti. HO provato a modificare il carattere in tutti i modi possibili
    ma il risultato non cambia. Il logo che è un'immagine viene stampata correttamente ma indirizzo, località e il resto dei dati sono incomprensibili . Eppure lo stesso documento generato viene poi salvato in una ifs come PDF e li' vedo tutto in modo corretto! Avete suggerimenti? La prima generazione del documento avviene da una Pistola di RadioFrequenza che lancia il programma di chiusura e stampa ddt. Grazie mille per l'attenzione

Recent Posts

ACS Access Client Solution 1.1.9.5

I primi di Aprile è uscita la "Spring Version" di ACS Access Client Solution, versione 1.1.9.5 Interessanti novità soprattutto in…

5 ore ago

Tim Rowe and Scott Forstie – Promo video for CEC 2024 – Milan

Se non vi bastava la ricca agenda delle sessioni del Common Europe Congress 2024, 3-6 Giugno Milano, ecco un altro…

6 ore ago

Code for IBM i 2.10.0 – Debug IBM i con Visual Studio Code

Le funzioni di debug con Visual Studio Code sono disponibili da qualche tempo ma questa nuova versione 2.10.0 semplifica la…

3 giorni ago

ObjectConnect over TCP/IP

A distanza di due anni e mezzo dal mio post Trasferire oggetti con ObjectConnect ed Enterprise Extender, sono finalmente riuscito…

3 giorni ago

SQL: SELECT con i “superpoteri”

Con un piccolo trucco anche una semplice istruzione SELECT può eseguire qualsiasi comando di sistema ! Vediamo come...

5 mesi ago

NetServer per tutti – parte 5

Una mini-guida a puntate per la configurazione, gestione, uso e risoluzione dei problemi di IBM i NetServer

1 anno ago