SET PATH *LIBL ; CREATE OR REPLACE PROCEDURE CISTOOLS.REVIEW_JOURNAL ( IN FILE_NAME VARCHAR(128) , IN JOURNAL_NAME VARCHAR(128) , IN FILE_LIBRARY VARCHAR(128) DEFAULT NULL , IN JOURNAL_LIBRARY VARCHAR(128) DEFAULT 'MPXJRN' , IN FROM_DATE DATE DEFAULT NULL , IN COLUMN_LIST VARCHAR(1024) DEFAULT 'ALL' , IN WHERE_CLAUSE VARCHAR(2056) DEFAULT NULL ) DYNAMIC RESULT SETS 1 LANGUAGE SQL SPECIFIC CISTOOLS.REVIEW_JOURNAL NOT DETERMINISTIC MODIFIES SQL DATA CALLED ON NULL INPUT PROGRAM TYPE SUB SET OPTION ALWBLK = *ALLREAD , ALWCPYDTA = *OPTIMIZE , COMMIT = *NONE , DBGVIEW = *SOURCE , DECRESULT = (31, 31, 00) , DYNDFTCOL = *NO , DYNUSRPRF = *USER , SRTSEQ = *HEX BEGIN DECLARE START_POSITION , COLUMN_BUFFER INTEGER ; DECLARE PAD VARCHAR ( 3 ) DEFAULT ', ' ; DECLARE JOURNAL_CUR CURSOR WITH RETURN TO CALLER FOR SQL_STMT ; DECLARE CONTINUE HANDLER FOR SQLEXCEPTION BEGIN END ; IF FROM_DATE IS NULL THEN SET FROM_DATE = CURRENT_DATE - 7 DAYS ; END IF ; SET SQL_STATEMENT = STRIP_SPACES ( 'Select Entry_TimeStamp, Journal_Code , Case Journal_Entry_Type When ''PT'' Then ''Insert'' When ''PX'' Then ''Insert By RRN'' When ''UB'' Then ''Update Before'' When ''UP'' Then ''Update After'' When ''DL'' Then ''Delete'' Else Journal_Entry_Type End As JrnType, Job_Name, Job_User, Job_Number , Program_Name, Program_Library ' ) ; SET START_POSITION = 1 ; IF FILE_LIBRARY IS NULL OR TRIM ( FILE_LIBRARY ) = '' THEN SET FILE_LIBRARY = ( SELECT SYSTEM_SCHEMA_NAME FROM QSYS2 . LIBLIST B JOIN SYSTABLES ON SYSTEM_SCHEMA_NAME = TABLE_SCHEMA AND FILE_NAME = TABLE_NAME ORDER BY B . ORDINAL_POSITION LIMIT 1 ) ; END IF ; FOR SELECT TABLE_SCHEMA AS SYSTEM_TABLE_SCHEMA , COLUMN_NAME , COLUMN_HEADING ,A . ORDINAL_POSITION , DATA_TYPE , LENGTH AS FIELD_LENGTH , COALESCE ( NUMERIC_SCALE , 0 ) AS NUMERIC_SCALE , STORAGE , COALESCE ( CCSID , 0 ) AS FIELD_CCSID FROM QSYS2 . SYSCOLUMNS A WHERE TABLE_SCHEMA = FILE_LIBRARY AND FILE_NAME = TABLE_NAME ORDER BY A . ORDINAL_POSITION DO SET COLUMN_BUFFER = CASE DATA_TYPE WHEN 'DATE' THEN 10 WHEN 'TIME' THEN 8 WHEN 'TIMESTMP' THEN 26 ELSE STORAGE END ; IF COLUMN_LIST = 'ALL' OR LOCATE ( TRIM ( UPPER ( COLUMN_NAME ) ) , UPPER ( COLUMN_LIST ) ) > 0 THEN SET SQL_STATEMENT = TRIM ( SQL_STATEMENT ) || PAD || 'Interpret(SubStr(Entry_Data' || PAD || VARCHAR ( START_POSITION ) || PAD || VARCHAR ( COLUMN_BUFFER ) || ') As ' || TRIM ( CASE DATA_TYPE WHEN 'DATE' THEN 'Varchar(10)' WHEN 'TIME' THEN 'Varchar(8)' WHEN 'TIMESTMP' THEN 'Varchar(26)' WHEN 'FLOAT' THEN CASE FIELD_LENGTH WHEN 16 THEN 'Float' WHEN 8 THEN 'Double' WHEN 4 THEN 'Real' END ELSE DATA_TYPE END ) ; SET SQL_STATEMENT = TRIM ( SQL_STATEMENT ) || CASE WHEN DATA_TYPE IN ( 'CHAR' , 'VARCHAR' , 'BINARY' ) THEN ' (' || VARCHAR ( FIELD_LENGTH ) || ')' WHEN DATA_TYPE IN ( 'DECIMAL' , 'NUMERIC' ) THEN ' (' || VARCHAR ( FIELD_LENGTH) || PAD || VARCHAR ( NUMERIC_SCALE ) || ')' END || ')' ; SET SQL_STATEMENT = TRIM ( SQL_STATEMENT ) || ' As ' || TRIM ( COLUMN_NAME ) ;END IF ; SET START_POSITION = START_POSITION + COLUMN_BUFFER ; END FOR ; SET SQL_STATEMENT = TRIM ( SQL_STATEMENT ) || ' From Table ( Qsys2.Display_Journal(Journal_Library => ''' || TRIM ( JOURNAL_LIBRARY ) || ''', Journal_Name => ''' || TRIM ( JOURNAL_NAME ) || ''',' || 'Starting_Receiver_Name => ''*CURAVLCHN'', Journal_Codes => ''R'',' || 'Object_Library => ''' || TRIM ( FILE_LIBRARY ) || ''', Object_Name => ''' || TRIM ( FILE_NAME ) || ''', Object_Member => ''*ALL'',' || 'Object_Objtype => ''*FILE'')) Where Entry_Timestamp > Date(''' || FROM_DATE ||''')' ; IF WHERE_CLAUSE IS NOT NULL THEN SET WHERE_CLAUSE = CASE WHEN LOWER ( SUBSTR ( TRIM ( WHERE_CLAUSE ) , 1 , 5 ) ) = 'where' THEN TRIM ( WHERE_CLAUSE ) ELSE ' Where ' || WHERE_CLAUSE END ; SET SQL_STATEMENT = 'Select * From Table(' || SQL_STATEMENT || ')' || WHERE_CLAUSE ; END IF ; SET SQL_STATEMENT = SQL_STATEMENT || ' For Read Only' ; PREPARE SQL_STMT FROM SQL_STATEMENT ; OPEN JOURNAL_CUR ; END ; COMMENT ON PARAMETER SPECIFIC PROCEDURE CISTOOLS.REVIEW_JOURNAL ( FILE_NAME IS 'File Name' , JOURNAL_NAME IS 'Journal Name' , FILE_LIBRARY IS 'File Library' , JOURNAL_LIBRARY IS 'Journal Library' , FROM_DATE IS 'From Date' , COLUMN_LIST IS 'Column List' , WHERE_CLAUSE IS 'Where Clause' ) ; GRANT ALTER , EXECUTE ON SPECIFIC PROCEDURE CISTOOLS.REVIEW_JOURNAL TO AMAPICS WITH GRANT OPTION ; GRANT EXECUTE ON SPECIFIC PROCEDURE CISTOOLS.REVIEW_JOURNAL TO PUBLIC ;