0

我正在尝试使用 XML PARSE 解析 COBOL 中的 XML 文档,一次一段。在 CONTENT-CHARACTERS 检查中,我正在执行 COMPUTE WS-XML-LEN = FUNCTION LENGTH (XML-TEXT)。

有一些我不想处理的元素开始,对于他们来说,即使 XML-TEXT 是空白的,它也会进入 CONTENT-CHARACTERS 检查并计算 (XML-TEXT) = 1 的长度。

您能否让我知道可能是什么原因,我应该在我的程序中进行修改。

4

1 回答 1

1

FUNCTION LENGTH (xyz) 为您提供字段的长度,而不是数据的“长度”。COBOL 没有“字符串分隔符”(文字的特殊用途除外)。

如果 xyz 是 PIC X(30),它将“每次”返回 30,而与字段的内容无关。

您没有提到您使用的是哪个编译器或操作系统,但如果您使用的是 IBM Cobol,您应该生成“LIST”输出(生成的伪汇编代码)。您将看到为 FUNCTION LENGTH ( something ) 生成的代码只是“文字池”中的一个 MVC,它将指向一个与您的字段长度相同的常量值,并且(可能)仅存在因为您使用的是 FUNCTION LENGTH。

“特殊寄存器”的长度是相似的,如果你有的话。

如果您想知道某个字段是否全为空白:

IF something EQUAL TO SPACES

如果你需要知道一个字段的长度,因为你知道一个特定的“尾随”或“前导”值(空格、零、低值等),那么你必须编写一些代码来做到这一点。

为了计算数据并忽略尾随空格,我们常用的方法是使用 FUNCTION REVERSE 然后 INSPECT ... TALLYING ... FOR LEADING SPACE。还有其他方法。

您需要字段的长度(来计算数据的长度),但字段的长度是不变的,因此只计算一次(FUNCTION LENGTH 或plain LENGTH OF)。

FUNCTION LENGTH 和 LENGTH OF 之间存在细微差别,这可能不会影响您的任务。

于 2013-05-03T10:07:32.197 回答