01 - Programmazione01a - RPG

Ultimo spoolfile creato

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.

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)

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

About author

Head of Application development & Systems integration da sempre lavoro su "i". Programmatore, analista, project manager, sistemista, ... tanti cappelli ma un'unica piattaforma preferita. Collaboro con la community FAQ400 perchè credo fermamente nel lavoro di squadra e auspico una crescita continua e costante dell'ecosistema di cui mi sento parte.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *