В настоящее время мы пытаемся преобразовать наш старый код COBOL из ANSII в UNICODE, однако мы столкнулись с проблемой, когда простое изменение полей PIC X на PIC N и установка NSYMBOL (NATIONAL) вызовут проблемы, когда структуры данных содержат REDEFINES или Оператор RENAME с элементарными элементами DATA с использованием полей 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. .etc
Вопрос в том, как при использовании типов данных NATIONAL (UTF-16) можно обрабатывать числовые значения, чтобы получить правильные данные после их переопределения.
Я могу заставить это работать следующим образом, но получу недопустимые данные в другом WS-RECORD.
MOVE 123456 TO WS-NUM.
MOVE N"ABCDEFGHIJKLM" TO WS_DATA.
Вышеприведенное будет правильным, однако, если я изучу WS-RECORD, я увижу ??? ABCDEFGHIJKLM где ??? является X "313233343536" в шестнадцатеричном формате.
Наша проблема в том, что у нас есть несколько записей данных в зависимости от идентификатора типа записи, мы также используем переопределения во многих наших элементах ССЫЛКИ.
Кто-нибудь имел опыт перехода от устаревшего ASCII к UNICODE?