midrange.com code scratchpad
Name:
SQLRPGLE UDTF
Scriptlanguage:
Plain Text
Tabwidth:
4
Date:
08/12/2019 05:04:23 pm
IP:
Logged
Description:
Part 1 of 2.
Code:
  1. Create Function Retrieve_Program_Information(                       
  2. Input parms…
  3. )                                            
  4. Returns Table                                                       
  5. (                                                                   
  6. )                                                                   
  7. external name 'ROB/UDTF000001(RETRIEVE_PROGRAM_INFORMATION)'  
  8. language rpgle                                                      
  9. parameter style db2sql                                              
  10. not deterministic                                                   
  11. disallow parallel
  12. ;
  13.  
  14. This program, being SQLRPGLE, does have it’s own SQL.  It has a cursor for reading from an IBM service.
  15.   begsr doOpen;
  16.     //
  17.     if object_type = '*ALL' or object_type='ALL';
  18.       object_type_list = '*PGM, *SRVPGM';
  19.     ELSE;
  20.       object_type_list = object_type;
  21.     ENDIF;
  22.     cursor_statement =
  23.      'select objlib, objname, objtype +
  24.       from table(QSYS2.OBJECT_STATISTICS(?, ?';
  25.           // library_name + ''', ''' +
  26.           // object_type_list +'';
  27.     if n_object_name = parm_notnull;
  28.       cursor_statement += ', ?';
  29.       // object_name +'';
  30.     ENDIF;
  31.     cursor_statement += ')) as x';
  32.     exec sql PREPARE P1 from :cursor_statement;
  33.     exec sql DECLARE Obj cursor for P1;
  34.     if n_object_name = parm_notnull;
  35.       exec sql OPEN Obj using :library_name, :object_type_list, :object_name;
  36.     else;
  37.       exec sql OPEN Obj using :library_name, :object_type_list;
  38.     endif;
  39.     sql_state = sqlstate;
  40.   ENDSR;
  41.  
  42.   begsr doFetch;
  43.     exec sql fetch Obj into :Obj_objlib, :Obj_objname, :Obj_objtype;
  44.     sql_state = sqlstate;
  45.     if sqlstate='02000';
  46.       exsr ErrorParm;
  47.       errorMsg='';
  48.       return;
  49.     ENDIF;
  50.     exsr ExtractProgramInformation;
  51.     If ERRC0100.BytesAvail > 0;
  52.       exsr ErrorParm;
  53.       sql_state = '38999';
  54.       errorMsg = 'Unable to retrieve information for ' +
  55.                  %trim(Obj_objname) + ' in ' +
  56.                  %trim(Obj_objlib) + ' of type '+
  57.                  Obj_objtype + '. ' +
  58.                  errc0100.ExceptionId + ': ' +
  59.                  errc0100.ExceptData;
  60.     ENDIF;
  61.   ENDSR;
  62.  
© 2004-2019 by midrange.com generated in 0.006s valid xhtml & css