Reputation: 193
I am ESQL newbie and transforming XML to Cobol copybook, one of the XML element is date but in string with a format yyyymmdd for example 20140908
I need to extract the year, month and day out of the string also in numeric
05 orderdate
10 orderyear PIC 9(4)
10 ordermonth PIC 9(2)
10 orderday PIC 9(2)
can I just say something like below:
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);
Thanks Very much
J
Upvotes: 0
Views: 1360
Reputation: 193
Below works fine for me now but of course we can use substring for this and would have been a bit easier.
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);
Upvotes: 0