2014-09-08 4 views
0

Я ESQL новичок и преобразование XML в Cobol пропись, один из элемента XML является дата, но в строке с форматом ггггммддом, например 20140908преобразования ESQL из XML в COBOL и extarct даты из строки

мне нужно извлечь год, месяц и день из строки также в числовом

05 orderdate 
    10 orderyear PIC 9(4) 
    10 ordermonth PIC 9(2) 
    10 orderday  PIC 9(2) 

я могу просто сказать что-то вроде ниже:

DECLARE Orderdate INTEGER = CAST(INPUTROOT.XMLNS.ORDER.Order_Date as DateTime Format 'yyyymmdd'); 
SET OUTPUTROOT.DFDL.ORDERDATE.orderYear = EXTRACT(Year from Orderdate); 
SET OUTPUTROOT.DFDL.ORDERDATE.orderMonth = EXTRACT(Month from Orderdate); 
SET OUTPUTROOT.DFDL.ORDERDATE.orderDay = EXTRACT(Day from Orderdate); 

Спасибо Очень

J

ответ

0

Ниже все работает отлично для меня сейчас, но, конечно, мы можем использовать подстроку для этого и было бы немного проще.

 DECLARE ORDERDATE DATE; 

     DECLARE ORDERYEAR CHARACTER; 
     DECLARE ORDERMONTH CHARACTER; 
     DECLARE ORDERDAY CHARACTER; 

     SET ORDERDATE = CAST(InputRoot.XMLNSC.p:Order.p:Requested_Provision_Date AS DATE Format 'yyyymmdd'); 

     SET ORDERYEAR = EXTRACT(YEAR FROM ORDERDATE); 
     SET ORDERMONTH = EXTRACT(MONTH FROM ORDERDATE); 
     SET ORDERDAY = EXTRACT(DAY FROM ORDERDATE); 
     SET OutputRoot.DFDL.ORDERS.ORDER_DATE.ORDER_YEAR = CAST(ORDERYEAR AS INTEGER); 
     SET OutputRoot.DFDL.ORDERS.ORDER_DATE.ORDER_MONTH = CAST(ORDERMONTH AS INTEGER); 
     SET OutputRoot.DFDL.ORDERS.ORDER_DATE.ORDER_DAY = CAST(ORDERDAY AS INTEGER);