понедельник, 23 февраля 2015 г.

А как выглядит эта ваша z/OS?

Прежде всего стоит отметить, что настраивать панельки и приложения z/OS можно по-всякому, мейнфрейм - это штучная вещь и каждый системный программист может изменять настройки системы так, чтобы они максимально соответствовали бизнес-целям использующего его предприятия. Я расскажу о том, как выглядит одна из доступных мне систем. Думаю, читателям блога будет интересно увидеть, как же осуществляется взаимодействие с настоящим чудом инженерной мысли.

Для подключения к мейнфрейму с компьютера под управлением ОС семейства Microsoft Windows можно использовать утилиту IBM Personal Communications, эмулирующую терминал 3270. Работа с операционной системой z/OS производится в полноэкранном многофункциональном режиме, сильно отличающемся от dumb terminals с унылой черной командной строкой.

Для начала сеанса взаимодействия с z/OS нас попросят ввести имя приложения, с которым мы будем работать. Это может быть, например, Customer Information Control System (CICS) или Time Sharing Option (TSO). Я покажу как выполнять базовые операции в TSO.


Наиболее трудной для освоения особенностью терминала является восприятие факта, что клавише Enter соответствует правый Ctrl.


После выбора приложения система запросит имя пользователя для аутентификации.


После чего откроется первый экран сеанса работы с TSO, на котором необходимо ввести пароль, который здесь же при необходимости можно изменить, а так же задать параметры сеанса. Так как терминал работает в полноэкранном режиме, то можно мышкой или с помощью клавиш управления курсором перемещать каретку к началу нужных полей ввода и задавать значения. Enter (т.е. правый Ctrl) необходимо нажать только один раз, после заполнения всех полей.


В общем-то данная схема работы мало чем отличается от популярного в свое время Turbo Vision, только что кнопок нет, да и заполнение привычных каждому веб-форм от нее не слишком далеко ушло, а между тем, терминал 3270, это - 1971-й год! Говорите, Старкрафт на Windows 7? А как насчет подобного уровня обратной совместимости?

После успешной аутентификации в системе на экран эмулятора терминала будут выведены привественные сообщения.


Чтобы перейти непосредственно к работе с панелями операционной системы необходимо нажать Enter.


Все панели являются настраиваемыми и могут сильно различаться в зависимости от конкретного экземпляра операцинной системы и набора установленного программного обеспечения. Давайте попробуем запустить задание, выполняющее простейшую Java-программу. Прежде всего до данного задания нужно добраться, а для этого открыть соотвествующий набор данных. В операционной системе z/OS нет файлов в привычном для пользователей других операционных систем понимании (за исключением UNIX System Services (USS), которые не являются сегодня темой нашей беседы), вместо них на диске размечены так называемые наборы данных, состоящие из записей различных форматов. В состав мейнфрейма входят специальные процессоры, способные выполнять оперирующие этими записями канальные программы, тем самым разгружая центральный процессор от выполнения низкоуровневых операций.

Для поиска нужного нам набора данных воспользуемся возможностями Interactive System Productivity Facility (ISPF), для вызова которого в командной строке необходимо ввести символ-ключ, запускающий, соответствующую панель. В данном случае это - P.


После нажатия клавиши Enter откроется меню с панелями ISPF.


Нас интересует утилита поиска наборов данных - Data Set List Utility, которая доступна из ISPF по ключам 3.4 Ключи панелей можно перечислять через точку, что соответствует выполнению сначала ключа 3 - Utilities, а затем ключа 4 - Dslist.


В появившемся окне Data Set List Utility необходимо заполнить поле Dsname Level, в котором ввести имя требуемого набора данных. Имя набора данных может состоять из одного или нескольких сегментов, разделенных точками. Не стоит путать такие имена с именами каталогов в иерархических файловых системах. Имена наборов данных не образуют иерархии, т.е., если в системе существуют наборы данных PAVEL.JAVA.PROG1 и PAVEL.JAVA.PROG2, то это не значит, что в системе существует корневой набор данных PAVEL или набор данных PAVEL.JAVA, если их предварительно не создали явно.

Нам необходимо найти набор данных, в котором хранится задание для запуска примитивной Java-программы. Я не помню точно имя данного набора, помню только, что он начинается на PAVEL.JAVA.


После нажатия на клавишу Enter система найдет все наборы данных, первые два сегмента которых называются PAVEL.JAVA.


В строке поиска можно так же использовать символ *, обозначающий произвольное имя сегмента (PAVEL.*.PROCLIB вернет PAVEL.JAVA.PROCLIB) и символ **, обозначающий произвольное число сегментов.

Чтобы открыть выбранный набор данных на редактирование, достаточно поставить букву e напротив его названия и нажать клавишу Enter.


Одним из наиболее часто используемых типов наборов данных являются так называемые партиционированные наборы данных, очень похожие на привычные каталоги, только содержащие не файлы, а мемберы (members). Имя мембера ограничено восемью символами и указывается в круглых скобках после имени набора данных, например PAVEL.JAVA.SAMPLIB(JVMJCL77).


В таких партиционированных наборах данных удобно хранить библиотеки исходных кодов программ, заданий, объектных и загрузочных модулей. В данном случае мембер JVMJCL77 содержит задание для запуска Java-программы, написанное на специальном языке управления заданиями (Job Control Language (JCL)). Задания на языке JCL - это первые скрипты в мире, первоначально предназначенные для управления пакетной обработкой большого количества данных и запуска подсистем. В общем случае мало написать программу, способную работать на мейнфрейме, необходимо еще описать процесс запуска данной программы в виде задания.


Для запуска задания на исполнение необходимо отдать команду sub, ввести которую можно непосредственно в текстовом редакторе ISPF.


Так как данное задание не содержит в себе инструкции JOB с указанием имени, то при его запуске имя будет запрошено у оператора.


К введенному слову в качестве префикса будет добавлено имя оператора и задание под названием PAVELHW будет отправлено на обработку в подсистему Job Entry Subsystem (JES).


Задания выполняются операционной системой асинхронно, но т.к. в нашем случае всего-лишь запускается программа, выводящая Hello World, то система может успеть ее выполнить и проинформировать нас об этом.


В любом случае необходимо уметь просмотреть результат выполнения задания и соответствующие журналы. Для этого служит подсистема System Display and Search Facility (SDSF), которую можно вызвать из главного меню с помощью ключа SD.


В меню подсистемы SDSF нас интересует панель Status of jobs, на которой отображаются результаты исполнения заданий в системе. Данная панель доступна по ключу ST.


Панель можно настраивать под конкретного пользователя, например отфильтровать выводимые записи, для этого в командной строке необходимо ввести pre PAVEL* и нажать Enter - станут доступны все задания, начинающиеся на PAVEL.


Чтобы посмотреть результаты последнего выполненного задания PAVELHW, необходимо ввести знак вопроса напротив строчки с его названием...


и нажать клавишу Enter. После этого отобразится вся информация по заданию, включая его актуальный код на языке JCL - JESJCL, а так же вывод информации о запуске JVM и выполненных ею действиях - SYSOUT - и вывод в стандартный поток вывода - STDOUT.


Чтобы просмотреть соответствующий журнал необходимо ввести символ v напротив него и нажать Enter. Откроется панель с соответствующей информацией, например, о запущенной JVM.


Аналогичным образом можно просмотреть стандартный поток вывода. Java на мейнфрейме приветствует нас.


Корпорация IBM строит воистину уникальные вещи, но особый интерес вызывает тот факт, как она относится к инвестициям своих клиентов. Уровень предоставляемой обратной совместимости беспрецендентен, программное обеспечение, написаное четыре десятка лет назад может работать и сейчас, при этом для взаимодействия с ним не нужно использовать что-то архаичное. Привычные нам панели ввода, меню и формы были доступны на мейнфреймах уже без малого 45 лет назад! Это как-то совсем не похоже на наживульку под названием "смена технологий каждые 5 лет!", а скорее является одной из немногих областей, где IT все еще способны развиваться как наука.

UPD: радующая душу каждого истинного линуксоида радикально чОрная консоль тоже есть, как же без нее!


Понравилось сообщение - подпишитесь на блог

2 комментария:

Ruslan Ibragimov комментирует...

тоска

Pavel Samolisov комментирует...

Радующая душу каждого линуксоида консоль тоже есть. Привел соответствующий скриншот.

Отправить комментарий

Любой Ваш комментарий важен для меня, однако, помните, что действует предмодерация. Давайте уважать друг друга!