Code:
- Create Function Retrieve_Program_Information(
- …
- Input parms…
- …
- )
- Returns Table
- (
- …
- )
- external name 'ROB/UDTF000001(RETRIEVE_PROGRAM_INFORMATION)'
- language rpgle
- parameter style db2sql
- not deterministic
- disallow parallel
- ;
-
- This program, being SQLRPGLE, does have it’s own SQL. It has a cursor for reading from an IBM service.
- begsr doOpen;
- //
- if object_type = '*ALL' or object_type='ALL';
- object_type_list = '*PGM, *SRVPGM';
- ELSE;
- object_type_list = object_type;
- ENDIF;
- cursor_statement =
- 'select objlib, objname, objtype +
- from table(QSYS2.OBJECT_STATISTICS(?, ?';
- // library_name + ''', ''' +
- // object_type_list +'';
- if n_object_name = parm_notnull;
- cursor_statement += ', ?';
- // object_name +'';
- ENDIF;
- cursor_statement += ')) as x';
- exec sql PREPARE P1 from :cursor_statement;
- exec sql DECLARE Obj cursor for P1;
- if n_object_name = parm_notnull;
- exec sql OPEN Obj using :library_name, :object_type_list, :object_name;
- else;
- exec sql OPEN Obj using :library_name, :object_type_list;
- endif;
- sql_state = sqlstate;
- ENDSR;
-
- begsr doFetch;
- exec sql fetch Obj into :Obj_objlib, :Obj_objname, :Obj_objtype;
- sql_state = sqlstate;
- if sqlstate='02000';
- exsr ErrorParm;
- errorMsg='';
- return;
- ENDIF;
- exsr ExtractProgramInformation;
- If ERRC0100.BytesAvail > 0;
- exsr ErrorParm;
- sql_state = '38999';
- errorMsg = 'Unable to retrieve information for ' +
- %trim(Obj_objname) + ' in ' +
- %trim(Obj_objlib) + ' of type '+
- Obj_objtype + '. ' +
- errc0100.ExceptionId + ': ' +
- errc0100.ExceptData;
- ENDIF;
- ENDSR;
-
|
|