【问题标题】:Why is encoding attribute missing in XML generated by COBOL?为什么 COBOL 生成的 XML 中缺少编码属性?
【发布时间】:2021-10-26 17:44:25
【问题描述】:

以下程序的预期输出和实际输出不同的原因可能是什么?实际输出缺少编码。

       IDENTIFICATION DIVISION.
       PROGRAM-ID. FOO.

       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01 doc PIC X(512).
       01 Greeting.
           05 msg PIC X(80) VALUE "Hello, world!".

       PROCEDURE DIVISION.
           XML GENERATE doc FROM Greeting
               WITH ENCODING 1208
               WITH XML-DECLARATION
           END-XML
           DISPLAY doc.
           STOP RUN.

代码编译成功。我正在使用 Micro FocusVisual COBOL 5.0

预期输出:

<?xml version="1.0" encoding="UTF-8"?>
<Greeting><msg>Hello, world!</msg>
</Greeting>

实际输出:

<?xml version="1.0" ?><Greeting>
<msg>Hello, world!</msg></Greeting>

【问题讨论】:

  • 可能是因为 1208 不是有效的代码页。为 UTF-8 尝试 65001
  • 试过但没用。
  • 您是否尝试过删除 WITH ENCODING 子句并在 generate 语句前添加 XML SET ENCODING "utf-8"
  • Microfocus XML 手册可以在microfocus.com/documentation/visual-cobol/VC40/…找到
  • 它工作!无论如何,我阅读文档以查看是否应该为 XML 生成语句安装一些库。但是,由于没有编译错误,我怀疑它的库问题。我遵循链接 (microfocus.com/documentation/enterprise-developer/ed50pu3/…) 中的 XML 生成逻辑。除了编码之外,每件事都按照链接中提到的语句工作。

标签: xml cobol microfocus


【解决方案1】:

XML 只接受两种编码,utf-8 和 utf-16,utf-8 是默认值。从文档看来,只有在不是 utf-8 时才需要编码。由于省略它是合法的,因此不会生成该子句。

对于utf-16编码,将doc改为

01 doc PIC n(512) usage national.

如果您查看https://www.microfocus.com/documentation/visual-cobol/VC232/EclWin/HRLHLHPDFC0G.html(MicroFocus XML GENERATE 的网页) 它说 ENCODING 语句只是记录性的,因此也不会生成任何代码。

【讨论】:

    猜你喜欢
    • 2011-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-10
    • 1970-01-01
    • 1970-01-01
    • 2016-11-30
    • 1970-01-01
    相关资源
    最近更新 更多