【发布时间】:2011-05-11 05:33:10
【问题描述】:
我们目前正在寻求将旧的 COBOL 代码从 ANSII 转换为 UNICODE,但是我们遇到了一个问题,即当数据结构包含 REDEFINES 或使用 PIC 9 字段的带有基本 DATA 项的 RENAME 语句。
01 WS-RECORD PIC N(26).
01 WS-RECORD-1 REDEFINES WS-RECORD.
02 WS-NUM PIC 9(6).
02 WS-DATA PIC N(20).
MOVE N"123456ABCDEFGHIJKLM" TO WS-RECORD.
在上面被移动的字符串将是 UTF-16 格式,因此字段 WS-NUM 将被破坏,因为它将包含无效数字 X"310032003300",WS-DATA 将包含 X"3400350036004100。 .etc
问题是,当使用 NATIONAL (UTF-16) 数据类型时,如何处理数字,以便在重新定义后获得正确的数据。
我可以通过以下方式让它工作,但会在其他 WS-RECORD 中获得无效数据。
MOVE 123456 TO WS-NUM.
MOVE N"ABCDEFGHIJKLM" TO WS_DATA.
以上内容是正确的,但是如果我检查 WS-RECORD,我会看到 ???ABCDEFGHIJKLM where ???是十六进制的 X"313233343536"。
我们的问题是我们有多个数据记录,具体取决于记录类型标识符,我们还在许多 LINKAGE 项目上使用重新定义。
有人有从传统 ASCII 转换为 UNICODE 的经验吗?
【问题讨论】:
标签: cobol