Man kann sich auch mit einem Zweizeiler eine User Defined Table Function (UDTF) schreiben, die man dann immer wenn man sie braucht über SQL aufrufen und verarbeiten kann:

Code:
Create Or Replace Function YourLib/FindLibPGM           
       (ParPGM        VarChar(10))                  
       Returns Table (ObjLib       Char(10)     ,   
                      Obj          Char(10)     ,   
                      ObjDescr     Char(50)      )  
                        
       Language SQL                                 
       Modifies SQL Data                            
       Called On NULL Input                         
       Disallow Parallel                            
       Not Fenced                                   
 Begin                                                           
    Declare CLCmd VarChar(256) Not Null Default '';              
                                                                 
    Set CLCmd = 'DSPOBJD OBJ(*ALL/' concat Trim(ParPGM) concat ') '  
                 Concat  ' OBJTYPE(*PGM) '                      
                 Concat  ' OUTPUT(*OUTFILE) '                   
                 Concat  ' OUTFILE(QTEMP/TMPOBJD) '           
                 Concat  ' OUTMBR(*FIRST *REPLACE) ';           
                                                                
    Call QCMDEXC(CLCmd, Length(CLCmd));                         
                                                                
    Return Select ODLBNM, ODOBNM, ODOBTX
           From QTEMP/TMPOBJD;                                
End  ;
Wenn das Skript ordnungsgemäß ausgeführt wurde, d.h. die UDTF erstellt wurde, kann man sie von überall und jederzeit mit dem folgenden SQL-Befehl aufrufen:
Code:
select *
From Table(FindLibPgm('PGMNAME')) x;
Anstatt PGMNAME kann natürlich auch eine (Host-)Variable eingesetzt werden.

Birgitta