01 - Programmazione01a - RPG

Ultimo spoolfile creato

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)

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.

Rispondi

%d blogger hanno fatto clic su Mi Piace per questo: