user2381130
user2381130

Reputation: 193

ESQL transform from XML to COBOL and extarct date from string

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

Answers (1)

user2381130
user2381130

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

Related Questions