使用 XML 生成函数调整生成的名称

  • 本文关键字:函数 XML 使用 调整 cobol
  • 更新时间 :
  • 英文 :


如果我有这样的COBOL结构:

(结构应该是这样的,因为我必须用XML Generate Function转换它,变量名只是样本)

01. MyData.
02. Corp-Entity
03. Corp-Branch1.
04. Address.
05. AddressLine1 PIC X(20).
05. AddressLine2 PIC X(20).
05. PostalCode   PIC 9(05).
04. PIC-Entity.
05. Address.
06. AddressLine1 PIC X(20).
06. AddressLine2 PIC X(20).
06. PostalCode   PIC 9(05).

如何在05. AddressLine1中移动值?

如果我写这段代码:

move valueAddressLine1 to AddressLine1 
in Address
in Corp-Brach1
in MyData

但此代码对06. AddressLine1有效

move valueAddressLine1 to AddressLine1 
in Address
in PIC-Entity

错误消息:">PIC 实体地址的地址行 1"不是唯一定义的名称。无法
从上下文中确定要使用的定义。 对名称的引用已被丢弃。

前注:

  • 由于级别数字之后的句点,该代码将不起作用,请删除这些。
  • 要拥有唯一的名称,您不需要完整的资格。例如,以下内容就可以了:
move valueAddressLine1 to AddressLine1 
in PIC-Entity

答:

在这种情况下:通过使用可以唯一访问的名称来"修复"COBOL 端,在大多数情况下,可以通过其"父"项访问,并且不可能像您的04 Address那样使用不同的名称(例如04 corp-address)。

由于您希望在XML中具有此结构,因此您可以使用NAME短语,因为IBM的文档XML元素名称和属性名称形成说:

在从标识符 2生成的 XML 文档中,XML 元素名称和属性名称是从NAME短语(如果指定)获取的;否则,它们派生自标识符 2 指定的数据项的名称以及从属于标识符 2的任何合格数据名称。

IBM 关于 XML GENERATE 语句的文档对此有详细说明。对于给定的样本并假设有 2 个公司分支:

XML GENERATE variable-name
FROM Corp-Entity
NAME OF corp-address in corp-branch1 IS 'Address'
corp-address in corp-branch2 IS 'Address'

最新更新