首页 > 解决方案 > 为什么 COBOL 生成的 XML 中缺少编码属性?

问题描述

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

       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 Focus的Visual 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>

标签: xmlcobolmicrofocus

解决方案


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


推荐阅读