xml - 为什么 COBOL 生成的 XML 中缺少编码属性?

标签 xml cobol microfocus

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

       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>

最佳答案

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 语句只是记录性的,因此也不会生成任何代码。

关于xml - 为什么 COBOL 生成的 XML 中缺少编码属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68942325/

相关文章:

cobol - 查看由IBM Enterprise COBOL编译器生成的代码

cobol - 在 COBOL 中查找字符串中的子字符串

cobol - Cobol 文件状态 9 是什么意思?

php - PHP 的配置管理器

xml - 我可以在 xsl for-each 中使用 'and' 运算符吗?

cobol - 如何在 COBOL 中存储 VSAM 密码文件的凭据?

postgresql - Postgres 是否提供符合 XA 的资源管理器?

java - 从 Cobol 调用 Java 程序

java - 组织.jdom.IllegalAddException : The Content already has an existing parent "root"

xml - 如何不使用Java将xml数据直接加载到Hive Table中而无需将其转换为平面文件