首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XML到COBOL的ESQL转换及字符串数据的导出

XML到COBOL的ESQL转换及字符串数据的导出
EN

Stack Overflow用户
提问于 2014-09-08 14:13:54
回答 1查看 1.2K关注 0票数 0

我是ESQL新手,正在将XML转换为Cobol复制本,其中一个XML元素是日期,但在字符串中的格式为yyyymmdd例如20140908

我需要从字符串中提取年、月和日,也要用数字表示

代码语言:javascript
复制
05 orderdate
    10 orderyear    PIC 9(4)
    10 ordermonth   PIC 9(2)
    10 orderday     PIC 9(2)

我可以说下面这样的话:

代码语言:javascript
复制
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

EN

回答 1

Stack Overflow用户

发布于 2014-09-19 13:40:54

下面的代码对我来说很好,但当然我们可以使用substring,这样会更容易一些。

代码语言:javascript
复制
        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);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25718333

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档