midrange.com code scratchpad
Name:
DB2 for IBM i Date conversion table
Scriptlanguage:
SQL
Tabwidth:
4
Date:
11/10/2023 12:02:37 am
IP:
Logged
Description:
The user was to lazy to give a description
Code:
  1. --  Generate SQL 
  2. --  Version:                       V7R4M0 190621 
  3. --  Generated on:                  06/23/22 08:46:31 
  4. --  Relational Database:           DB2ICOE5 
  5. --  Standards Option:              Db2 for i 
  6. SET PATH *LIBL ; 
  7.   
  8. CREATE PROCEDURE QWQCENT.CREATE_DATE_TABLE ( 
  9.     IN THELIB VARCHAR(128) DEFAULT  'QWQCENT'  , 
  10.     IN THETABLE VARCHAR(126) DEFAULT  'DATE_DIM'  , 
  11.     IN START_YEAR INTEGER DEFAULT  ( QSYS2 . YEAR ( CURRENT_DATE ) )  , 
  12.     IN END_YEAR INTEGER DEFAULT  ( QSYS2 . YEAR ( CURRENT_DATE ) )  ) 
  13.     DYNAMIC RESULT SETS 1 
  14.     LANGUAGE SQL 
  15.     SPECIFIC QWQCENT.CRTDATTBL 
  16.     NOT DETERMINISTIC 
  17.     MODIFIES SQL DATA 
  18.     CALLED ON NULL INPUT 
  19.     SYSTEM_TIME SENSITIVE NO 
  20.     SET OPTION  ALWBLK = *ALLREAD , 
  21.     ALWCPYDTA = *OPTIMIZE , 
  22.     COMMIT = *NONE , 
  23.     DECRESULT = (31, 31, 00) , 
  24.     DFTRDBCOL = QWQCENT , 
  25.     DLYPRP = *NO , 
  26.     DYNDFTCOL = *NO , 
  27.     DYNUSRPRF = *USER , 
  28.     SRTSEQ = *HEX , 
  29.     TGTRLS = V7R3M0 , 
  30.     USRPRF = *USER   
  31.     BEGIN DECLARE D_SQL VARCHAR ( 10000 ) ; DECLARE MSG VARCHAR ( 100 ) ; DECLARE FINALVIEW VARCHAR ( 128 ) ; DECLARE FINALTABLE VARCHAR ( 128 ) ; DECLARE ERROR_OCCURRED INT ; DECLARE TERMINATE_ON_ERROR INT ; DECLARE NOT_FOUND INTEGER ; DECLARE C1 CURSOR FOR VALUES ( MSG ) ; DECLARE CONTINUE HANDLER FOR SQLEXCEPTION BEGIN IF TERMINATE_ON_ERROR = 1 THEN RESIGNAL ; END IF ; SET ERROR_OCCURRED = 1 ; END ; SET TERMINATE_ON_ERROR = 1 ; IF LOCATE ( '"' , THELIB ) = 0 THEN SET THELIB = UPPER ( THELIB ) ; END IF ; SET THELIB = TRIM ( THELIB ) ; IF THELIB NOT IN ( 'QTEMP' ) THEN SET NOT_FOUND = ( SELECT COUNT ( * ) FROM TABLE ( QSYS2 . OBJECT_STATISTICS ( THELIB , '*LIB' ) ) X ) ; IF NOT_FOUND = 0 THEN SET D_SQL = SUBSTR ( 'Data library not found: ' CONCAT THELIB , 1 , 72 ) ; SIGNAL SQLSTATE '75001' SET MESSAGE_TEXT = D_SQL ; END IF ; END IF ; IF LOCATE ( '"' , THETABLE ) = 0 THEN SET FINALVIEW = TRIM ( UPPER ( THETABLE ) ) ; ELSE SET FINALVIEW = TRIM ( THETABLE ) ; END IF ; IF FINALVIEW = '' OR FINALVIEW IS NULL THEN SET FINALVIEW = 'DATE_DIM' ; END IF ; SET FINALTABLE = CASE WHEN SUBSTR ( FINALVIEW , LENGTH ( FINALVIEW ) , 1 ) = '"' THEN SUBSTR ( FINALVIEW , 1 , LENGTH ( FINALVIEW ) - 1 ) CONCAT '_T"' ELSE FINALVIEW CONCAT '_T' END ; SET NOT_FOUND = ( SELECT COUNT ( * ) FROM QSYS2 . SYSTABLES WHERE TABLE_SCHEMA = THELIB AND TABLE_NAME = FINALVIEW ) ; IF NOT_FOUND > 0 THEN SET D_SQL = SUBSTR ( 'File already exists: ' CONCAT THELIB CONCAT '/' CONCAT FINALVIEW , 1 , 72 ) ; SIGNAL SQLSTATE '75001' SET MESSAGE_TEXT = D_SQL ; END IF ; SET NOT_FOUND = ( SELECT COUNT ( * ) FROM QSYS2 . SYSTABLES WHERE TABLE_SCHEMA = THELIB AND TABLE_NAME = FINALTABLE ) ; IF NOT_FOUND > 0 THEN SET D_SQL = SUBSTR ( 'File already exists: ' CONCAT THELIB CONCAT '/' CONCAT FINALTABLE , 1 , 72 ) ; SIGNAL SQLSTATE '75001' SET MESSAGE_TEXT = D_SQL ; END IF ; IF START_YEAR < 1 THEN SIGNAL SQLSTATE '75001' SET MESSAGE_TEXT = 'Start Year must be 1 or higher' ; END IF ; IF END_YEAR > 9999 THEN SIGNAL SQLSTATE '75001' SET MESSAGE_TEXT = 'End Year must be 9999 or lower' ; END IF ; IF START_YEAR > END_YEAR THEN SIGNAL SQLSTATE '75001' SET MESSAGE_TEXT = 'Start Year must not be larger than End Year' ; END IF ; IF THELIB IN ( 'QTEMP' ) THEN SET TERMINATE_ON_ERROR = 0 ; SET D_SQL = 'DROP TABLE ' CONCAT THELIB CONCAT '.' CONCAT FINALVIEW ; PREPARE DROP_1 FROM D_SQL ; EXECUTE DROP_1 ; SET D_SQL = 'DROP TABLE ' CONCAT THELIB CONCAT '.' CONCAT FINALTABLE ; PREPARE DROP_2 FROM D_SQL ; EXECUTE DROP_2 ; SET TERMINATE_ON_ERROR = 1 ; END IF ; SET D_SQL = 'CREATE TABLE ' CONCAT THELIB CONCAT '.' CONCAT FINALTABLE CONCAT ' (     DATEKEY DATE NOT NULL PRIMARY KEY,     "YEARINTEGER NOT NULL ,     "QUARTER" INTEGER NOT NULL  CHECK("QUARTER" BETWEEN 1 AND 4),     "MONTHINTEGER NOT NULL  CHECK("MONTHBETWEEN 1 AND 12),     "DAYINTEGER NOT NULL  CHECK("DAYBETWEEN 1 AND 31),     "WEEK" INTEGER NOT NULL  CHECK("WEEK" BETWEEN 1 AND 54),     DAY_OF_WEEK FOR COLUMN DOW INTEGER NOT NULL  CHECK(DAY_OF_WEEK BETWEEN 1 AND 7),     DAY_OF_YEAR FOR COLUMN DOY INTEGER NOT NULL  CHECK(DAY_OF_YEAR BETWEEN 1 AND 366),            WEEK_STARTING_DATE FOR COLUMN  WEEK_SD DATE NOT NULL,            WEEK_ENDING_DATE FOR COLUMN  WEEK_ED DATE NOT NULL,     FISCAL_YEAR FOR COLUMN FIS_YR INTEGER NOT NULL ,     FISCAL_QUARTER FOR COLUMN FIS_QTR  INTEGER NOT  NULL CHECK(FISCAL_QUARTER BETWEEN 1 AND 4),     FISCAL_MONTH  FOR COLUMN FIS_MTH INTEGER NOT  NULL CHECK(FISCAL_MONTH BETWEEN 1 AND 12),     YEAR_ISO INTEGER NOT NULL ,     WEEK_ISO INTEGER NOT NULL CHECK(WEEK_ISO  BETWEEN 1 AND 54),     DAY_OF_WEEK_ISO FOR COLUMN DOW_ISO INTEGER  NOT NULL CHECK(DAY_OF_WEEK_ISO BETWEEN 1 AND 7),            WEEK_STARTING_DATE_ISO  FOR COLUMN  WEEK_SDI DATE NOT NULL,            WEEK_ENDING_DATE_ISO  FOR COLUMN  WEEK_EDI DATE NOT NULL,     MONTH_NAME CHAR(13) NOT NULL,     DAY_NAME CHAR(13) NOT NULL,            ORDINAL_DOW  FOR COLUMN ORD_DOW INT  NOT NULL CHECK(ORDINAL_DOW BETWEEN 1 AND 5),     MONTH_ABBREVIATION  FOR COLUMN MONTH_ABV  CHAR(3) NOT NULL,            QUARTER_NAME FOR COLUMN QTR_NAM  CHAR(6) NOT NULL,     NORTHERN_SEASON  FOR COLUMN SEASON_N  CHAR(6) NOT NULL,     SOUTHERN_SEASON  FOR COLUMN SEASON_S  CHAR(6) NOT NULL,     HOLIDAY_FLAG FOR COLUMN HOLIDAY CHAR(1) NOT NULL CHECK(HOLIDAY_FLAG IN (''Y'', ''N'')),     WEEKEND_FLAG FOR COLUMN WEEKEND CHAR(1) NOT NULL CHECK(WEEKEND_FLAG IN (''Y'', ''N'')),     LEAP_YEAR CHAR(1) NOT NULL CHECK(LEAP_YEAR  IN (''Y'', ''N'')),     DATE_DELIMITED_US FOR COLUMN DATE_D_US CHAR(10)  NOT NULL ,     DATE_DELIMITED_EU FOR COLUMN DATE_D_EU CHAR(10)  NOT NULL ,  ISO_WEEK_DATE  FOR COLUMN ISO_WD CHAR(10) NOT NULL,     YYYYMMDD_CHAR  FOR COLUMN YYYYMMDD_C CHAR(8)  NOT NULL UNIQUE,   YYYYMMDD_DEC  FOR COLUMN YYYYMMDD_D  DECIMAL(8, 0)  NOT NULL UNIQUE,   YYYYMMDD_NUM  FOR COLUMN YYYYMMDD_N NUMERIC(8, 0)  NOT NULL UNIQUE,     YYMMDD_CHAR FOR COLUMN YYMMDD_C CHAR(6) UNIQUE,     YYMMDD_DEC DECIMAL(6, 0)  UNIQUE,     YYMMDD_NUM NUMERIC(6, 0)  UNIQUE,     DDMMYYYY_CHAR FOR COLUMN DDMMYYYY_C CHAR(8) NOT  NULL UNIQUE,   DDMMYYYY_DEC FOR COLUMN DDMMYYYY_D DECIMAL(8) NOT  NULL UNIQUE,   DDMMYYYY_NUM FOR COLUMN DDMMYYYY_N NUMERIC(8) NOT  NULL UNIQUE,     DDMMYY_CHAR FOR COLUMN DDMMYY_C CHAR(6) UNIQUE,     DDMMYY_DEC DECIMAL(6) UNIQUE,     DDMMYY_NUM NUMERIC(6) UNIQUE,     MMDDYYYY_CHAR FOR COLUMN MMDDYYYY_C CHAR(8) NOT  NULL UNIQUE,   MMDDYYYY_DEC FOR COLUMN MMDDYYYY_D DECIMAL(8, 0)  NOT NULL UNIQUE,     MMDDYYYY_NUM FOR COLUMN MMDDYYYY_N NUMERIC(8, 0)  NOT NULL UNIQUE,     MMDDYY_CHAR FOR COLUMN MMDDYY_C CHAR(6) UNIQUE,     MMDDYY_DEC DECIMAL(6, 0) UNIQUE,     MMDDYY_NUM NUMERIC(6, 0) UNIQUE,   CYYMMDD_CHAR FOR COLUMN CYYMMD_C CHAR(7) UNIQUE,      CYYMMDD_DEC FOR COLUMN CYYMMD_D DECIMAL(7, 0)  UNIQUE,   CYYMMDD_NUM FOR COLUMN CYYMMD_N NUMERIC(7,0) UNIQUE,  JULIAN_YYYYDDD_CHAR FOR COLUMN JYYYYDDD_C CHAR(7)  NOT NULL UNIQUE,     JULIAN_YYYYDDD_DEC FOR COLUMN JYYYYDDD_D  DECIMAL(7, 0) NOT NULL UNIQUE,     JULIAN_YYYYDDD_NUM FOR COLUMN JULIAN  NUMERIC(7, 0) NOT NULL UNIQUE,   JULIAN_CYYDDD_CHAR FOR COLUMN JCYYDDD_C  CHAR(6) UNIQUE,    JULIAN_CYYDDD_DEC FOR COLUMN JCYYDDD_D  DECIMAL(6, 0) UNIQUE,   JULIAN_CYYDDD_NUM FOR COLUMN JCYYDDD_N  NUMERIC(6, 0) UNIQUE,   C_FLAG_CHAR FOR COLUMN C_FLAG_C CHAR(1) ,    C_FLAG_DEC DECIMAL(1,0) ,   C_FLAG_NUM NUMERIC(1,0) ,   CC_CHAR CHAR(2) NOT NULL,      CC_DEC DECIMAL(2, 0) NOT NULL,     CC_NUM NUMERIC(2, 0) NOT NULL,   YYYY_CHAR CHAR(4) NOT NULL,   YYYY_DEC DECIMAL(4,0) NOT NULL,   YYYY_NUM NUMERIC(4,0) NOT NULL,   YY_CHAR CHAR(2) NOT NULL,   YY_DEC DECIMAL(2,0) NOT NULL,   YY_NUM NUMERIC(2,0) NOT NULL,   MM_CHAR CHAR(2) NOT NULL,   MM_DEC DECIMAL(2,0) NOT NULL,   MM_NUM NUMERIC(2,0) NOT NULL,   DD_CHAR CHAR(2) NOT NULL,   DD_DEC DECIMAL(2,0) NOT NULL,   DD_NUM NUMERIC(2,0) NOT NULL,     EXCEL_DATE INTEGER UNIQUE,     UNIQUE ("YEAR", "MONTH", "DAY"),     UNIQUE (FISCAL_YEAR, FISCAL_MONTH, "DAY")) ' ; PREPARE CREATE_1 FROM D_SQL ; EXECUTE CREATE_1 ; SET D_SQL = 'LABEL ON TABLE ' CONCAT THELIB CONCAT '.' CONCAT FINALTABLE CONCAT ' IS ''Date Dimension Table - IBM v1''' ; PREPARE LABEL_1 FROM D_SQL ; EXECUTE LABEL_1 ; SET D_SQL = 'LABEL ON COLUMN ' CONCAT THELIB CONCAT '.' CONCAT FINALTABLE CONCAT '(DATEKEY IS ''Date'' ,"YEARIS ''Year'' ,"QUARTER" IS ''Quarter'' ,"MONTHIS ''Month'' ,"DAYIS ''Day'' ,"WEEK" IS ''Week'' ,DAY_OF_WEEK IS ''Day of the Week'' ,DAY_OF_YEAR IS ''Day of the Year'' ,WEEK_STARTING_DATE IS ''First Day of the Week'' ,WEEK_ENDING_DATE IS ''Last Day of the Week'' ,FISCAL_YEAR IS ''Fiscal Year'' ,FISCAL_QUARTER IS ''Fiscal Quarter'' ,FISCAL_MONTH IS ''Fiscal Month'' ,YEAR_ISO IS ''ISO Year'' ,WEEK_ISO IS ''ISO Week'' ,DAY_OF_WEEK_ISO IS ''ISO Day  of the Week'' ,WEEK_STARTING_DATE_ISO IS  ''ISO First Day of the Week'' ,WEEK_ENDING_DATE_ISO IS ''ISO Last Day of the Week'' ,MONTH_NAME IS ''Month Name'' ,DAY_NAME IS ''Day Name'' ,ORDINAL_DOW IS ''Day Name of the Month'' ,MONTH_ABBREVIATION IS ''Month Short Name'' ,QUARTER_NAME IS ''Quarter Name'' ,NORTHERN_SEASON IS ''Northern Season'' ,SOUTHERN_SEASON IS ''Southern Season'' ,HOLIDAY_FLAG IS ''Holiday'' ,WEEKEND_FLAG IS ''Weekend Day'' ,LEAP_YEAR IS ''Leap Year'' ,DATE_DELIMITED_US IS ''Date - US Format'' ,DATE_DELIMITED_EU IS ''Date - EU Format'' ,ISO_WEEK_DATE IS ''Date - ISO Format'' )' ; PREPARE LABEL_2 FROM D_SQL ; EXECUTE LABEL_2 ; SET D_SQL = 'LABEL ON COLUMN ' CONCAT THELIB CONCAT '.' CONCAT FINALTABLE CONCAT '(DATEKEY TEXT IS ''Date'' ,"YEARTEXT IS ''Year'' ,"QUARTER" TEXT IS ''Quarter'' ,"MONTHTEXT IS ''Month'' ,"DAYTEXT IS ''Day'' ,"WEEK" TEXT IS ''Week'' ,DAY_OF_WEEK TEXT IS ''Day of the Week'' ,DAY_OF_YEAR TEXT IS ''Day of the Year'' ,WEEK_STARTING_DATE TEXT IS ''First Day of the Week'' ,WEEK_ENDING_DATE TEXT IS ''Last Day of the Week'' ,FISCAL_YEAR TEXT IS ''Fiscal Year'' ,FISCAL_QUARTER TEXT IS ''Fiscal Quarter'' ,FISCAL_MONTH TEXT IS ''Fiscal Month'' ,YEAR_ISO TEXT IS ''ISO Year'' ,WEEK_ISO TEXT IS ''ISO Week'' ,DAY_OF_WEEK_ISO TEXT IS ''ISO Day of the Week'' ,WEEK_STARTING_DATE_ISO TEXT IS  ''ISO First Day of the Week'' ,WEEK_ENDING_DATE_ISO TEXT IS  ''ISO Last Day of the Week'' ,MONTH_NAME TEXT IS ''Month Name'' ,DAY_NAME TEXT IS ''Day Name'' ,ORDINAL_DOW TEXT IS ''Day Name of the Month'' ,MONTH_ABBREVIATION TEXT IS ''Month Short Name'' ,QUARTER_NAME TEXT IS ''Quarter Name'' ,NORTHERN_SEASON TEXT IS ''Northern Season'' ,SOUTHERN_SEASON TEXT IS ''Southern Season'' ,HOLIDAY_FLAG TEXT IS ''Holiday'' ,WEEKEND_FLAG TEXT IS ''Weekend Day'' ,LEAP_YEAR TEXT IS ''Leap Year'' ,DATE_DELIMITED_US TEXT IS ''Date - US Format'' ,DATE_DELIMITED_EU TEXT IS ''Date - EU Format'' ,ISO_WEEK_DATE TEXT IS ''Date - ISO Format'' )' ; PREPARE LABEL_3 FROM D_SQL ; EXECUTE LABEL_3 ; SET D_SQL = 'CREATE VIEW ' CONCAT THELIB CONCAT '.' CONCAT FINALVIEW CONCAT ' AS SELECT ' CONCAT 'DATEKEY ,"YEAR" ,"QUARTER" ,"MONTH" ,"DAY" ,"WEEK" ,DAY_OF_WEEK ,DAY_OF_YEAR ,WEEK_STARTING_DATE ,WEEK_ENDING_DATE ,FISCAL_YEAR ,FISCAL_QUARTER ,FISCAL_MONTH ,YEAR_ISO ,WEEK_ISO ,DAY_OF_WEEK_ISO ,WEEK_STARTING_DATE_ISO ,WEEK_ENDING_DATE_ISO ,MONTH_NAME ,DAY_NAME ,ORDINAL_DOW ,MONTH_ABBREVIATION ,QUARTER_NAME ,NORTHERN_SEASON ,SOUTHERN_SEASON ,HOLIDAY_FLAG ,WEEKEND_FLAG ,LEAP_YEAR ,DATE_DELIMITED_US ,DATE_DELIMITED_EU ,ISO_WEEK_DATE ' CONCAT ', CHAR(CASE WHEN DATEKEY = CURRENT DATE  THEN ''Y'' ELSE ''N'' END) CURRENT_DAY   , CHAR(CASE WHEN DATEKEY = CURRENT DATE - 1 DAY  THEN ''Y'' ELSE ''N'' END) PREVIOUS_DAY   , CHAR(CASE WHEN DATEKEY <= CURRENT DATE AND  "YEAR" = YEAR(CURRENT DATETHEN ''Y''  ELSE ''N'' END) CURRENT_YTD   , CHAR(CASE WHEN DATEKEY <= CURRENT DATE - 1 YEAR  AND "YEAR" = YEAR(CURRENT DATE) - 1 THEN  ''Y'' ELSE ''N'' END) CURRENT_YTD_LAST_YEAR   , CHAR(CASE WHEN "WEEK" = WEEK(CURRENT DATEAND "YEAR" = YEAR(CURRENT DATETHEN  ''Y'' ELSE ''N'' END) CURRENT_WEEK   , CHAR(CASE WHEN "WEEK" = WEEK(CURRENT DATE - 7  DAYS) AND "YEAR" = YEAR(CURRENT DATE - 7  DAYS) THEN ''Y'' ELSE ''N'' END) PREVIOUS_WEEK, CHAR(CASE WHEN "MONTH" = MONTH(CURRENT DATEAND  "YEAR" = YEAR(CURRENT DATETHEN   ''Y'' ELSE ''N'' END) CURRENT_MONTH   , CHAR(CASE WHEN "MONTH" = MONTH(CURRENT DATE- 1  MONTHAND "YEAR" = YEAR(CURRENT DATE -  1 MONTHTHEN ''Y'' ELSE ''N'' END) PREVIOUS_MONTH   , CHAR(CASE WHEN "QUARTER" = QUARTER(CURRENT DATE ) AND "YEAR" = YEAR(CURRENT DATE)  THEN ''Y'' ELSE ''N'' END) CURRENT_QUARTER   , CHAR(CASE WHEN "QUARTER" = QUARTER(CURRENT DATE  - 3 MONTHS) AND "YEAR" = YEAR(CURRENT DATE -   3 MONTHS) THEN ''Y'' ELSE ''N'' END) PREVIOUS_QUARTER  , CHAR(CASE WHEN "YEAR" = YEAR(CURRENT DATETHEN  ''Y'' ELSE ''N'' END) CURRENT_YEAR   , CHAR(CASE WHEN "YEAR" = YEAR(CURRENT DATE - 1  YEARTHEN ''Y'' ELSE ''N'' END) PREVIOUS_YEAR   , CHAR(CASE WHEN DATEKEY = CURRENT DATE - 1 YEAR  THEN ''Y'' ELSE ''N'' END) CURRENT_DAY_LAST_YEAR   , CHAR(CASE WHEN "WEEK" = WEEK(CURRENT DATE -  1 YEARAND "YEAR" = YEAR(CURRENT DATE - 1 YEAR)  THEN ''Y'' ELSE ''N'' END) CURRENT_WEEK_LAST_YEAR   , CHAR(CASE WHEN "MONTH" = MONTH(CURRENT DATE -  1 YEARAND "YEAR" = YEAR(CURRENT DATE - 1 YEAR)  THEN ''Y'' ELSE ''N'' END) CURRENT_MONTH_LAST_YEAR   , CHAR(CASE WHEN "QUARTER" = QUARTER( CURRENT DATE - 1 YEARAND "YEAR" =  YEAR(CURRENT DATE - 1 YEARTHEN ''Y''  ELSE ''N'' END) CURRENT_QUARTER_LAST_YEAR ' CONCAT ' ,YYYYMMDD_CHAR ,YYYYMMDD_DEC ,YYYYMMDD_NUM ,YYMMDD_CHAR ,YYMMDD_DEC ,YYMMDD_NUM ,DDMMYYYY_CHAR ,DDMMYYYY_DEC ,DDMMYYYY_NUM ,DDMMYY_CHAR ,DDMMYY_DEC ,DDMMYY_NUM ,MMDDYYYY_CHAR ,MMDDYYYY_DEC ,MMDDYYYY_NUM ,MMDDYY_CHAR ,MMDDYY_DEC ,MMDDYY_NUM ,CYYMMDD_CHAR ,CYYMMDD_DEC ,CYYMMDD_NUM ,JULIAN_YYYYDDD_CHAR ,JULIAN_YYYYDDD_DEC ,JULIAN_YYYYDDD_NUM ,JULIAN_CYYDDD_CHAR ,JULIAN_CYYDDD_DEC ,JULIAN_CYYDDD_NUM ,C_FLAG_CHAR ,C_FLAG_DEC ,C_FLAG_NUM ,CC_CHAR ,CC_DEC ,CC_NUM ,YYYY_CHAR ,YYYY_DEC ,YYYY_NUM ,YY_CHAR ,YY_DEC ,YY_NUM ,MM_CHAR ,MM_DEC ,MM_NUM ,DD_CHAR ,DD_DEC ,DD_NUM ,EXCEL_DATE ' CONCAT ' FROM ' CONCAT THELIB CONCAT '.' CONCAT FINALTABLE CONCAT ' A' ; PREPARE CREATE_2 FROM D_SQL ; EXECUTE CREATE_2 ; SET D_SQL = 'LABEL ON TABLE ' CONCAT THELIB CONCAT '.' CONCAT FINALVIEW CONCAT ' IS ''Date Dimension Table - IBM v1''' ; PREPARE LABELV_1 FROM D_SQL ; EXECUTE LABELV_1 ; SET D_SQL = 'LABEL ON COLUMN ' CONCAT THELIB CONCAT '.' CONCAT FINALVIEW CONCAT '(CURRENT_DAY IS ''Today'' ,PREVIOUS_DAY IS ''Yesterday'' ,CURRENT_YTD IS ''Part of Current Year to Date'' ,CURRENT_YTD_LAST_YEAR IS  ''Part of Last Year to Date'' ,CURRENT_WEEK IS ''Current Week'' ,PREVIOUS_WEEK IS ''Last Week'' ,CURRENT_MONTH IS ''Current Month'' ,PREVIOUS_MONTH IS ''Last Month'' ,CURRENT_QUARTER IS ''Current Quarter'' ,PREVIOUS_QUARTER IS ''Last Quarter'' ,CURRENT_YEAR IS ''Current Year'' ,PREVIOUS_YEAR IS ''Last Year'' ,CURRENT_DAY_LAST_YEAR IS  ''Same Day as Today Last Year'' ,CURRENT_WEEK_LAST_YEAR IS  ''Same Week as  Current Week  Last Year'' ,CURRENT_MONTH_LAST_YEAR IS  ''Same Month as Current Month Last Year'' ,CURRENT_QUARTER_LAST_YEAR IS  ''Same Quarter as Current Quarter Last Year'' )' ; PREPARE LABELV_2 FROM D_SQL ; EXECUTE LABELV_2 ; SET D_SQL = 'LABEL ON COLUMN ' CONCAT THELIB CONCAT '.' CONCAT FINALVIEW CONCAT '(CURRENT_DAY TEXT IS ''Today'' ,PREVIOUS_DAY TEXT IS ''Yesterday'' ,CURRENT_YTD TEXT IS ''Part of Current Year to Date'' ,CURRENT_YTD_LAST_YEAR TEXT IS  ''Part of Last Year to Date'' ,CURRENT_WEEK TEXT IS ''Current Week'' ,PREVIOUS_WEEK TEXT IS ''Last Week'' ,CURRENT_MONTH TEXT IS ''Current Month'' ,PREVIOUS_MONTH TEXT IS ''Last Month'' ,CURRENT_QUARTER TEXT IS ''Current Quarter'' ,PREVIOUS_QUARTER TEXT IS ''Last Quarter'' ,CURRENT_YEAR TEXT IS ''Current Year'' ,PREVIOUS_YEAR TEXT IS ''Last Year'' ,CURRENT_DAY_LAST_YEAR TEXT IS  ''Same Day as Today Last Year'' ,CURRENT_WEEK_LAST_YEAR TEXT IS  ''Same Week as Current Week Last Year'' ,CURRENT_MONTH_LAST_YEAR TEXT IS  ''Same Month as Current Month Last Year'' ,CURRENT_QUARTER_LAST_YEAR TEXT IS  ''Same Quarter as Current Quarter Last Year'' )' ; PREPARE LABELV_3 FROM D_SQL ; EXECUTE LABELV_3 ; SET TERMINATE_ON_ERROR = 0 ; SET D_SQL = 'CREATE OR REPLACE ALIAS  QTEMP.DATE_DIM FOR ' CONCAT THELIB CONCAT '.' CONCAT FINALTABLE ; PREPARE ALIAS_1 FROM D_SQL ; EXECUTE ALIAS_1 ; INSERT INTO QTEMP . DATE_DIM ( DATEKEY , "YEAR" , "QUARTER" , "MONTH" , "DAY" , "WEEK" , DAY_OF_WEEK , DAY_OF_YEAR , WEEK_STARTING_DATE , WEEK_ENDING_DATE , FISCAL_YEAR , FISCAL_QUARTER , FISCAL_MONTH , YEAR_ISO , WEEK_ISO , DAY_OF_WEEK_ISO , WEEK_STARTING_DATE_ISO , WEEK_ENDING_DATE_ISO , MONTH_NAME , DAY_NAME , ORDINAL_DOW , MONTH_ABBREVIATION , QUARTER_NAME , NORTHERN_SEASON , SOUTHERN_SEASON , HOLIDAY_FLAG , WEEKEND_FLAG , LEAP_YEAR , DATE_DELIMITED_US , DATE_DELIMITED_EU , ISO_WEEK_DATE , YYYYMMDD_CHAR , YYYYMMDD_DEC , YYYYMMDD_NUM , YYMMDD_CHAR , YYMMDD_DEC , YYMMDD_NUM , DDMMYYYY_CHAR , DDMMYYYY_DEC , DDMMYYYY_NUM , DDMMYY_CHAR , DDMMYY_DEC , DDMMYY_NUM , MMDDYYYY_CHAR , MMDDYYYY_DEC , MMDDYYYY_NUM , MMDDYY_CHAR , MMDDYY_DEC , MMDDYY_NUM , CYYMMDD_CHAR , CYYMMDD_DEC , CYYMMDD_NUM , JULIAN_YYYYDDD_CHAR , JULIAN_YYYYDDD_DEC , JULIAN_YYYYDDD_NUM , JULIAN_CYYDDD_CHAR , JULIAN_CYYDDD_DEC , JULIAN_CYYDDD_NUM , C_FLAG_CHAR , C_FLAG_DEC , C_FLAG_NUM , CC_CHAR , CC_DEC , CC_NUM , YYYY_CHAR , YYYY_DEC , YYYY_NUM , YY_CHAR , YY_DEC , YY_NUM , MM_CHAR , MM_DEC , MM_NUM , DD_CHAR , DD_DEC , DD_NUM , EXCEL_DATE ) WITH RCTE ( D ) AS ( SELECT D FROM TABLE ( VALUES ( DATE ( RIGHT ( '0000' CONCAT RTRIM ( CHAR ( START_YEAR ) ) , 4 ) CONCAT '-01-01' ) ) ) X ( D ) UNION ALL SELECT CASE WHEN RCTE . D = '0300-02-28' THEN DATE ( '0300-03-02' ) ELSE RCTE . D + 1 DAY END FROM RCTE WHERE D < DATE ( RIGHT ( '0000' CONCAT RTRIM ( CHAR ( END_YEAR ) ) , 4 ) CONCAT '-12-31' ) ) , RCTE_WITH_DEFAULT ( D ) AS ( SELECT D FROM RCTE ) , EXPANDED1 AS ( SELECT D , YEAR ( D ) IYEAR , MONTH ( D ) IMONTH , DAY ( D ) IDAY , DAYOFWEEK_ISO ( D ) IDOW_ISO FROM RCTE_WITH_DEFAULT ) , EXPANDED AS ( SELECT E . * , CASE WHEN IYEAR BETWEEN 1900 AND 1999 THEN 0 WHEN IYEAR BETWEEN 2000 AND 2099 THEN 1 ELSE NULL END C_FLAG , RIGHT ( '0000' CONCAT RTRIM ( CHAR ( IYEAR ) ) , 4 ) CYEAR , DAYOFWEEK ( D ) IDOW , DAYOFYEAR ( D ) IDOY , INT ( VARCHAR_FORMAT ( TIMESTAMP ( D , TIME ( '00:00:00' ) ) , 'IYYY' ) ) IYEAR_ISO , WEEK_ISO ( D ) IWEEK_ISO , RIGHT ( '00' CONCAT RTRIM ( CHAR ( IMONTH ) ) , 2 ) CMONTH , RIGHT ( '00' CONCAT RTRIM ( CHAR ( IDAY ) ) , 2 ) CDAY , CASE WHEN IDOW_ISO > 5 THEN 'Y' ELSE 'N' END WEEKEND , CASE WHEN IMONTH = 1 AND IDAY = 1 THEN 'Y' WHEN IMONTH = 5 AND IDOW_ISO = 1 AND IDAY BETWEEN 25 AND 31 THEN 'Y' WHEN IMONTH = 7 AND IDAY = 4 THEN 'Y' /* July 4th */ WHEN IMONTH = 9 AND IDOW_ISO = 1 AND IDAY BETWEEN 1 AND 7 THEN 'Y' /* Labor Day - first Monday in September */ WHEN IMONTH = 11 AND IDOW_ISO = 4 AND IDAY BETWEEN 22 AND 28 THEN 'Y' /* Thanksgiving - 4th Thursday in Nov */ WHEN IMONTH = 12 AND IDAY = 25 THEN 'Y' /* Christmas */ ELSE 'N' END HOLIDAY FROM EXPANDED1 E ) SELECT D , IYEAR , QUARTER ( D ) , IMONTH , DAY ( D ) , WEEK ( D ) , IDOW , IDOY , CASE WHEN D > '0001-01-06' THEN D + ( 1 - IDOW ) DAYS ELSE DATE ( '0001-01-01' ) END , CASE WHEN D < '9999-12-26' THEN D + ( 7 - IDOW ) DAYS ELSE DATE ( '9999-12-31' ) END , IYEAR + CASE WHEN IMONTH > 6 THEN 1 ELSE 0 END /* Fiscal that starts July 1 */ , QUARTER ( D ) + CASE WHEN IMONTH > 6 THEN - 2 ELSE 2 END /* Fiscal that starts July 1 */ , MONTH ( D ) + CASE WHEN IMONTH > 6 THEN - 6 ELSE 6 END /* Fiscal that starts July 1 */ , IYEAR_ISO , IWEEK_ISO , IDOW_ISO , D + ( 1 - IDOW_ISO ) DAYS , CASE WHEN D < '9999-12-27' THEN D + ( 7 - IDOW_ISO ) DAYS ELSE DATE ( '9999-12-31' ) END , MONTHNAME ( D ) , DAYNAME ( D ) , ( DAY ( D ) - 1 ) / 7 + 1 , UPPER ( SUBSTR ( MONTHNAME ( D ) , 1 , 3 ) ) , CYEAR CONCAT 'Q' CONCAT CHAR ( QUARTER ( D ) ) , CASE WHEN IMONTH IN ( 1 , 2 ) OR ( IMONTH = 3 AND DAY ( D ) < 21 ) OR ( IMONTH = 12 AND DAY ( D ) >= 21 ) THEN 'Winter' WHEN IMONTH IN ( 3 , 4 , 5 ) OR ( IMONTH = 6 AND DAY ( D ) < 21 ) THEN 'Spring' WHEN IMONTH IN ( 6 , 7 , 8 ) OR ( IMONTH = 9 AND DAY ( D ) < 21 ) THEN 'Summer' ELSE 'Autumn' END , CASE WHEN IMONTH IN ( 1 , 2 , 12 ) OR ( IMONTH = 3 AND DAY ( D ) < 21 ) OR ( IMONTH = 12 AND DAY ( D ) >= 21 ) THEN 'Summer' WHEN IMONTH IN ( 3 , 4 , 5 ) OR ( IMONTH = 6 AND DAY ( D ) < 21 ) THEN 'Autumn' WHEN IMONTH IN ( 6 , 7 , 8 ) OR ( IMONTH = 9 AND DAY ( D ) < 21 ) THEN 'Winter' ELSE 'Spring' END , HOLIDAY , WEEKEND , CASE WHEN DAYOFYEAR ( DATE ( CYEAR CONCAT '-12-31' ) ) = 366 THEN 'Y' ELSE 'N' END , CYEAR CONCAT '/' CONCAT CMONTH CONCAT '/' CONCAT CDAY , CYEAR CONCAT '-' CONCAT CMONTH CONCAT '-' CONCAT CDAY , RIGHT ( '000' CONCAT TRIM ( CHAR ( IYEAR_ISO ) ) , 4 ) CONCAT '-W' CONCAT RIGHT ( '0' CONCAT RTRIM ( IWEEK_ISO ) , 2 ) CONCAT '-' CONCAT RTRIM ( IDOW_ISO ) , CYEAR CONCAT CMONTH CONCAT CDAY , IYEAR * 10000 + IMONTH * 100 + IDAY , IYEAR * 10000 + IMONTH * 100 + IDAY , CASE WHEN D BETWEEN '1940-01-01' AND '2039-12-31' THEN RIGHT ( CYEAR , 2 ) CONCAT CMONTH CONCAT CDAY ELSE NULL END , CASE WHEN D BETWEEN '1940-01-01' AND '2039-12-31' THEN MOD ( IYEAR , 100 ) * 10000 + IMONTH * 100 + IDAY ELSE NULL END , CASE WHEN D BETWEEN '1940-01-01' AND '2039-12-31' THEN MOD ( IYEAR , 100 ) * 10000 + IMONTH * 100 + IDAY ELSE NULL END , CDAY CONCAT CMONTH CONCAT CYEAR , IDAY * 1000000 + IMONTH * 10000 + IYEAR , IDAY * 1000000 + IMONTH * 10000 + IYEAR , CASE WHEN D BETWEEN '1940-01-01' AND '2039-12-31' THEN CDAY CONCAT CMONTH CONCAT RIGHT ( CYEAR , 2 ) ELSE NULL END , CASE WHEN D BETWEEN '1940-01-01' AND '2039-12-31' THEN IDAY * 10000 + IMONTH * 100 + MOD ( IYEAR , 100 ) ELSE NULL END , CASE WHEN D BETWEEN '1940-01-01' AND '2039-12-31' THEN IDAY * 10000 + IMONTH * 100 + MOD ( IYEAR , 100 ) ELSE NULL END , CMONTH CONCAT CDAY CONCAT CYEAR , IMONTH * 1000000 + IDAY * 10000 + IYEAR , IMONTH * 1000000 + IDAY * 10000 + IYEAR , CASE WHEN D BETWEEN '1940-01-01' AND '2039-12-31' THEN CMONTH CONCAT CDAY CONCAT RIGHT ( CYEAR , 2 ) ELSE NULL END , CASE WHEN D BETWEEN '1940-01-01' AND '2039-12-31' THEN IMONTH * 10000 + IDAY * 100 + MOD ( IYEAR , 100 ) ELSE NULL END , CASE WHEN D BETWEEN '1940-01-01' AND '2039-12-31' THEN IMONTH * 10000 + IDAY * 100 + MOD ( IYEAR , 100 ) ELSE NULL END , RTRIM ( CHAR ( C_FLAG ) ) CONCAT RIGHT ( CYEAR , 2 ) CONCAT CMONTH CONCAT CDAY , C_FLAG * 1000000 /* century */ + MOD ( IYEAR , 100 ) * 10000 /* two digit year */ + IMONTH * 100 + IDAY , C_FLAG * 1000000 /* century */ + MOD ( IYEAR , 100 ) * 10000 /* two digit year */ + IMONTH * 100 + IDAY , RIGHT ( '0000000' CONCAT RTRIM ( CHAR ( IYEAR * 1000 + IDOY ) ) , 7 ) , IYEAR * 1000 + IDOY , IYEAR * 1000 + IDOY , CASE WHEN D BETWEEN '1900-01-01' AND '2099-12-31' THEN RIGHT ( '0000000' CONCAT RTRIM ( CHAR ( ( INT ( D - DATE ( '01/01/1900' ) ) / 10000 ) * 1000 + IDOY ) ) , 6 ) ELSE NULL END , CASE WHEN D BETWEEN '1900-01-01' AND '2099-12-31' THEN ( INT ( D - DATE ( '01/01/1900' ) ) / 10000 ) * 1000 + IDOY ELSE NULL END , CASE WHEN D BETWEEN '1900-01-01' AND '2099-12-31' THEN ( INT ( D - DATE ( '01/01/1900' ) ) / 10000 ) * 1000 + IDOY ELSE NULL END , CHAR ( C_FLAG ) , C_FLAG , C_FLAG , SUBSTR ( CYEAR , 1 , 2 ) , IYEAR / 100 , IYEAR / 100 , CYEAR , IYEAR , IYEAR , RIGHT ( CYEAR , 2 ) , MOD ( IYEAR , 100 ) , MOD ( IYEAR , 100 ) , CMONTH , IMONTH , IMONTH , CDAY , IDAY , IDAY , CASE WHEN D >= '1900-01-01' THEN ( INT ( DAYS ( D ) - DAYS ( DATE ( '01/01/1900' ) ) + 2 ) - ( CASE WHEN D <= '1900-02-28' THEN 1 ELSE 0 END ) ) ELSE NULL END FROM EXPANDED ; SET MSG = 'Table ' CONCAT THELIB CONCAT '/' CONCAT FINALVIEW CONCAT ' created and loaded with ' CONCAT RTRIM ( CHAR ( ( SELECT COUNT ( * ) FROM QTEMP . DATE_DIM ) ) ) CONCAT ' rows.' ; OPEN C1 ; END  ; 
  32.   
  33. GRANT EXECUTE   
  34. ON SPECIFIC PROCEDURE QWQCENT.CRTDATTBL 
  35. TO PUBLIC ; 
  36.   
  37. GRANT ALTER , EXECUTE   
  38. ON SPECIFIC PROCEDURE QWQCENT.CRTDATTBL 
  39. TO QSYS WITH GRANT OPTION ; 
  40.   
  41.   
  42. SET PATH *LIBL ; 
  43.   
  44. CREATE PROCEDURE QWQCENT.LOAD_DATE_CONVERSION_TABLE ( ) 
  45.     LANGUAGE SQL 
  46.     SPECIFIC QWQCENT.LOAD_DATE_CONVERSION_TABLE 
  47.     NOT DETERMINISTIC 
  48.     MODIFIES SQL DATA 
  49.     CALLED ON NULL INPUT 
  50.     SET OPTION  ALWBLK = *ALLREAD , 
  51.     ALWCPYDTA = *OPTIMIZE , 
  52.     COMMIT = *NONE , 
  53.     DECRESULT = (31, 31, 00) , 
  54.     DFTRDBCOL = QWQCENT , 
  55.     DLYPRP = *NO , 
  56.     DYNDFTCOL = *NO , 
  57.     DYNUSRPRF = *USER , 
  58.     RDBCNNMTH = *RUW , 
  59.     SRTSEQ = *HEX   
  60. --  SQL1510   30   TGTRLS = V5R4M0 ignored for LOAD_DATE_CONVERSION_TABLE in  
  61. --                 QWQCENT. 
  62.     BEGIN 
  63.   
  64.     DECLARE VAR_DATE DATE DEFAULT NULL ; 
  65.     DECLARE VAR_JDE_JULIAN_DATE DECIMAL ( 6 , 0 ) ; 
  66.     DECLARE VAR_JDE_JULIAN_DATE_CHAR CHAR ( 6 ) ; 
  67.     DECLARE VAR_DATE_MDYY_DEC DECIMAL ( 8 , 0 ) ; 
  68.     DECLARE VAR_DATE_MDYY_ZONED NUMERIC ( 8 , 0 ) ; 
  69.     DECLARE VAR_DATE_MDYY_CHAR CHAR ( 8 ) ; 
  70.     DECLARE VAR_DATE_YYMD_DEC DECIMAL ( 8 , 0 ) ; 
  71.     DECLARE VAR_DATE_YYMD_ZONED NUMERIC ( 8 , 0 ) ; 
  72.     DECLARE VAR_DATE_YYMD_CHAR CHAR ( 8 ) ; 
  73.   
  74.     DECLARE VAR_DATE_MDY_DEC DECIMAL ( 6 , 0 ) ; 
  75.     DECLARE VAR_DATE_MDY_ZONED NUMERIC ( 6 , 0 ) ; 
  76.     DECLARE VAR_DATE_MDY_CHAR CHAR ( 6 ) ; 
  77.     DECLARE VAR_DATE_YMD_DEC DECIMAL ( 6 , 0 ) ; 
  78.     DECLARE VAR_DATE_YMD_ZONED NUMERIC ( 6 , 0 ) ; 
  79.     DECLARE VAR_DATE_YMD_CHAR CHAR ( 6 ) ; 
  80.   
  81.     DECLARE VAR_CC_CHAR CHAR ( 2 ) ; 
  82.     DECLARE VAR_YY_CHAR CHAR ( 2 ) ; 
  83.     DECLARE VAR_MM_CHAR CHAR ( 2 ) ; 
  84.     DECLARE VAR_DD_CHAR CHAR ( 2 ) ; 
  85.     DECLARE VAR_YEAR INTEGER ; 
  86.     DECLARE VAR_DOW INTEGER ; 
  87.     DECLARE VAR_DOW_ISO INTEGER ; 
  88.     DECLARE VAR_DOY INTEGER ; 
  89.     DECLARE VAR_WOY INTEGER ; 
  90.     DECLARE VAR_WOY_ISO INTEGER ; 
  91.     DECLARE VAR_QOY INTEGER ; 
  92.     DECLARE VAR_CC NUMERIC ( 2 , 0 ) ; 
  93.     DECLARE VAR_YY NUMERIC ( 2 , 0 ) ; 
  94.     DECLARE VAR_MM NUMERIC ( 2 , 0 ) ; 
  95.     DECLARE VAR_DD NUMERIC ( 2 , 0 ) ; 
  96.     DECLARE VAR_CCYYMM NUMERIC ( 6 , 0 ) ; 
  97.     DECLARE VAR_DAY_NAME CHAR ( 9 ) ; 
  98.     DECLARE VAR_QUARTER_NAME CHAR ( 6 ) ; 
  99.     DECLARE VAR_WEEKEND CHAR ( 1 ) ; 
  100.     DECLARE VAR_HOLIDAY CHAR ( 1 ) ; 
  101.     DECLARE VAR_DAY_BEFORE_HOLIDAY CHAR ( 1 ) ; 
  102.     DECLARE VAR_DAY_AFTER_HOLIDAY CHAR ( 1 ) ; 
  103.     DECLARE VAR_FULL_MOON CHAR ( 1 ) ; 
  104.     DECLARE VAR_SEASON CHAR ( 6 ) ; 
  105.     DECLARE VAR_FISCAL_YEAR INTEGER ; 
  106.     DECLARE VAR_FISCAL_QUARTER INTEGER ; 
  107.     DECLARE VAR_MONTH_NAME CHAR ( 9 ) ; 
  108.     DECLARE VAR_MONTH_ABRV CHAR ( 3 ) ; 
  109.     DECLARE VAR_JULIAN NUMERIC ( 7 , 0 ) ; 
  110.     DECLARE VAR_EXCEL_DATE INTEGER ; 
  111.     DECLARE VAR_CYYMMDD_DEC DECIMAL ( 7 , 0 ) ; 
  112.     DECLARE VAR_WEEK_ENDING_DATE DATE DEFAULT NULL ; 
  113.     DECLARE VAR_WEEK_STARTING_DATE DATE DEFAULT NULL ; 
  114.     DECLARE VAR_SAME_DAY_LAST_YEAR DATE DEFAULT NULL ; 
  115.     DECLARE VAR_FLAG CHAR ( 1 ) ; 
  116.     DECLARE VAR_NTH_DOW_OF_MONTH INTEGER ; 
  117.   
  118.   
  119.     SET VAR_DATE = '01/01/1900' ; 
  120.     SET VAR_FLAG = 'N' ; 
  121.   
  122.     REPEAT 
  123.         SET VAR_YEAR = YEAR ( VAR_DATE ) ; 
  124.         SET VAR_EXCEL_DATE = INT ( DAYS ( VAR_DATE ) - DAYS ( DATE ( '01/01/1900' ) ) ) + 1 ; 
  125.   
  126.          -- Excel incorrectly calculates Feb 29, 1900 as a leap day (when in fact it i
  127.   --s not). 
  128.          -- The following accounts for that. 
  129.         SET VAR_EXCEL_DATE = 
  130.         ( CASE 
  131.             WHEN VAR_EXCEL_DATE > 59 
  132.             THEN VAR_EXCEL_DATE + 1 
  133.             ELSE VAR_EXCEL_DATE 
  134.         END ) ; 
  135.   
  136.         SET VAR_JDE_JULIAN_DATE = ( INT ( VAR_DATE - DATE ( '01/01/1900' ) ) / 10000 ) * 1000 
  137.             + DAYOFYEAR ( VAR_DATE ) ; 
  138.         SET VAR_DOW = DAYOFWEEK ( VAR_DATE ) ; 
  139.         SET VAR_DOW_ISO = DAYOFWEEK_ISO ( VAR_DATE ) ; 
  140.         SET VAR_DOY = DAYOFYEAR ( VAR_DATE ) ; 
  141.         SET VAR_WOY = WEEK ( VAR_DATE ) ; 
  142.         SET VAR_WOY_ISO = WEEK_ISO ( VAR_DATE ) ; 
  143.         SET VAR_QOY = QUARTER ( VAR_DATE ) ; 
  144.         SET VAR_CC_CHAR = SUBSTRING ( CHAR ( YEAR ( VAR_DATE ) ) , 1 , 2 ) ; 
  145.         SET VAR_YY_CHAR = SUBSTRING ( CHAR ( YEAR ( VAR_DATE ) ) , 3 , 2 ) ; 
  146.         SET VAR_MM_CHAR = SUBSTRING ( DIGITS ( MONTH ( VAR_DATE ) ) , 9 , 2 ) ; 
  147.         SET VAR_DD_CHAR = SUBSTRING ( DIGITS ( DAY ( VAR_DATE ) ) , 9 , 2 ) ; 
  148.         SET VAR_CC = DECIMAL ( SUBSTRING ( CHAR ( YEAR ( VAR_DATE ) ) , 1 , 2 ) ) ; 
  149.         SET VAR_YY = DECIMAL ( SUBSTRING ( CHAR ( YEAR ( VAR_DATE ) ) , 3 , 2 ) ) ; 
  150.         SET VAR_MM = MONTH ( VAR_DATE ) ; 
  151.         SET VAR_DD = DAY ( VAR_DATE ) ; 
  152.         SET VAR_CCYYMM = DECIMAL ( VAR_CC_CHAR || VAR_YY_CHAR || VAR_MM_CHAR ) ; 
  153.         SET VAR_DATE_MDYY_CHAR = VAR_MM_CHAR || VAR_DD_CHAR || VAR_CC_CHAR || VAR_YY_CHAR ; 
  154.         SET VAR_DATE_MDYY_DEC = DECIMAL ( VAR_DATE_MDYY_CHAR ) ; 
  155.         SET VAR_DATE_MDYY_ZONED = VAR_DATE_MDYY_DEC ; 
  156.         SET VAR_DATE_YYMD_CHAR = ( VAR_CC * 1000000 ) + ( VAR_YY * 10000 ) 
  157.             + ( VAR_MM * 100 ) + VAR_DD ; 
  158.         SET VAR_DATE_YYMD_DEC = DECIMAL ( VAR_DATE_YYMD_CHAR ) ; 
  159.         SET VAR_DATE_YYMD_ZONED = VAR_DATE_YYMD_DEC ; 
  160.   
  161.         SET VAR_DATE_MDY_CHAR = VAR_MM_CHAR || VAR_DD_CHAR || VAR_YY_CHAR ; 
  162.         SET VAR_DATE_MDY_DEC = DECIMAL ( VAR_DATE_MDY_CHAR ) ; 
  163.         SET VAR_DATE_MDY_ZONED = VAR_DATE_MDY_DEC ; 
  164.         SET VAR_DATE_YMD_CHAR = ( VAR_YY * 10000 ) 
  165.             + ( VAR_MM * 100 ) + VAR_DD ; 
  166.         SET VAR_DATE_YMD_DEC = DECIMAL ( VAR_DATE_YMD_CHAR ) ; 
  167.         SET VAR_DATE_YMD_ZONED = VAR_DATE_YMD_DEC ; 
  168.   
  169.         SET VAR_CYYMMDD_DEC = 
  170.         ( CASE 
  171.             WHEN VAR_CC = 19 
  172.             THEN ( VAR_YY * 10000 ) + ( VAR_MM * 100 ) + VAR_DD 
  173.             ELSE 1000000 + ( VAR_YY * 10000 ) + ( VAR_MM * 100 ) + VAR_DD 
  174.         END ) ; 
  175.   
  176.         SET VAR_DAY_NAME = 
  177.         ( CASE VAR_DOW_ISO 
  178.             WHEN 1 
  179.                 THEN 'Monday' 
  180.             WHEN 2 
  181.                 THEN 'Tuesday' 
  182.             WHEN 3 
  183.                 THEN 'Wednesday' 
  184.             WHEN 4 
  185.                 THEN 'Thursday' 
  186.             WHEN 5 
  187.                 THEN 'Friday' 
  188.             WHEN 6 
  189.                 THEN 'Saturday' 
  190.             WHEN 7 
  191.                 THEN 'Sunday' 
  192.             ELSE '' 
  193.         END ) ; 
  194.   
  195.         SET VAR_QUARTER_NAME = TRIM ( CHAR ( YEAR ( VAR_DATE ) ) ) CONCAT 'Q' CONCAT             TRIM ( CHAR ( QUARTER ( VAR_DATE ) ) ) ; 
  196.   
  197.         SET VAR_WEEKEND = 
  198.         ( CASE VAR_DOW_ISO 
  199.             WHEN 6 
  200.                 THEN 'Y' 
  201.             WHEN 7 
  202.                 THEN 'Y' 
  203.             ELSE 'N' 
  204.         END ) ; 
  205.         SET VAR_HOLIDAY = 'N' ; 
  206.         SET VAR_DAY_BEFORE_HOLIDAY = 'N' ; 
  207.         SET VAR_DAY_AFTER_HOLIDAY = 'N' ; 
  208.         SET VAR_FULL_MOON = 'N' ; 
  209.         SET VAR_SEASON = 
  210.         ( CASE 
  211.             WHEN VAR_MM < 3 OR ( VAR_MM = 3 AND VAR_DD < 21 ) 
  212.                 THEN 'Winter' 
  213.             WHEN VAR_MM < 6 OR ( VAR_MM = 6 AND VAR_DD < 21 ) 
  214.                 THEN 'Spring' 
  215.             WHEN VAR_MM < 9 OR ( VAR_MM = 9 AND VAR_DD < 21 ) 
  216.                 THEN 'Summer' 
  217.             WHEN VAR_MM < 12 OR ( VAR_MM = 12 AND VAR_DD < 21 ) 
  218.                 THEN 'Autumn' 
  219.             ELSE 'Winter' 
  220.         END ) ; 
  221.   
  222.         SET VAR_FISCAL_QUARTER = 
  223.         ( CASE 
  224.             WHEN VAR_MM < 3 
  225.                 THEN 4 
  226.             WHEN VAR_MM < 6 
  227.                 THEN 1 
  228.             WHEN VAR_MM < 9 
  229.                 THEN 2 
  230.             WHEN VAR_MM < 11 
  231.                 THEN 3 
  232.             ELSE 4 
  233.         END ) ; 
  234.   
  235.         SET VAR_FISCAL_YEAR = 
  236.         ( CASE 
  237.             WHEN VAR_MM < 3 
  238.                 THEN YEAR ( VAR_DATE ) 
  239.             ELSE YEAR ( VAR_DATE ) + 1 
  240.         END ) ; 
  241.   
  242.         SET VAR_MONTH_NAME = MONTHNAME ( VAR_DATE ) ; 
  243.         SET VAR_MONTH_ABRV = 
  244.         ( CASE VAR_MM 
  245.             WHEN 1 
  246.                 THEN 'JAN' 
  247.             WHEN 2 
  248.                 THEN 'FEB' 
  249.             WHEN 3 
  250.                 THEN 'MAR' 
  251.             WHEN 4 
  252.                 THEN 'APR' 
  253.             WHEN 5 
  254.                 THEN 'MAY' 
  255.             WHEN 6 
  256.                 THEN 'JUN' 
  257.             WHEN 7 
  258.                 THEN 'JUL' 
  259.             WHEN 8 
  260.                 THEN 'AUG' 
  261.             WHEN 9 
  262.                 THEN 'SEP' 
  263.             WHEN 10 
  264.                 THEN 'OCT' 
  265.             WHEN 11 
  266.                 THEN 'NOV' 
  267.             WHEN 12 
  268.                 THEN 'DEC
  269.             ELSE '' 
  270.         END ) ; 
  271.   
  272.         SET VAR_JULIAN = DECIMAL ( SUBSTRING ( CHAR ( ( YEAR ( VAR_DATE ) * 1000 
  273.         + DAYOFYEAR ( VAR_DATE ) ) ) , 1 , 7 ) ) ; 
  274.   
  275.         SET VAR_WEEK_ENDING_DATE = 
  276.         ( CASE DAYOFWEEK_ISO ( VAR_DATE ) 
  277.             WHEN 1 
  278.                 THEN VAR_DATE + 6 DAYS 
  279.             WHEN 2 
  280.                 THEN VAR_DATE + 5 DAYS 
  281.             WHEN 3 
  282.                 THEN VAR_DATE + 4 DAYS 
  283.             WHEN 4 
  284.                 THEN VAR_DATE + 3 DAYS 
  285.             WHEN 5 
  286.                 THEN VAR_DATE + 2 DAYS 
  287.             WHEN 6 
  288.                 THEN VAR_DATE + 1 DAYS 
  289.             WHEN 7 
  290.                 THEN VAR_DATE 
  291.             ELSE NULL 
  292.         END ) ; 
  293.   
  294.         SET VAR_NTH_DOW_OF_MONTH = 
  295.         ( CASE 
  296.             WHEN VAR_DD <= 7 
  297.                 THEN 1 
  298.             WHEN VAR_DD > 7 AND VAR_DD <= 14 
  299.                 THEN 2 
  300.             WHEN VAR_DD > 14 AND VAR_DD <= 21 
  301.                 THEN 3 
  302.             WHEN VAR_DD > 21 AND VAR_DD <= 28 
  303.                 THEN 4 
  304.             WHEN VAR_DD > 28 
  305.                 THEN 5 
  306.             ELSE 0 
  307.         END ) ; 
  308.   
  309.         SET VAR_WEEK_STARTING_DATE = VAR_WEEK_ENDING_DATE - 6 DAYS ; 
  310.         SET VAR_SAME_DAY_LAST_YEAR = VAR_DATE - 364 DAYS ; 
  311.   
  312.         INSERT INTO QWQCENT . DATE_CONV VALUES ( 
  313.         VAR_DATE , 
  314.         VAR_JDE_JULIAN_DATE , 
  315.         VAR_DATE_MDYY_DEC , 
  316.         VAR_DATE_MDYY_ZONED , 
  317.         VAR_DATE_MDYY_CHAR , 
  318.         VAR_DATE_YYMD_DEC , 
  319.         VAR_DATE_YYMD_ZONED , 
  320.         VAR_DATE_YYMD_CHAR , 
  321.   
  322.         VAR_DATE_MDY_DEC , 
  323.         VAR_DATE_MDY_ZONED , 
  324.         VAR_DATE_MDY_CHAR , 
  325.         VAR_DATE_YMD_DEC , 
  326.         VAR_DATE_YMD_ZONED , 
  327.         VAR_DATE_YMD_CHAR , 
  328.   
  329.         VAR_CC_CHAR , 
  330.         VAR_YY_CHAR , 
  331.         VAR_MM_CHAR , 
  332.         VAR_DD_CHAR , 
  333.         VAR_YEAR , 
  334.         VAR_DOW , 
  335.         VAR_DOW_ISO , 
  336.         VAR_DOY , 
  337.         VAR_WOY , 
  338.         VAR_WOY_ISO , 
  339.         VAR_QOY , 
  340.         VAR_CC , 
  341.         VAR_YY , 
  342.         VAR_MM , 
  343.         VAR_DD , 
  344.         VAR_CCYYMM , 
  345.         VAR_DAY_NAME , 
  346.         VAR_QUARTER_NAME , 
  347.         VAR_WEEKEND , 
  348.         VAR_HOLIDAY , 
  349.         VAR_DAY_BEFORE_HOLIDAY , 
  350.         VAR_DAY_AFTER_HOLIDAY , 
  351.         VAR_FULL_MOON , 
  352.         VAR_SEASON , 
  353.         VAR_FISCAL_YEAR , 
  354.         VAR_FISCAL_QUARTER , 
  355.         VAR_MONTH_NAME , 
  356.         VAR_MONTH_ABRV , 
  357.         VAR_JULIAN , 
  358.         VAR_CYYMMDD_DEC , 
  359.         VAR_EXCEL_DATE , 
  360.         VAR_WEEK_STARTING_DATE , 
  361.         VAR_WEEK_ENDING_DATE , 
  362.         VAR_SAME_DAY_LAST_YEAR , 
  363.         VAR_FLAG , 
  364.         VAR_FLAG , 
  365.         VAR_FLAG , 
  366.         VAR_FLAG , 
  367.         VAR_FLAG , 
  368.         VAR_FLAG , 
  369.         VAR_FLAG , 
  370.         VAR_FLAG , 
  371.         VAR_FLAG , 
  372.         VAR_FLAG , 
  373.         VAR_FLAG , 
  374.         VAR_FLAG , 
  375.         VAR_FLAG , 
  376.         VAR_FLAG , 
  377.         VAR_FLAG , 
  378.         VAR_FLAG , 
  379.         VAR_FLAG , 
  380.         VAR_FLAG , 
  381.         VAR_FLAG , 
  382.         VAR_FLAG , 
  383.         VAR_FLAG , 
  384.         VAR_NTH_DOW_OF_MONTH ) ; 
  385.         SET VAR_DATE = VAR_DATE + 1 DAY ; 
  386.     UNTIL VAR_DATE > '12/31/2030' 
  387.   
  388.     END REPEAT ; 
  389. END  ; 
  390.   
  391. GRANT EXECUTE   
  392. ON SPECIFIC PROCEDURE QWQCENT.LOAD_DATE_CONVERSION_TABLE 
  393. TO PUBLIC ; 
  394.   
  395. GRANT ALTER , EXECUTE   
  396. ON SPECIFIC PROCEDURE QWQCENT.LOAD_DATE_CONVERSION_TABLE 
  397. TO QWQADMIN WITH GRANT OPTION ; 
  398.   
  399.   
  400. SET PATH *LIBL ; 
  401.   
  402. CREATE PROCEDURE QWQCENT.UPDATE_DATE_CONVERSION_TABLE ( ) 
  403.     LANGUAGE SQL 
  404.     SPECIFIC QWQCENT.UPDATE_DATE_CONVERSION_TABLE 
  405.     NOT DETERMINISTIC 
  406.     MODIFIES SQL DATA 
  407.     CALLED ON NULL INPUT 
  408.     SET OPTION  ALWBLK = *ALLREAD , 
  409.     ALWCPYDTA = *OPTIMIZE , 
  410.     COMMIT = *NONE , 
  411.     DECRESULT = (31, 31, 00) , 
  412.     DFTRDBCOL = *NONE , 
  413.     DYNDFTCOL = *NO , 
  414.     DYNUSRPRF = *USER , 
  415.     SRTSEQ = *HEX   
  416. --  SQL1510   30   TGTRLS = V5R4M0 ignored for UPDATE_DATE_CONVERSION_TABLE i 
  417. --                 n QWQCENT. 
  418.     BEGIN 
  419.      
  420.     UPDATE QWQCENT . DATE_CONV SET DC_CURRENT_DAY = 'N' WHERE DC_CURRENT_DAY = 'Y' ; 
  421.     UPDATE QWQCENT . DATE_CONV SET DC_CURRENT_YTD = 'N' WHERE DC_CURRENT_YTD = 'Y' ; 
  422.     UPDATE QWQCENT . DATE_CONV SET DC_CURRENT_YTD_LAST_YEAR = 'N' WHERE DC_CURRENT_YTD_LAST_YEAR = 'Y' ; 
  423.     UPDATE QWQCENT . DATE_CONV SET DC_CURRENT_WEEK = 'N' WHERE DC_CURRENT_WEEK = 'Y' ; 
  424.     UPDATE QWQCENT . DATE_CONV SET DC_CURRENT_MONTH = 'N' WHERE DC_CURRENT_MONTH = 'Y' ; 
  425.     UPDATE QWQCENT . DATE_CONV SET DC_CURRENT_QUARTER = 'N' WHERE DC_CURRENT_QUARTER = 'Y' ; 
  426.     UPDATE QWQCENT . DATE_CONV SET DC_CURRENT_YEAR = 'N' WHERE DC_CURRENT_YEAR = 'Y' ; 
  427.     UPDATE QWQCENT . DATE_CONV SET DC_CURRENT_DAY_LAST_YEAR = 'N' WHERE DC_CURRENT_DAY_LAST_YEAR = 'Y' ; 
  428.     UPDATE QWQCENT . DATE_CONV SET DC_CURRENT_WEEK_LAST_YEAR = 'N' WHERE DC_CURRENT_WEEK_LAST_YEAR = 'Y' ; 
  429.     UPDATE QWQCENT . DATE_CONV SET DC_CURRENT_MONTH_LAST_YEAR = 'N' WHERE DC_CURRENT_MONTH_LAST_YEAR = 'Y' ; 
  430.     UPDATE QWQCENT . DATE_CONV SET DC_CURRENT_QUARTER_LAST_YEAR = 'N' 
  431.         WHERE DC_CURRENT_QUARTER_LAST_YEAR = 'Y' ; 
  432.     UPDATE QWQCENT . DATE_CONV SET DC_CURRENT_YEAR_LAST_YEAR = 'N' WHERE DC_CURRENT_YEAR_LAST_YEAR = 'Y' ; 
  433.   
  434.     UPDATE QWQCENT . DATE_CONV SET DC_PREVIOUS_DAY = 'N' WHERE DC_PREVIOUS_DAY = 'Y' ; 
  435.     UPDATE QWQCENT . DATE_CONV SET DC_PREVIOUS_WEEK = 'N' WHERE DC_PREVIOUS_WEEK = 'Y' ; 
  436.     UPDATE QWQCENT . DATE_CONV SET DC_PREVIOUS_MONTH = 'N' WHERE DC_PREVIOUS_MONTH = 'Y' ; 
  437.     UPDATE QWQCENT . DATE_CONV SET DC_PREVIOUS_QUARTER = 'N' WHERE DC_PREVIOUS_QUARTER = 'Y' ; 
  438.     UPDATE QWQCENT . DATE_CONV SET DC_PREVIOUS_YEAR = 'N' WHERE DC_PREVIOUS_YEAR = 'Y' ; 
  439.   
  440.   
  441.   
  442.     UPDATE QWQCENT . DATE_CONV SET DC_CURRENT_DAY = 'Y' WHERE DC_DATE = CURRENT DATE ; 
  443.     UPDATE QWQCENT . DATE_CONV SET DC_PREVIOUS_DAY = 'Y' WHERE DC_DATE = CURRENT DATE - 1 DAY ; 
  444.     UPDATE QWQCENT . DATE_CONV SET DC_CURRENT_YTD = 'Y' WHERE DC_DATE <= CURRENT DATE AND DC_YEAR = YEAR ( CURRENT DATE ) ; 
  445.   
  446.     UPDATE QWQCENT . DATE_CONV SET DC_CURRENT_YTD_LAST_YEAR = 'Y' 
  447.     WHERE ( DC_MM < MONTH ( CURRENT DATE ) OR ( DC_MM = MONTH ( CURRENT DATE ) AND DC_DD <= DAY ( CURRENT DATE ) ) ) 
  448.     AND DC_YEAR = YEAR ( CURRENT DATE ) - 1 ; 
  449.   
  450.     UPDATE QWQCENT . DATE_CONV SET DC_CURRENT_WEEK = 'Y' WHERE DC_DATE >= 
  451.         ( SELECT DC_WEEK_STARTING_DATE FROM QWQCENT . DATE_CONV WHERE DC_DATE = CURRENT DATE ) 
  452.         AND DC_DATE <= ( SELECT DC_WEEK_ENDING_DATE FROM QWQCENT . DATE_CONV WHERE DC_DATE = CURRENT DATE ) ; 
  453.     UPDATE QWQCENT . DATE_CONV SET DC_PREVIOUS_WEEK = 'Y' WHERE DC_DATE IN 
  454.         ( SELECT DC_DATE - 7 DAYS FROM QWQCENT . DATE_CONV WHERE DC_CURRENT_WEEK = 'Y' ) ; 
  455.   
  456.   
  457.     UPDATE QWQCENT . DATE_CONV SET DC_CURRENT_MONTH = 'Y' 
  458.         WHERE DC_YEAR = YEAR ( CURRENT DATE ) AND DC_MM = MONTH ( CURRENT DATE ) ; 
  459.   
  460.     CASE 
  461.     WHEN MONTH ( CURRENT DATE ) = 1 
  462.         THEN UPDATE QWQCENT . DATE_CONV SET DC_PREVIOUS_MONTH = 'Y' 
  463.             WHERE ( DC_YEAR = YEAR ( CURRENT DATE ) - 1 AND DC_MM = 12 ) ; 
  464.     ELSE 
  465.         UPDATE QWQCENT . DATE_CONV SET DC_PREVIOUS_MONTH = 'Y' 
  466.         WHERE ( DC_YEAR = YEAR ( CURRENT DATE ) AND DC_MM = MONTH ( CURRENT DATE ) - 1 ) ; 
  467.     END CASE ; 
  468.   
  469.     UPDATE QWQCENT . DATE_CONV SET DC_CURRENT_QUARTER = 'Y' 
  470.         WHERE DC_YEAR = YEAR ( CURRENT DATE ) AND DC_QOY = QUARTER ( CURRENT DATE ) ;     CASE 
  471.     WHEN MONTH ( CURRENT DATE ) >= 1 AND MONTH ( CURRENT DATE ) <= 3 
  472.         THEN UPDATE QWQCENT . DATE_CONV SET DC_PREVIOUS_QUARTER = 'Y' 
  473.             WHERE ( DC_YEAR = YEAR ( CURRENT DATE ) - 1 AND ( DC_MM >= 10 AND DC_MM <= 12 ) ) ; 
  474.   
  475.     WHEN MONTH ( CURRENT DATE ) >= 4 AND MONTH ( CURRENT DATE ) <= 6 
  476.         THEN UPDATE QWQCENT . DATE_CONV SET DC_PREVIOUS_QUARTER = 'Y' 
  477.             WHERE ( DC_YEAR = YEAR ( CURRENT DATE ) AND ( DC_MM >= 1 AND DC_MM <= 3 ) ) ; 
  478.     WHEN MONTH ( CURRENT DATE ) >= 7 AND MONTH ( CURRENT DATE ) <= 9 
  479.         THEN UPDATE QWQCENT . DATE_CONV SET DC_PREVIOUS_QUARTER = 'Y' 
  480.             WHERE ( DC_YEAR = YEAR ( CURRENT DATE ) AND ( DC_MM >= 4 AND DC_MM <= 6 ) ) ; 
  481.     ELSE 
  482.         UPDATE QWQCENT . DATE_CONV SET DC_PREVIOUS_QUARTER = 'Y' 
  483.         WHERE ( DC_YEAR = YEAR ( CURRENT DATE ) AND ( DC_MM >= 7 AND DC_MM <= 9 ) ) ;     END CASE ; 
  484.   
  485.   
  486.     UPDATE QWQCENT . DATE_CONV SET DC_CURRENT_YEAR = 'Y' WHERE DC_YEAR = YEAR ( CURRENT DATE ) ; 
  487.     UPDATE QWQCENT . DATE_CONV SET DC_PREVIOUS_YEAR = 'Y' WHERE DC_YEAR = YEAR ( CURRENT DATE ) - 1 ; 
  488.   
  489.     UPDATE QWQCENT . DATE_CONV SET DC_CURRENT_DAY_LAST_YEAR = 'Y' WHERE DC_DATE = CURRENT DATE - 364 DAYS ; 
  490.     UPDATE QWQCENT . DATE_CONV SET DC_CURRENT_WEEK_LAST_YEAR = 'Y' WHERE DC_DATE >= 
  491.         ( SELECT DC_WEEK_STARTING_DATE FROM QWQCENT . DATE_CONV WHERE DC_DATE = ( CURRENT DATE - 364 DAYS ) ) 
  492.         AND DC_DATE <= ( SELECT DC_WEEK_ENDING_DATE FROM QWQCENT . DATE_CONV WHERE DC_DATE = 
  493.         ( CURRENT DATE - 364 DAYS ) ) ; 
  494.     UPDATE QWQCENT . DATE_CONV SET DC_CURRENT_MONTH_LAST_YEAR = 'Y' 
  495.         WHERE DC_YEAR = ( YEAR ( CURRENT DATE ) - 1 ) AND DC_MM = MONTH ( CURRENT DATE ) ; 
  496.     UPDATE QWQCENT . DATE_CONV SET DC_CURRENT_QUARTER_LAST_YEAR = 'Y' 
  497.         WHERE DC_YEAR = ( YEAR ( CURRENT DATE ) - 1 ) AND DC_QOY = QUARTER ( CURRENT DATE ) ; 
  498.     UPDATE QWQCENT . DATE_CONV SET DC_CURRENT_YEAR_LAST_YEAR = 'Y' 
  499.         WHERE DC_YEAR = YEAR ( CURRENT DATE - 1 YEAR ) ; 
  500.   
  501. END  ; 
  502.   
  503. GRANT EXECUTE   
  504. ON SPECIFIC PROCEDURE QWQCENT.UPDATE_DATE_CONVERSION_TABLE 
  505. TO PUBLIC ; 
  506.   
  507. GRANT ALTER , EXECUTE   
  508. ON SPECIFIC PROCEDURE QWQCENT.UPDATE_DATE_CONVERSION_TABLE 
  509. TO QWQADMIN WITH GRANT OPTION ; 
  510.   
  511.  
© 2004-2019 by midrange.com generated in 0.729s valid xhtml & css