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,     "YEAR" INTEGER NOT NULL ,     "QUARTER" INTEGER NOT NULL  CHECK("QUARTER" BETWEEN 1 AND 4),     "MONTH" INTEGER NOT NULL  CHECK("MONTH" BETWEEN 1 AND 12),     "DAY" INTEGER NOT NULL  CHECK("DAY" BETWEEN 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'' ,"YEAR" IS ''Year'' ,"QUARTER" IS ''Quarter'' ,"MONTH" IS ''Month'' ,"DAY" IS ''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'' ,"YEAR" TEXT IS ''Year'' ,"QUARTER" TEXT IS ''Quarter'' ,"MONTH" TEXT IS ''Month'' ,"DAY" TEXT 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 DATE) THEN ''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 DATE) AND "YEAR" = YEAR(CURRENT DATE) THEN  ''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 DATE) AND  "YEAR" = YEAR(CURRENT DATE) THEN   ''Y'' ELSE ''N'' END) CURRENT_MONTH   , CHAR(CASE WHEN "MONTH" = MONTH(CURRENT DATE- 1  MONTH) AND "YEAR" = YEAR(CURRENT DATE -  1 MONTH) THEN ''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 DATE) THEN  ''Y'' ELSE ''N'' END) CURRENT_YEAR   , CHAR(CASE WHEN "YEAR" = YEAR(CURRENT DATE - 1  YEAR) THEN ''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 YEAR) AND "YEAR" = YEAR(CURRENT DATE - 1 YEAR)  THEN ''Y'' ELSE ''N'' END) CURRENT_WEEK_LAST_YEAR   , CHAR(CASE WHEN "MONTH" = MONTH(CURRENT DATE -  1 YEAR) AND "YEAR" = YEAR(CURRENT DATE - 1 YEAR)  THEN ''Y'' ELSE ''N'' END) CURRENT_MONTH_LAST_YEAR   , CHAR(CASE WHEN "QUARTER" = QUARTER( CURRENT DATE - 1 YEAR) AND "YEAR" =  YEAR(CURRENT DATE - 1 YEAR) THEN ''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.655s valid xhtml & css