2016-05-06 5 views
0

Я работаю на преобразования некоторого наследия COBOL код и наткнулся на такое заявление:Cobol ЗАМЕНА ВСЕХ шаблону

INSPECT WS-LOCAL-VAR REPLACING ALL X'0D25' BY ' ' 

Я понимаю, что ПРОВЕРЬТЕ ... ЗАМЕНА Высказывание будет выглядеть через WS-LOCAL -VAR, сопоставьте шаблон X'0D25 'и замените его пробелом.

То, что я не понимаю, является целью X вне '0D25'. Все примеры ЗАМЕНЫ ВСЕГО, которые я нашел в Интернете, не используют ничего, кроме символьного литерала для сопоставления шаблонов.

Как влияет X, какие шаблоны заменяются?

COBOL работает на машине EBCDIC, а входной файл поступает с Windows-машины.

+0

Я предполагаю, что «X» сообщает вам, что литерал интерпретируется как шестнадцатеричный код символа. Я не знаю, что делает OP. –

+0

Я нашел сотрудника с большим опытом работы COBOL и подтвердил, что вы правы, он соответствует на основе символа с шестнадцатеричным кодом «0D25» (я написал его неправильно в вопросе) – arseniy

+0

Добро пожаловать: -} –

ответ

2

ли Cobol работает на EBCDIC машины (мэйнфреймы/AS400) и файл исходит от Windows, машины ???.

Ebcdic имеет только один символ конца строки x'25 ', который относится к 2 (\ r, \ n) в ascii. X'0D25' является EBCDIC представление ОкнаEnd-линии Маркер\ г \ п. В Ebcdic 0D не является допустимым символом.

Возможно, источники проблемы:

  • Плохое преобразование текстового файла Windows, когда передан на ЭВМ/AS400.
  • Java (и, возможно, другие современные языки) в Windows. Java на окнах поддерживает запись текстовых файлов Ebcdic с использованием стандартных авторов. Но в Windows Java настаивает на написании \ r \ n, хотя \ r является недействительным символом EBCDIC, и вы получаете поврежденные файлы, содержащие x'0D25 '.
  • Если вы переместите программу с жесткими кодами \ r \ n на мэйнфрейм и запустите ее, вы также получите x'0d25 'в файлах.
+0

EBCDIC x ' 0D 'по-прежнему является символом CR.Похоже, что передача файлов неправильно преобразует конец строк из исходной системы, но она преобразует символ X'0A 'LF в эквивалент EBCDIC X'25'. –

4

X указывает, что символы в строке находятся в шестнадцатеричном формате. В этом случае X"0D" указывает символ возврата каретки и знак X"25" знак% (при условии, что система ASCII).

Аналогичное обозначение используется для обозначения национальных строк (N" こんにちは") и логическое значение/битовых строк (B"0101010") и их соответствующие шестнадцатеричные эквиваленты (NX"01F5A4" и BX"2A").

 Смежные вопросы

  • Нет связанных вопросов^_^