我们目前正在寻求将我们的传统COBOL代码从ANSII转换为UNICODE,但是我们遇到了一个问题,即仅将PIC X字段更改为PIC N并设置NSYMBOL(NATIONAL)将导致数据结构包含REDEFINES或RENAME语句的基本数据项使用PIC 9字段时出现问题。
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..等内容。
问题是,在使用NATIONAL (UTF-16)数据类型时,如何处理数字,以便在重新定义后获得正确的数据。
我可以通过以下方式解决这个问题,但是其他WS-RECORD将会得到无效的数据。
MOVE 123456 TO WS-NUM.
MOVE N"ABCDEFGHIJKLM" TO WS_DATA.
以上内容是正确的,但如果我检查WS-RECORD,我会看到???ABCDEFGHIJKLM,其中???是十六进制的X"313233343536"。
我们的问题在于,我们有多个数据记录,取决于记录类型标识符,我们还在许多LINKAGE ITEM上使用重新定义。
有没有人有从传统ASCII转移到UNICODE的经验?