
Last Updated on 31 Ottobre 2019 by Roberto De Pedrini
Riagganciandomi al post di Massimo Duca Leggere spoolfile con SQL segnalo una tecnica semplice che permette di scoprire i dati dell’ultimo spoolfile generato.
Il sistema operativo ci mette a disposizione l’API QSPRILSP: basta una sola istruzione per avere tutte le informazioni e combinando le due tecniche (trovare lo spool ed elaborarlo con SQL) è possibile trasformare/migliorare l’output dei nostri programmi con pochi semplici passi.
Index
Esempio
Qui di seguito un esempio di come richiamare l’API con indicazione delle variabili che contengono i dati dello spool
* dichiarazione API e relativi parametri dgetLastSpoolId pr extpgm('QSPRILSP') d ReceiverVariable… d 1 options(*varsize) d ReceiverVariableLength… d 10i 0 const d FormatName 8 const d errorCode likeds(QUSEC) * variabili locali d wait s 1 * /copy dichiarazioni ds info per spoolfile e gestione errori /copy qsysinc/qrpglesrc,qsprilsp /copy qsysinc/qrpglesrc,qusec * inizializzazione dati errori QUSBPrv = 0; monitor; * ricerca ultimo spoolfile getLastSpoolId(QSPL0100 :%size(QSPL0100) :'SPRL0100' :QUSEC); on-error;clear QSPSN03;
clear QSPJN00;
clear QSPUN00;
clear QSPJNBR00;
clear QSPSNBR03;
endmon; * visualizzazione dati ultimo spool dsply ('Lavoro ' + %trimr(QSPJN00) + '/' + %trimr(QSPUN00) + '/' + QSPJNBR00); dsply ('Nome ultimo spoolfile ' + QSPSN03); dsply ('Numero ultimo spoolfile ' + %char(QSPSNBR03)) ' ' Wait; *inlr = *on; return;
L’istruzione monitor è stata inserita per poter gestire l’eventualità che il job non abbia generato spool.
Se al posto di visualizzare (dsply) il risultato della ricerca lo si passa ad un componente che legge lo spool e lo trasforma il gioco è fatto. Inoltre se il codice di questo esempio lo si trasforma in un componente con parametri di I/O lo si può riutilizzare tante tante volte.
Riferimenti
Per ulteriori informazioni è disponibile la documentazione ufficiale IBM (https://www.ibm.com/support/knowledgecenter/en/ssw_ibm_i_74/apis/QSPRILSP.htm)