Проектированиеиразработкаприложенийдляz/OS 251
Несмотря на то, что назначение битов в ASCII может выглядеть более логичным,
имеется огромное количество существующих данных в кодировке EBCDIC и огромное
количество программ, чувствительных к набору символов, что делает преобразование
всех существующих данных и программ в кодировку ASCII неосуществимым.
Набор символов имеет последовательность сортировки, соответствующую двоич-
ному значению битов символов. Например, A имеет меньшее значение, чем B
и в ASCII, и в EBCDIC. Последовательность сортировки важна для сортировки, а также
практически для всех программ, просматривающих текстовые строки и управляю-
щих ими. Последовательность сортировки для основных групп символов в этих двух
наборах символов имеет следующий вид:
EBCDIC ASCII
Наименьшеезначение:
пробел пробел
знакипрепинания знакипрепинания
нижнийрегистр
цифры
верхнийрегистр верхнийрегистр
Наибольшеезначение:
цифры нижнийрегистр
Например, в EBCDIC «a» меньше, чем «A», тогда как в ASCII «a» больше, чем «A».
Цифровые символы меньше любой буквы алфавита в ASCII, однако больше любой
буквы в EBCDIC. A-Z и a-z представляют собой две непрерывные последовательности
в ASCII. В EBCDIC существуют промежутки между некоторыми буквами. В ASCII, если
отнять A от Z, получится 25. Если отнять A от Z в EBCDIC, получится 40 (в связи с про
-
межутками в двоичных значениях между некоторыми буквами).
Преобразование простых текстовых строк между ASCII и EBCDIC выполняется прос-
то. Ситуация усложняется, если преобразуемый символ отсутствует в стандартном на-
боре символов целевого кода. Хорошим примером является символ логического не
(not), используемый в одном из основных языков программирования для мэйнфреймов
(PL/I); в наборе символов ASCII нет соответствующего символа. Подобным образом не-
которые символы ASCII, используемые в программировании на языке C, отсутствовали
в первоначальном наборе символов EBCDIC, хотя позже и были добавлены в EBCDIC.
Все еще существует некоторая путаница в связи со знаком цента (¢) и символом крышки
(^), а также с некоторыми другими редко использующимися символами.
Кроме того, на мэйнфреймах используется несколько версий двухбайтовых набо-
ров символов (DBCS) главным образом для азиатских языков. Такие же наборы сим-
волов используются некоторыми программами на PC.
В традиционном программировании для мэйнфреймов не используются специ-
альные символы для завершения полей. В частности, не используются нулевые сим-
волы и символы новой строки (или пары символов CL/LF). Не существует понятий
двоичного и текстового файла. При правильном программировании байты могут
интерпретироваться как относящиеся к EBCDIC, ASCII или другой кодировке. При
отправке таких файлов на принтер мэйнфрейма он попытается интерпретировать
их как EBCDIC-символы, так как принтер чувствителен к набору символов. Веб-сервер
z/OS Web обычно сохраняет ASCII-файлы, так как данные будут интерпретироваться
браузерами на PC, ожидающими ASCII-данных. Если никто не будет пытаться распе-
чатывать ASCII-файлы на принтере мэйнфрейма (или выводить их на терминале
3270), системе все равно, какой набор символов используется.