Управляющие символы принтера машинного кода IBM
Первые принтеры для мейнфреймов обычно были линейными принтерами . Линейные принтеры предоставляют ограниченный набор команд для управления продвижением бумаги при печати строк печати. Отчеты о написании приложений, списки и т. д., подлежащие печати, должны включать эти команды в данные печати. Эти односимвольные команды печати называются символами управления принтером .
Знакомство с символами управления печатью
[ редактировать ]Символы управления принтером и символы управления кареткой — это термины мэйнфреймов IBM, обозначающие особое значение, которое может иметь первый символ в строке печатаемого текста. Первый символ каждой строки текста интерпретируется как управляющий символ или команда принтера, печати установлен соответствующий атрибут а не как символ для печати, если для набора данных ( набор данных — это мейнфрейм, который обозначает так называемый файл на другом компьютере). операционные системы).
Как символы управления принтером работают
[ редактировать ]Хотя позже в основном они были заменены электронными версиями, линейные принтеры первоначально использовали петлю из перфоленты для контроля движения бумаги во время печати. Эта лента называется лентой контроля каретки и устанавливается на принтер. Закрученная лента каретки движется синхронно с потоком фальцованной бумаги .
Линейные принтеры оснащены 12 датчиками для распознавания 12 независимых положений на ленте контроля каретки. Каждая позиция называется каналом и имеет номер от 1 до 12. Если в канале пробивается отверстие, то это отверстие отмечает позицию на странице, к которой принтер может быстро «перейти», продвигаясь вперед до тех пор, пока отверстие не будет обнаружено соответствующим датчик канала. Это называется переходом на канал номер n .
Команды реализованы таким образом, что можно перейти к каждому из 12 каналов. Вместо того, чтобы писать пустые строки печати, приложения могут просто перейти на предопределенный канал, если между текущей позицией и целевой позицией ничего не нужно записывать, что в то время является огромным выигрышем в производительности.
Помимо команд перехода к каналу , существуют и другие команды, которые принтер интерпретирует, чтобы либо оставаться на текущей строке, либо перемещать одну, две или три строки. Оставаясь на текущей строке, можно создать:
- Выделите жирный текст, переписав один и тот же текст два или три раза в одной строке. В результате повторной печати на бумагу попадало больше чернил, что приводило к появлению жирного текста.
- Подчеркнутый текст путем написания символов подчеркивания в нужных позициях после написания подчеркнутого текста.
- Зачеркивание текста путем написания символов тире в нужных позициях после написания зачеркиваемого текста.
Если дать принтеру указание перейти к каналу, который не перфорирован, принтер продолжит подачу бумаги на высокой скорости. Это может быть вызвано несоответствием установленной ленты и той, которую ожидает приложение.
Особое значение Первого канала
[ редактировать ]По соглашению позиция на листе бумаги, где должна быть написана первая строка печати, связана с Каналом 1 . Например, если первая строка текста всегда должна находиться на физической строке 3 для данной формы, то отверстие канала 1 должно быть пробито в строке 3 ленты управления кареткой.
По соглашению, приложения мэйнфреймов IBM всегда переходят на канал 1 при начале новой логической страницы.
Канал 12 встречается реже, но обычно обозначает строку на странице, где нижний колонтитул можно распечатать .
Типы управляющих символов принтера
[ редактировать ]Наборы данных печати в операционных системах мэйнфреймов IBM могут иметь один из двух вариантов управляющих символов принтера:
- Управляющие символы ASA , см. раздел Символы управления кареткой ASA .
- Управляющие символы IBM Machine . Описано в этой статье.
Атрибут, указывающий наличие символов управления печатью, является частью атрибута формата записи (также известного как RECFM), поэтому должен допускать два варианта:
- RECFM=..A указывает, что набор данных содержит управляющие символы ASA.
- RECFM=..M указывает, что набор данных содержит символы управления компьютером IBM.
Управляющие символы ASA
[ редактировать ]Управляющие символы ASA представляют собой логические команды принтера. Они сообщают принтеру, насколько далеко продвинуть бумагу перед печатью текущей строки текста. Все управляющие символы ASA являются отображаемыми символами. Сами принтеры не понимают эти символы, поэтому драйвер принтера должен преобразовать их в соответствующие команды принтера при отправке данных печати на принтер.
Символы управления машиной IBM
[ редактировать ]Символы управления машиной, напротив, представляют собой аппаратные команды, которые понимают линейные принтеры IBM. Вот почему они зависят от оборудования или определяются аппаратно. IBM определила этот набор команд для своих линейных принтеров и позаботилась о том, чтобы все их линейные принтеры их понимали. Другие производители линейных принтеров (мэйнфреймов) также должны были убедиться, что их принтеры понимают эти команды. Поскольку символы управления машиной являются аппаратными командами, многие из них не являются отображаемыми символами, и поэтому символы управления машиной всегда указываются как шестнадцатеричные значения.
Основное различие между ASA и символами управления машиной
[ редактировать ]Основное различие между двумя наборами управляющих символов принтера может заключаться в переносимости управляющих символов ASA и аппаратной зависимости управляющих символов машины. Тот факт, что элементы управления ASA имели пространство до записи , а машинные элементы управления имели пространство после записи, может потребовать преобразования некоторых потоков данных.
Языковая поддержка управления принтером
[ редактировать ]Многие языки программирования просто помещают нужный управляющий символ в первый байт выводимой строки. COBOL и PL/I также имеют независимый от системы метод указания элементов управления принтером. Компилятор или среда выполнения преобразуют эти параметры в соответствующий управляющий символ.
КОБОЛ
[ редактировать ]COBOL использует синтаксис WRITE record-name AFTER ADVANCING n Lines.
, где имя_записи — это имя области, содержащей строку, а n — количество строк. Кроме того BEFORE ADVANCING
можно использовать или BEFORE|AFTER ADVANCING TOP
чтобы перейти к началу новой страницы. [1]
ПЛ/И
[ редактировать ]PL/I использует синтаксис PUT SKIP(n) ...
пропустить n строк перед печатью или PUT PAGE ...
чтобы перейти на новую страницу.
Список символов управления машинной печатью IBM
[ редактировать ]IBM определила два набора команд принтера, поэтому доступны два набора управляющих символов принтера. Первый набор команд не отправлял на принтер никаких данных для печати, а только команду перемещения бумаги. Это так называемые немедленные команды . Второй набор команд отправляет на принтер данные для печати в текущей строке, а также инструкцию по перемещению бумаги. Обратите внимание , что в отличие от управляющих символов ASA, символы управления машинной печатью IBM требуют, чтобы принтер сначала распечатал данные в текущей строке, а затем продвинул бумагу.
Немедленные команды
[ редактировать ]Эти команды не отправляют никаких данных на принтер. Команды только просят принтер продвинуть бумагу.
Контрольный код | Действие |
---|---|
х'03' | Никакой операции. |
х'0B' | Пробел 1 строка немедленно |
х'13' | Пробел 2 строки немедленно |
х'1B' | Пробел 3 строки немедленно |
х'8B' | Сразу перейти на канал 1 |
х'93' | Немедленно перейти на второй канал |
х'9В' | Немедленно перейти на канал 3 |
х'А3' | Немедленно перейти на канал 4. |
х'AB' | Немедленно перейти на канал 5. |
х'B3' | Немедленно перейти на канал 6. |
х'BB' | Немедленно перейти на канал 7. |
х'C3' | Немедленно перейти на канал 8. |
х'CB' | Немедленно перейти на канал 9. |
х'D3' | Сразу перейти на канал 10. |
х'БД' | Сразу перейти на 11 канал. |
х'E3' | Сразу перейти на 12 канал. |
Команды записи и пробела
[ редактировать ]Команды записи и пробела просят принтер записать данные в строку, а затем переместить бумагу.
Код управления | Действие |
---|---|
х'01' | Пишите без пробелов |
х'09' | Напишите и пробел через 1 строку |
х'11' | Напишите и пропустите 2 строки |
х'19' | Напишите и пропустите 3 строки. |
х'89' | Напишите и перейдите на канал 1 |
х'91' | Напишите и перейдите на канал 2 |
х'99' | Напишите и перейдите на канал 3 |
х'А1' | Напишите и перейдите на канал 4 |
х'А9' | Пишите и переходите на 5 канал |
х'B1' | Напишите и перейдите на канал 6 |
х'B9' | Пишите и переходите на 7 канал |
х'C1' | Пишите и переходите на 8 канал |
х'C9' | Пишите и переходите на 9 канал |
х'D1' | Пишите и переходите на 10 канал |
х'D9' | Пишите и переходите на 11 канал |
х'E1' | Пишите и переходите на 12 канал |
См. также
[ редактировать ]- Символы управления кареткой ASA
- Линейный принтер
- Лента контроля каретки
- Набор данных (мейнфрейм IBM)
Ссылки
[ редактировать ]- z/OS DFSMS Использование наборов данных -> Использование дополнительных управляющих символов
- PSF для z/OS: Руководство пользователя -> Использование символов управления кареткой в записях строковых данных
- «Расширенное представление функций — Руководство по программированию и справочник по линейным данным -> Глава 2. Линейные данные и данные MO:DCA (AFP) -> Линейные данные» (PDF) . Архивировано из оригинала (PDF) 29 мая 2016 г.
- ^ Корпорация IBM (август 2009 г.). Справочник по языку Enterprise COBOL для z/OS (PDF) . стр. 478–482 . Проверено 30 июня 2020 г.