1. Введение в JCL и архитектуру мейнфреймов
Введение в JCL и архитектуру мейнфреймов
Добро пожаловать в курс «Основы JCL для начинающих». Если вы читаете эти строки, значит, вы решили прикоснуться к одной из самых надежных, мощных и, не побоюсь этого слова, легендарных технологий в мире IT — мейнфреймам.
Многие новички ошибочно полагают, что мейнфреймы — это пыльные шкафы из 70-х годов, которые давно пора списать. Однако реальность такова: если вы сегодня расплачивались картой, бронировали билет на самолет или проверяли баланс в банковском приложении, с вероятностью 99% ваша транзакция была обработана именно мейнфреймом.
В этой первой статье мы разберем, что такое мейнфрейм, как он устроен, и почему для работы с ним нам жизненно необходим язык JCL.
Что такое мейнфрейм?
Мейнфрейм (Mainframe) — это высокопроизводительный сервер, предназначенный для обработки огромных объемов данных и проведения миллиардов транзакций в день с высочайшей надежностью.
В отличие от обычных серверов или персональных компьютеров, которые оптимизированы для скорости работы одного пользователя или одной задачи, мейнфреймы спроектированы для массового параллелизма. Они могут обслуживать тысячи пользователей и запускать тысячи программ одновременно, не теряя ни бита информации.
!Современный мейнфрейм IBM z16, демонстрирующий, что это современное и мощное оборудование.
Ключевые характеристики мейнфреймов
Операционная система z/OS
Железо — это только половина успеха. Чтобы управлять такой мощью, нужна специальная операционная система. Самой распространенной ОС для мейнфреймов IBM является z/OS.
z/OS — это сложная, многопользовательская и многозадачная система. Она управляет памятью, процессорами и, что самое важное для нас, заданиями (Jobs).
Пакетная обработка vs Интерактивная обработка
Чтобы понять суть JCL, нужно разобраться в двух режимах работы компьютера:
* Интерактивная обработка (Online Processing): Это то, к чему мы привыкли. Вы нажимаете кнопку — получаете результат. Пример: кассир в банке вводит ваши данные, и система мгновенно выдает информацию о счете. Здесь важна скорость реакции. * Пакетная обработка (Batch Processing): Это выполнение задач без участия человека. Пример: ночью банк должен начислить проценты по вкладам для миллионов клиентов. Системе не нужно отвечать мгновенно, ей нужно обработать огромный массив данных к утру.
Именно в пакетной обработке мейнфреймы являются абсолютными лидерами. И именно здесь на сцену выходит JCL.
Что такое JCL?
JCL (Job Control Language) — это язык управления заданиями. Это скриптовый язык, который используется в операционных системах мейнфреймов IBM (таких как z/OS) для инструктажа системы о том, как выполнять пакетное задание (Job).
Важно понимать: JCL — это не язык программирования в привычном смысле (как Java, Python или COBOL). На JCL вы не пишете логику программы (сложение чисел, циклы, условия бизнес-логики). На JCL вы пишете инструкции по запуску программ.
> JCL — это клей, который соединяет вашу программу, операционную систему и данные.
Аналогия с рестораном
Давайте представим, что мейнфрейм — это огромная кухня ресторана, а операционная система z/OS — это шеф-повар.
Вы (программист) хотите, чтобы кухня приготовила определенное блюдо. Вы не можете просто зайти на кухню и начать жарить мясо. Вам нужно оформить заказ. В этом случае JCL — это бланк заказа.
В этом бланке вы указываете:
Если вы заполните бланк (JCL) неправильно, шеф-повар (z/OS) вернет его вам с ошибкой, и ничего готовиться не будет.
!Схема взаимодействия пользователя, JCL и операционной системы.
Базовая структура JCL
JCL славится своим строгим синтаксисом. Почти каждая строка в JCL начинается с двух косых черт: //. Это сигнал системе, что дальше идет команда JCL.
Любое задание (Job) состоит из трех основных типов утверждений (statements). Запомните эту «святую троицу» JCL:
Рассмотрим их подробнее.
1. JOB Statement (Карта задания)
Это всегда первая строка вашего кода. Она идентифицирует задание перед операционной системой. Здесь вы указываете имя задания, информацию для биллинга (кто платит за ресурсы процессора) и параметры классификации (приоритет).
Пример:
2. EXEC Statement (Карта выполнения)
Эта строка говорит системе, что именно нужно сделать. Чаще всего здесь указывается имя программы, которую нужно запустить.
В одном задании (JOB) может быть несколько шагов (Steps), то есть несколько карт EXEC. Например, первый шаг компилирует программу, второй — запускает её.
Пример:
Здесь мы просим запустить программу с именем CALCPROG.
3. DD Statement (Data Definition — Определение данных)
Это самые частые и сложные строки в JCL. Программе CALCPROG нужны данные для работы. Она не знает, где физически на диске лежат файлы. Она просто знает, что ей нужно читать из «ВХОДА» и писать в «ВЫХОД».
Карта DD связывает логическое имя файла внутри программы с физическим файлом на устройстве хранения.
Пример:
Здесь мы говорим, что когда программа ищет INPUT, нужно дать ей файл BANK.ACCOUNTS.DATA. А всё, что программа пишет в OUTPUT, нужно отправить на принтер (SYSOUT).
Почему JCL так важен?
Может показаться, что JCL — это архаизм. Зачем писать код, чтобы просто запустить программу? В Windows мы просто кликаем по иконке.
Однако в мире мейнфреймов, где обрабатываются терабайты данных, «кликнуть по иконке» недостаточно. JCL позволяет:
* Автоматизировать процессы: Задания запускаются планировщиками ночью, без участия людей. * Управлять ресурсами: Вы можете указать, сколько памяти нужно заданию, чтобы не «уложить» сервер. * Обрабатывать ошибки: В JCL можно прописать условия: «Если первый шаг прошел успешно, запускай второй. Если нет — запускай процедуру аварийного восстановления». * Абстрагироваться от железа: Программисту на COBOL не нужно знать, на каком конкретно диске лежат данные. Это решает JCL.
Резюме
Подведем итоги первой статьи:
В следующей статье мы подробно разберем синтаксис карты JOB и научимся запускать наше первое простейшее задание в системе.