Update Function CYMD2DATE

This commit is contained in:
2026-02-25 23:00:49 +00:00
parent fd60a90744
commit a13c1af805

View File

@@ -1 +1,52 @@
@<EFBFBD>kkkk@^@
SET PATH "QSYS","QSYS2","SYSPROC","SYSIBMADM","QTEMP" ;
CREATE OR REPLACE FUNCTION CISTOOLS.CYMD2DATE (
CYMD_DATE NUMERIC(7, 0) DEFAULT 0 )
RETURNS DATE
LANGUAGE SQL
SPECIFIC CISTOOLS.CYMD2DATE
NOT DETERMINISTIC
MODIFIES SQL DATA
CALLED ON NULL INPUT
SET OPTION ALWBLK = *ALLREAD ,
ALWCPYDTA = *OPTIMIZE ,
COMMIT = *NONE ,
DBGVIEW = *SOURCE ,
DECRESULT = (31, 31, 00) ,
DFTRDBCOL = QTEMP ,
DYNDFTCOL = *NO ,
DYNUSRPRF = *USER ,
SRTSEQ = *HEX
BEGIN
DECLARE CHAR_DATE CHAR ( 8 ) ;
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION RETURN NULL ;
SET CHAR_DATE =
CASE
WHEN
LEFT ( LPAD ( CYMD_DATE , 7 , '0' ) , 1 ) = '0'
THEN '19' || RIGHT ( LPAD ( CYMD_DATE , 7 , '0' ) , 6 )
WHEN
LEFT ( LPAD ( CYMD_DATE , 7 , '0' ) , 2 ) >= '1'
THEN
( INT ( LEFT ( LPAD ( CYMD_DATE , 7 , '0' ) , 1 ) ) + 19 ) ||
RIGHT ( LPAD ( CYMD_DATE , 7 , '0' ) , 6 )
END ;
-- TO_DATE will validate the date and throw exception if invalid
-- Exception handler will catch and return NULL
RETURN TO_DATE ( CHAR_DATE , 'YYYYMMDD' ) ;
END ;
COMMENT ON PARAMETER SPECIFIC FUNCTION CISTOOLS.CYMD2DATE
( CYMD_DATE IS 'CYMD Date Format' ) ;
LABEL ON SPECIFIC FUNCTION CISTOOLS.CYMD2DATE
IS 'Cymd To Date' ;
GRANT ALTER , EXECUTE
ON SPECIFIC FUNCTION CISTOOLS.CYMD2DATE
TO AMAPICS WITH GRANT OPTION ;
GRANT EXECUTE
ON SPECIFIC FUNCTION CISTOOLS.CYMD2DATE
TO PUBLIC ;