Stampare spoolfiles via streaming pdf

Anche se non molto conosciuta questa funzione del sistema operativo può risolvere grandi problemi. Infatti stampare spoolfiles con caratteristiche avanzate (AFPDS) è sempre stato un po’ problematico. Oltretutto per poterlo fare è necessario installare sulla singola stampante la scheda IPDS che oltre ad essere costosa non consente di utilizzare liberamente tutte le keyword delle DDS dei printer files.

Unico requisito della modalità che propongo è che la stampante supporti il meccanismo di stampa pdf in stream. Il processo di stampa in questo caso si articola nel seguente modo:

  • viene generato lo spool da un programma
  • esso viene rilasciato su una stampante virtuale
  • quest’ultima lo converte in pdf al volo utilizzando il prtf di sistema QSYSPRT
  • contestualmente lo spool qsysprt in formato *USERASCII viene girato su una seconda coda di stampa
  • essa provvede a girarlo alla stampante fisica

Di seguito i passi necessari per realizzare la configurazione

Prima di tutto occorre creare la device di stampa che punta alla stampante fisica

CRTDEVPRT DEVD(PRTFISICA)             
 DEVCLS(*LAN)    
 TYPE(3812)    
 MODEL(1)    
 LANATTACH(*IP)                   
 PORT(9100)                   //da inserire in base a marca/modello stampante fisica            
 FONT(11 *NONE)                       
 FORMFEED(*AUTOCUT)                   
 INACTTMR(*SEC15)                     
 MFRTYPMDL(*HP4)              //da inserire in base a marca/modello stampante fisica           
 PPRSRC1(*A4)                         
 PPRSRC2(*A4)                         
 RMTLOCNAME('192.168.10.1')   //indirizzo ip stampante           
 SYSDRVPGM(*HPPJLDRV)         //da inserire in base a marca/modello stampante fisica           
 TEXT('Stampante HP ufficio logistica') 

Dopodichè di passa a generare un oggetto di tipo *PSFCFG che si occuperà della trasformazione da spool a pdf

CRTPSFCFG PSFCFG(QGPL/PRTPDF)                 
 USRRSCLIBL(JOBLIBL)                     
 RLSTMR(SEC15)                          
 PRTRSPTMR(NOMAX)                        
 PDFGEN(SPLF)                           
 PDFDEVTYPE(IP40300)                     
 PDFPPRDWR1(A4)                         
 PDFPPRDWR2(A4)                          
 PDFSENDER(SPLFOWN)                     
 PDFOUTQ(QUSRSYS/PRTFISICA)             
 TEXT('PSFCFG per PRTFISICA') 

Ed infine si crea la device che innescherà la trasformazione utilizzando l’oggetto *PSFCFG e invierà la stampa alla stampante fisica

CRTDEVPRT DEVD(PRTPDF)                                 
 PORT(12501)                    //scegliere una porta libera sul Vostro "i" con comando NETSTAT OPTION(*CNN)                                      
 FONT(011 *NONE)                                  
 FORMFEED(*AUTOCUT)                              
 RMTLOCNAME('127.0.0.1')                          
 USRDFNOBJ(QGPL/PRTPDF *PSFCFG)               
 TEXT('Stampante virtuale pdf') 

A questo punto non resta che rilasciare lo spool sulla stampante PRTPDF e verificare che lo spool venga stampato correttamente su carta.

NB: occorre fare attenzione al fatto che se il QSYSPRT ha il parametro HOLD impostato a *YES il rilascio sulla seconda coda di output dovrà avvenire manualmente: il sistema attenderà il rilascio da parte dell’utente per inviare lo stream alla stampante fisica.

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

Recent Posts

VsCode Extension: Bob Cozzi’s RPG IV to RPG Free Conversion

L’estensione “RPG IV to Free Format Conversion” sviluppata da Bob Cozzi (Cozzi Research) è pensata per semplificare la conversione di…

5 mesi ago

IBM i & SQL Tips #010 – Localizzare programmi nella Call Stack con STACK_INFO

Ciao a tutti, oggi voglio segnalarvi un altro interessante contributo di Massimo Duca, parte della sua ormai nota serie IBM…

5 mesi ago

Display file DDS Edit per VsCode, nuova preview.

Incuriosito da alcuni messaggi di Cristian Larsen su Linkedin (New Release - Display File DDS Edit v.0.10.1) ho voluto scaricare…

6 mesi ago

Project Bob: il nuovo strumento AI di IBM per sviluppo COBOL su IBM Z e RPG su IBM i

Ciao a tutti,oggi voglio segnalarvi un annuncio che potrebbe segnare una svolta per lo sviluppo applicativo su ambienti IBM: Project…

6 mesi ago

IBM i & SQL Tips #6: chiamare API REST e analizzare le risposte JSON con SQL

Voglio segnalarvi un nuovo articolo molto interessante di Massimo Duca nella serie IBM i & SQL Tips. In questo sesto…

6 mesi ago

Come funziona il passaggio di parametri a un programma IBM i (RPG / Cobol)

Ciao a tutti, voglio segnalarvi un post molto utile di Marco Riva sul suo sito Markonetools, in cui spiega in…

6 mesi ago