Прогрраммирование на IBM /360-К.ДжермейнПрогрраммирование на IBM /360-К.Джермейн Учебное пособие по обучению (и самообучению) программированию для вычислительной системы IBM/360. Помимо описания общих принципов работы ЭВМ и программирования читатель здесь найдет — практически полное описание архитектуры IBM/360, т. е. описание ее структуры и функционирования с точки зрения программиста; — описание типовых устройств ввода — вывода; — описание общих принципов работы с массивами данных (файлами); — описание основ организации математического обеспечения, в частности описание языков управления заданиями для различных используемых на IBM/360 операционных систем; — описание наиболее распространенных языков программирования (PL/1, Фортран, Кобол, язык Ассемблера). Книга представляет большой интерес для специалистов по вычислительной технике и программированию' Она будет полезна научным работникам, преподавателям, аспирантам в студентам многих специальностей.
ПРЕДИСЛОВИЕ РЕДАКТОРА ПЕРЕВОДА
IBM/360 — самое многочисленное семейство ЭВМ третьего поколения. Период с 1965 года, когда начались первые поставки этих машин, можно без преувеличения назвать «эпохой IBM/360». Интересно отметить, что новая разработка фирмы IBM — система IBM/370, которую ждали с нетерпением и интересом во всем мире, оказалась «всего-навсего» дальнейшим развитием системы IBM/360. Она сохраняет преемственность в отношении всего огромного программного хозяйства, накопленного своей предшественницей.
Система математического, точнее программного, обеспечения для IBM/360 беспрецедентна по своим масштабам и возможностям. В этой книге автор ставит своей целью дать необходимые сведения, которые позволили бы легко ориентироваться в фирменных материалах по программированию для IBM/360. Естественно, что эти сведения оказались весьма обширными и в определенном смысле разнородными. На одном полюсе — описание устройства для набивки перфокарт — клавишный перфоратор IBM 029, на другом — описание языков программирования как проблемно-, так и машинно-ориентированных (PL/1, Фортран, Кобол, язык Ассемблера).
Описанию языковых средств и возможностей операционных систем автор предпосылает полное описание аппаратных возможностей IBM/360. В книге освещаются структура вычислительной системы в целом, структура центрального процессора, система его команд и форматы данных, с которыми он работает; логика работы каналов и устройств ввода — вывода; система прерываний, позволяющая координировать одновременную работу центрального процессора с многочисленными устройствами ввода — вывода и выполняющая много других функций.
Наибольшую ценность для советского читателя, видимо, представляют сведения о различных операционных системах, употребляемых на IBM/360 и образующих среду, в которой работает программист с предоставленными ему языковыми средствами. Особенно полезным будет знакомство с организацией работы с входными и выходными массивами данных и их структурой.
Таким образом, книгу характеризует комплексный подход к проблеме и большая широта охвата предмета. В отличие от фир-
менных материалов по программированию для IBM/360, представляющих собой сложную систему множества документов, каждый из которых освещает определенный аспект программистской науки, здесь по существу освещена система программирования, так сказать, в целом.
Не приходится сомневаться, что даже ветераны программирования найдут в книге много полезного и интересного. Однако нужно помнить, что автор рассчитывает на новичка, не имеющего специальной подготовки по вычислительной технике, и это побуждает его вести изложение просто и доходчиво, с большим количеством примеров, не забывая и о принципиальной стороне дела.
* *•
*
Как всегда в подобных переводах, едва ли не главную трудность составляла терминологическая проблема. В данном случае положение усугублялось широтой излагаемого материала и необходимостью хоть как-то согласовывать терминологию различных разделов.
В некоторых вопросах пришлось пойти на известное новаторство, естественно, не имея гарантий, что оно будет оправдано последующей практикой.
В частности, наряду с принятым термином «оператор» в качестве эквивалента английского термина statement употребляется термин «предложение». Причина — загруженность русского слова «оператор» массой других значений, отличных от statement.
Вместо привычной плавающей и фиксированной запятой в книге говорится о плавающей и фиксированной точке. Здесь переводчики пошли по дороге, проторенной переводом книги «Универсальный язык программирования PL/I» («Мир», М., 1968).
В некоторых случаях, когда частота повторения какого-либо словосочетания превосходила определенный предел, оно заменялось более коротким словосочетанием или просто одним словом. Так возник, например, контроллер вместо «устройства управления устройством ввода — вывода» и «спецификатор формата» вместо «элемента списка формата». Остается надеяться, что отдельные терминологические трудности не помешают читателю разобраться в сути дела.
В заключение заметим, что оригинал книги изобиловал опечатками и переводчики (в переводе книги участвовали В. П. Кузнецов, В. Г. Лесюк, Т. В. Макарова, Н. Ф. Музылева, Ж. П. Сватков, Л. А. Какунин) взяли на себя смелость их исправить, не делая специальных оговорок. В то же время переводчики не имели возможности прорешать все предлагаемые автором упражнения и в основном сохранили ответы оригинала.
В. С. Штаркман
ПРЕДИСЛОВИЕ
Эта книга была задумана как учебник, адресованный тем, кто хочет изучить программирование для системы IBM/360 самостоятельно или на соответствующих курсах. Для ее понимания практически не требуется никаких предварительных сведений по вычислительной технике (в частности, сведений о перфокартах). Требования к математической подготовке читателя также весьма скромны — за исключением нескольких задач, э'ти требования не выходят за пределы элементарного курса алгебры.
Книга охватывает применения машин как для экономических задач, так и для научных исследований, что нашло отражение в подборе примеров и упражнений для самостоятельного р ешения.
Материал расположен в порядке, который можно считать традиционным для подобного рода курсов по программированию. Описани языков программирования — PL/1, Фортрана, Кобола и языка Ассемблера (автокода) — ведется независимо в отдельных главах, так что читатель без всякого ущерба может пропустить те или иные разделы.
Книга написана применительно к Моделям 25, 30, 40, 50, 65, 75 и 85. Ее можно использовать и для Моделей 44, 67, 91 и 95, хотя в ней не оговорено, какие команды из общего набора отсутствуют на Модели 44 или какими особенностями обладают прерывания на Моделях 91 и 95. Не рассматриваются каналы «память — память» Моделей 91 и 95, дополнительные возможности Модели 44, а также специальные средства Модели 67 для работы в режиме разделения времени. Совершенно оставлена в стороне Модель 2Q.
В основном сведения о Дисковой Операционной Системе (DOS) и Операционной Системе (OS) разнесены по разным главам, и поэтому здесь читатель также может ограничиться лишь интересующими его разделами. Возможности Ленточной Опера-
ционной Системы (TOS) и Базовой Операционной Системы (BOS) описаны практически исчерпывающе. В .меньшей мере затронуто Базовое Программное Обеспечение (BPS), и совсем не освещены Система Программирования Модели 44 и Система Разделения Времени Модели 67, хотя они во многих отношениях аналогичны OS.
Цель данной книги — сообщить читателям тот круг сведений, которые дадут ему возможность легко и быстро ориентироваться в множестве фирменных документов по IBM/360. Поэтому, в частности, автор и не пытался описать языки программирования во всех деталях.
Читателю, приступающему к изучению этого курса, рекомендуется обзавестись линейкой для рисования логических схем программ и бланками для программирования на различных языках. Желательно также — если это возможно, — чтобы он располагал каким-либо комплектом фирменных руководств по Системе IBM/360.
Сент-Пол, Миннесота Кларенс Б. Джармейн
ОГЛАВЛЕНИЕ
Предисловие редактора перевода................. ?
Предисловие .......................... 7
Глава 1. Перфокарта...................... 9
1.1. Герман Холлерит ................. 9
1.2. Перфокарта IBM.................. 10
1.3. Клавишный перфоратор IBM-029 .......... 12
1.4. Устройства для единичных записей .......>.. 19
1.5. Коммутационная доска.............•. . 21
Упражнения № 1 ................. 26
Глава 2. Математические понятия................ 28
2.1. Вещественные числа................ 28
2.2. Индексы ..................... 29
2.3. Системы счисления ................ 30
Упражнения № 2................. 33
2.4. Плавающая точка................. 33
2.5. Булева алгебра.................. 35
2.6. Дополнение.................... 36
2.7. Ошибки округления................ 37
Упражнения № 3................. 38
2.8. Статистика .................... 39
2.9. Матрицы ..................... 41
Упражнения № 4................. 44
2.10. Логарифмы.................... 45
2.11. Тригонометрия.................. 47
2.12. Комплексные числа................ 48
Упражнения № 5................. 49
Глава 3. Вычислительные машины................ 50
3.1. Программы и блок-схемы ............. 50
3.2. Байты ...................... 52
3.3. Буквенно-цифровая информация.......... 54
3.4. Код ASCII .................... 55
Упражнения № 6................. 56
3.5. Память на магнитных сердечниках ........ 57
3.6. Поля и слова................... 60
3.7. Регистры..................... 61
3.8. Управление.................... 62
3.9. Система 360 ................... 63
Упражнения № 7................. 64
Глава 4. Команды........................ 65
4.1. Команды IBM-360................. 65
4.2. Числа с фиксированной точкой'.......... 66
4.3. Команды с фиксированной точкой......... 67
Упражнения № 8................. 72
4.4. Переходы..................... 72
4.5. Программа-монитор................ 77
Упражнения № 9................. 82
4.6. Формат SS (память — память)........... 83
v 4.7. Упакованные данные ............... 85
4.8. Десятично-двоичные преобразования........ 87
4.9. Десятичная арифметика.............. 89
4.10. Прерывания.................... 92
4.11. PSW....................... 94
Упражнения № 10................. 95
•J Глава 5. Программирование ввода — вывода . „......... 98
5.1. Основные понятия ввода — вывода......... 98
5.2. Скорость передачи данных ............ 101
5.3. Программа канала ................ 102
5.4. Связь между CPU и каналом........... 106
5.5. Прерывания ................... 109
5.6. Байты состояния и уточненного состояния..... 111
5.7. Пример...................... 114
Упражнения № 11 ................ 117
5.8. Начальная загрузка программ........... 118
5.9. CCW....................... 119
5.10. Байт состояния канала.............. 122
5.11. Начать ввод — вывод............... 124
5.12. Остановить ввод — вывод..........." . . 127
5.13. Опросить канал (ТСН) .............. 127
5.14. Опросить ввод — вывод (ТЮ)........... 128
5.15. Прерывания от ввода — вывода.......... 130
Упражнения № 12................ 132
Глава 6. Устройства ввода — вывода............... 134
6.1. Интерфейс .................... 134
6.2. Устройство чтения перфокарт 2501 ........ 137
6.3. Устройство чтения — перфорации карт 2520 .... 141
6.4. Устройство чтения — перфорации карт 1442 .... 145
6.5. Устройство чтения — перфорации карт 2540 .... 149
6.6. Пультовая пишущая машинка 1052 ........ 155
6.7. Построчно печатающее устройство......... 158
Упражнения № 13 ................ 163
6.8. Лентопротяжные устройства............ 165
6.9. Функционирование лентопротяжных устройств . . . 172
6.10. Память на дисках 2311 .............. 179
6.11. Организация данных в запоминающих устройствах с прямым доступом................. 182
6.12. Коды команд для DASD ............. 186
6.13. Байты состояния и уточненного состояния для DASD 195
6.14. Другие запоминающие устройства с прямым доступом 198 Упражнения № 14 ................ 200
Глава 7. Дополнительные команды................ 202
7.1. Числа с плавающей точкой............ 202
7.2. Команды с плавающей точкой........... 203
Упражнения № 15 ................ 206
7.3. Команды, выполняющие действия над полусловами 208
7.4. Команды формата RS ............... 209
7.5. Команды формата SI ............... 210
7.6. Логические команды ............... 211
Упражнения № 16 ................ 212
7.7. Команды переходов................ 214
7.8. Команды сдвига.................. 216
7.9. Некоторые дополнительные команды ....... 218
7.10. Привилегированные команды ........... 220
7.11. Средства защиты ................. 221
Упражнения № 17 ................ 222
7.12. Программные прерывания............. Упражнения № 48................ 683
18.15. Область связи.................. 685
18.16. Макрокоманды супервизора ........... 687
18.17. Межпрограммные связи............. 690
18.18. Рекурсивная программа.............. 695
18.19. Язык макроопределений............. 698
Упражнения № 49................ 701
Глава 19. Макрокоманды OS................... 703
19.1. Операционная система.............. 703
19.2. Ввод — вывод.................. 703
19.3. Блок управления данными............ 705
19.4. Спецификации DCB во время исполнения программы 710
19.5. Буферизация для методов доступа с очередями . . . 712
19.6. QSAM ..................... 715
19.7. QISAM..................... 721
19.8. Несколько примеров............... 726
Упражнения № 50................ 731
19.9. Буферизация для базисного метода доступа .... 732
19.10. BSAM ..................... 734
19.11. BISAM .................... 740
19.12. BDAM ..................... 743
Упражнения № 51................ 748
19.13. Макрокоманды супервизора ........... 749
19.14. Простейшие межпрограммные связи........ 753
19.15. Динамические связи программ.......... 755
Упражнения № 52................ 757
Приложение А. Коды......'Ч................ 758
Приложение В. Набор команд.................. 764
Приложение С. Ввод — вывод.................. 778
Приложение D. Основные сведения о процессоре.......... 782
Приложение Е. Основные сведения о языке PL/I.......... 788
Приложение F. Основные сведения о Фортране.......... 800
Приложение G. Основные сведения о Коболе........... 810
Приложение Н. Программа-монитор ............... 818
Приложение I. Управляющие символы.............. 826
Приложение J. Основные сведения о языке Ассемблера....... 827
Приложение К. Основные сведения о DOS............ 832
Приложение L. Основные сведения об OS............. 838
Ответы к упражнениям...................... 846
Библиография.......................... 852
Словарь............................. 853
Предметный указатель......................
224
7.13. Другие типы прерываний............. 227
7.14. Команды перекодировки.............. 228
7.15. Редактирование.................. 230
7.16. Команда выполнить................ 234
Упражнения № 18 ................ 235
/
/ Глава 8. Некоторые вопросы программирования.......... 237
8.1. Назначение программирования........... 237
8.2. Логические схемы системы............. 238


Hosted by uCoz