Министерство образования и науки Российской Федерации
Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования
Московский государственный технический университет им.
Факультет «Информатика и системы управления»
Кафедра «Автоматизированные системы обработки информации и управления»

Курс «Супер ЭВМ zSeries»
Лабораторная работа № 2
« Создание кода программы на языке HLASM и JCL-скрипта
в среде z/OS »
Методическое указание
по выполнению лабораторной работы
Москва - 2012 год
Содержание
1. Редактирование данных в режиме ISPF Editor (кодирование на HLASM) 4
2. Создание JCL-скрипта и его выполнение 5
3. Выход из операционной системы z/OS (z/OS Logoff) 9
4. Контрольные вопросы 12
4. Литература 12
Цель лабораторной работы:
изучение интерфейса ISPF - редактора набора данных для создания кода пограммы;
написание и отладка кода программы на языке HLASM в операционной системе z/OS:
компиляция кода программы и исправление ошибок;
запуск исполняемого модуля.
Редактирование данных в режиме ISPF Editor
(кодирование на языке HLASM)
Вызвать режим редактирования можно из основного экрана ISPF, введя «2».
Давайте создадим программу на языке HLASM, используя редактор ISPF. В окне подпрограммы редактирования ISPF вы должны ввести имя файла-раздела (Member), который будет хранить исходный код программы. Исходный код программы будет храниться в библиотечном наборе данных xxx. IU5zzz. С. Раздел, в котором хранится код, должен иметь имя - назовем его ASM. Полное имя набора данных - xxx. U5zzz. С(ASM). Введите эти значения в соответствующих полях, как показано на рисунке 1 и нажмите Enter.
Menu RefList RefMode Utilities Workstation Help ------------------------------------------------------------------------------ Edit Entry Panel ISPF Library: Project. . . GS0050 Group. . . . IU5TON . . . . . . . . . Type . . . . C Member . . . ASM (Blank or pattern for member selection list) Other Partitioned, Sequential or VSAM Data Set, or z/OS UNIX file: Name. . . . . + Volume Serial (If not cataloged) Workstation File: File Name . . Options Initial Macro . . . . Confirm Cancel/Move/Replace Profile Name. . . . . Mixed Mode Format Name . . . . . Edit on Workstation Data Set Password . . Preserve VB record length Record Length . . . . Edit ASCII data Command ===> F1=Help F2=Split F3=Exit F7=Backward F8=Forward F9=Swap F10=Actions F12=Cancel |
Рис. 1 Окно входа в режим редактирования Edit Entry Panel
После того, как будет выделена память для нового набора данных, экран редактирования будет иметь вид, показанный на рисунке 2.
File Edit Edit_Settings Menu Utilities Compilers Test Help ------------------------------------------------------------------------------- EDIT GS0050.TEST. C(ASM) - 01.02 Columns 00001 00072 ****** ***************************** Top of Data ****************************** ==MSG> - Warning - The UNDO command is not available until you change ==MSG> your edit profile using the command RECOVERY ON. Command ===> Scroll ===> PAGE F1=Help F2=Split F3=Exit F5=Rfind F6=Rchange F7=Up F8=Down F9=Swap F10=Left F11=Right F12=Cancel |
Рис. 2 Пустое окно редактирования ISPF
Используйте цифробуквенные клавиши, чтобы ввести текст, и не пользуйтесь никакими управляющими клавишами, кроме клавиши Del. Курсор можно двигать клавишами со стрелками.
File Edit Edit_Settings Menu Utilities Compilers Test Help ------------------------------------------------------------------------------- EDIT GS0050.TEST. C(ASM) - 01.02 Columns 00001 00072 ****** ***************************** Top of Data ****************************** ==MSG> - Warning - The UNDO command is not available until you change ==MSG> your edit profile using the command RECOVERY ON. 000100 HELLO CSECT 000200 USING *,15 000300 WTO 'HELLO WORLD!' 000410 BR 14 000500 END ****** **************************** Bottom of Data **************************** Command ===> Scroll ===> PAGE F1=Help F2=Split F3=Exit F5=Rfind F6=Rchange F7=Up F8=Down F9=Swap F10=Left F11=Right F12=Cancel |
Рис. 3 Окно подпрограммы редактирования ISPF с набранной программой на языке HLASM
Разберём подробнее код программы.
CSECT задаёт управляющую секцию – часть программы, определённую программистом как перемещаемый модуль.
USING используется для указания базового регистра, содержащего адрес операнда для последующих операций. В отличие от ассемблера Intel, в S/360, S/370, S/390 в качестве базового может быть использован любой регистр общего назначения. Первым операндом этой директивы содержится адрес, но чаще всего там указывается *, это означает, что в регистре содержится адрес первой команды, следующей за директивой USING.
Макрос WTO служит для вывода сообщения оператору.
BR 14 служит для выхода из программы. Команда BR осуществляет переход по адресу, находящемуся в регистре. А в 14 регистре хранится адрес возврата.
Чтобы вставить строку, поставьте курсор в левое поле (область номеров строк), в месте, в которое вы хотите вставить пустую строку, и введите команду Ixx (Insert), где xx – количество строк, которые нужно вставить. Если понадобится удалить строку, введите в левом поле D (Delete) и нажмите Enter. Нажав клавишу F3, вы выйдете из редактора с сохранением файла. Наберите программу, как показано на рис. 19. Разместите символы точно, как показано. Наша программа предназначена для вывода текстовой строки на экран. Затем нажмите F3 для возврата в главное окно. Программа будет автоматически сохранена.
Внимание: Все ключевые слова в коде программы должны быть написаны строчными буквами. Может так случиться, что редактор ISPF автоматически конвертирует эти буквы в заглавные. Если это произойдет, введите в командной строке экрана, показанного на рис. 18, команду TSO «CAPS OFF», затем нажмите Enter. В правом верхнем углу на экране в окне входа в подпрограмму редактирования ISPF после написания исходных кодов появится надпись о том, что наш файл был сохранен.
Создание JCL-скрипта и его выполнениеПользователь z/OS может запросить у системы выполнение какой-либо работы (конечно, связанной с запуском определенных приложений) с помощью специальным образом записанного и переданного системе текста. Этот текст - задание. Задания составляются на языке управления заданиями JCL (Job Control Language) и направляются в систему пользователями через входные устройства и сетевые коммуникации, а также через ранее запущенные приложения. В задании указано, какие программы, в какой последовательности и с какими данными должны быть исполнены, а также в какой форме и куда должны быть направлены результаты выполнения программ.
Обычно текст задания создается в некотором наборе данных с помощью текстового редактора, откуда специальными средствами пользовательского интерфейса его можно направить на обработку в подсистему JES2. Система z/OS требует, чтобы для представления заданий использовались только последовательные и библиотечные наборы данных с параметрами FB и длиной записи 80. Создадим задание, отправляющее нашу программу на компиляцию, как файл-раздел (member) в наборе данных формата PDS (Partitioned Data Set) xxx. IU5zzz. СNTL(ASM). Для этого введите «CNTL» в поле «Type» и «ASM» в поле «Member». Нажмите Enter. Вы попадете в окно редактора ISPF. Введите текст скрипта:
//GS0050C JOB (),CLASS=A, MSGCLASS=H, MSGLEVEL=(1,1),NOTIFY=&SYSUID
//CCL EXEC PROC=ASMACL
//C. SYSIN DD DSNAME=GS0050.IU5TON. C(ASM),DISP=OLD
//L. SYSLMOD DD DSNAME=GS0050.IU5TON. LOAD(ASM),DISP=OLD
Замените UserID, который приведен в тексте скрипта на свой. Символ «С» в первой строке скрипта, идущий после UserID без пробела, должен следовать и за вашим UserID, он необходим для идентификации типа работы в планировщике z/OS.
Важно соблюдать расстояния между словами так, как это показано в примере на рисунке 20, т. к. у редактора есть свои «зоны» распознавания исходного текста.
Немного слов о структуре скрипта. Задание состоит из последовательности управляющих предложений JCL. Каждое предложение имеет следующую структуру:
// ИМЯ ОПЕРАТОР ОПЕРАНДЫ КОММЕНТАРИЙ
В первых двух позициях всегда указываются две косые черты, которые являются главным отличительным признаком предложений JCL. Поле «имя» начинается с третьей позиции и служит для идентификации представленного в предложении оператора. В нашем примере такие идентификаторы – GS0050С, CCL. Фактически это метки, на которые можно ссылаться из различных предложений задания или других заданий. Имя может содержать не более восьми символов, включающих латинские буквы, цифры и специальные знаки ($ # @) и должно начинаться с буквы или специального знака.
Оператор JOB задает начало задания и режим выполнения задания. Параметр CLASS (класс) относит задание к определенному классу выполнения заданий и задается символами AZ, 0-9. Параметр MSGCLASS (класс сообщений) определяет выходной класс для системных сообщений, формируемых в процессе выполнения задания. Класс задается символами A-Z, 0-9. Параметр MSGCLASS дает возможность выводить все системные сообщения и выходные наборы данных, формируемые в шагах задания, в один и тот же класс или в разные классы. Такое разделение иногда может оказаться полезным. Параметр MSGLEVEL (уровень полноты сообщений) определяет, какую информацию необходимо выдать в отчет о выполнении задания. MSGLEVEL=(1,1) означает максимально подробный вывод отчета. Параметр TIME (время) устанавливает максимальную продолжительность выполнения задания в минутах.
Оператор EXEC указывает выполняемую программу или процедуру и ее параметры. В нашем примере вызывается процедура компиляции программы на языке HLASM – ASMACL. В ее параметрах – входной набор данных, содержащий текст программы на HLASM и выходной набор данных, в котором будет содержаться полученная программа.
Оператор описания данных DD (data definition) - это оператор определения данных и устройств, используемых в задании и его отдельных шагах. Операторы DD, относящиеся к определенному шагу задания, следуют за оператором EXEC этого шага задания. Важнейшим атрибутом оператора DD является имя, связывающее описываемый набор данных с кодом вызываемой программы. Для программы-компилятора языка ассемблера установлены следующие dd-имена:
SYSIN - для описания исходного модуля;
SYSPRINT - для вывода сообщений компилятора;
SYSLIN - для описания объектного модуля;
SYSUT1 - промежуточный набор данных.
Параметр DISP (диспозиция) определяет исходное состояние набора данных, а также действия, которые необходимо произвести с набором данных после завершения шага задания или всего задания: сохранить, уничтожить, каталогизировать и др. Формат записи параметра DISP включает три позиционных подпараметра:
DISP=([статус][,дисп_НЗ][,дисп_АЗ])
где статус - исходное (текущее) состояние набора данных, дисп_НЗ - действие при нормальном завершении шага задания, дисп_АЗ - действие, которое надлежит выполнить при аварийном завершении шага задания.
Подпараметр статус может принимать следующие значения:
NEW - в указанном шаге задания создается новый набор данных;
OLD - набор данных существует (создан ранее);
SHR - набор данных существует и может быть использован одновременно другим заданием, т. е. разделяется различными заданиями в режиме чтения;
MOD - набор данных существует и будет модифицироваться в указанном шаге задания (используется только для последовательных наборов данных).
Подпараметры диспозиции дисп_НЗ и дисп_АЗ могут принимать следующие значения:
DELETE - набор данных следует уничтожить;
KEEP - набор данных следует сохранить;
CATLG - набор данных следует сохранить и каталогизировать;
UNCATLG - набор данных нужно сохранить, но при этом исключить из системного каталога.
PASS - набор данных следует передать для использования в последующем шаге того же задания.
Последнее значение (PASS) может быть использовано только для подпараметра дисп_НЗ.
File Edit Edit_Settings Menu Utilities Compilers Test Help ------------------------------------------------------------------------------- VIEW GS0050.IU5TON. CNTL(ASM) - 01.04 Columns 00001 00072 ****** ***************************** Top of Data ****************************** ==MSG> - Warning - The UNDO command is not available until you change ==MSG> your edit profile using the command RECOVERY ON. 000100 //GS0050C JOB (),CLASS=A, MSGCLASS=H, MSGLEVEL=(1,1),NOTIFY=&SYSUID 000200 //CCL EXEC PROC=ASMACL 000300 //C. SYSIN DD DSNAME=GS0050.IU5TON. C(ASM),DISP=OLD 000400 //L. SYSLMOD DD DSNAME=GS0050.IU5TON. LOAD(ASM),DISP=OLD ****** **************************** Bottom of Data **************************** Command ===> Scroll ===> PAGE F1=Help F2=Split F3=Exit F5=Rfind F6=Rchange F7=Up F8=Down F9=Swap F10=Left F11=Right F12=Cancel |
Рис.4 Окно подпрограммы редактирования ISPF с набранным скриптом JCL
При изменении и корректировке файла не забывайте сохранять изменения клавишей F3 (по ее нажатию вы выйдете из редактора, вам нужно будет зайти еще раз).
Теперь необходимо отправить задание на исполнение. Задания, поступающие в систему от различных источников, принимаются и обрабатываются специальным компонентом z/OS, который называется подсистемой управления заданиями JES (Job Entry Subsystem). JES принимает задания, поступающие с входных устройств, регистрирует их, осуществляет анализ и формирует очереди заданий, а затем передает задания на выполнение базовой управляющей программе BCP. После завершения выполнения задания и получения результатов от BCP, JES формирует отчет по заданию (листинг), передает его пользователю или выводит на указанные устройства.
Для запуска задания на выполнение, находясь в редакторе скрипта, в поле Command введите команду SUB или SUBMIT.
Вы должны увидеть сообщение об отправке задания. Знак «***» - значит, что для просмотра остатка сообщения необходимо нажать кнопку Enter. Если скрипт и программа ошибок не содержит, то Вы получите сообщение об успехе (MAXCC равен 0).
15.27.18 JOB06440 $HASP165 GS0050C ENDED AT Z0SKCTR MAXCC=0 CN(INTERNAL)
***
В противном случае вам придется искать ошибку в скрипте или программе. Для того, чтобы посмотреть отчет об ошибке, можно просмотреть журнал заданий через утилиту SDSF. Для этого необходимо знать имя задания и UserID. Утилита SDSF выведет список последних запущенных заданий. Установив фильтр, можно быстро найти интересующее нас задание.
Также можно воспользоваться функцией Outlist в ISPF, для этого нужно знать имя задания и идентификационный номер задания. Имя задания задается в первой строке скрипта JCL. Зачастую это UserID и постфикс, в нашем случае - «С», означающий compile – компиляция. Идентификационный номер задания – JobID – можно видеть в отчете об отправке задания, сразу после ввода команды Submit.
Теперь после компиляции двоичный код нашей программы содержится в файле
xxx. IU5zzz. LOAD(ASM). Давайте запустим программу. Для этого нам необходимо ввести в поле Command:
TSO CALL 'GS0050. IU5zzz. LOAD(ASM)'
Вместо GS0050 введите свой UserID. После этого вы должны видеть результат работы вашей программы на экране.
Выход из операционной системы z/OS (z/OS Logoff)
Нажмите несколько раз клавишу F3, чтобы вернуться в основное окно ISPF. Очередное нажатие клавиши F3 приведет вас в окно «Specify Disposition of Data Set». Система хочет знать, что вы собираетесь сделать с наборами данных лог-файла, которые вы создали, и предоставляет Вам на выбор список действий (Рис.21). Выберите «3».
Specify Disposition of Log Data Set Log Data Set (GS0050.SPFLOG1.LIST) Disposition: Process Option. . . . 1. Print data set and delete 2. Delete data set without printing 3. Keep data set - Same (allocate same data set in next session) 4. Keep data set - New (allocate new data set in next session) Batch SYSOUT class. . Local printer ID or writer-name . . . . . Local SYSOUT class. . List Data Set Options not available Press ENTER key to complete ISPF termination. Enter END command to return to the primary option menu. Job statement information: (Required for system printer) ===> ===> ===> ===> Command ===> F1=Help F2=Split F3=Exit F7=Backward F8=Forward F9=Swap F12=Cancel |
Рис.5 Окно Specify Disposition of Data Set
Сообщение TSO о том, что созданный набор данных будет доступен для работы при
следующем вашем обращении к системе. При этом набор данных xxx. SPFLOG1.LIST, на который ссылается система, был создан ею автоматически.
GS0050.SPFLOG1.LIST has been kept.
READY
Затем введите «LOGOFF» и нажмите Enter.
DDDDDDDD EEEEEEEE MMMM MMMMM OOOOOOO DD DD EE MM MM MM MM OO OO DD DD EE MM M M MM OO OO PPPPP KK KK GGGGGG DD DD EEEEEEEE MM MMM MM OO OO PP PP KK KK GG DD DD EE MM M MM OO OO PPPPPP KKK GG GGGG DD DD EE MM MM OO OO PP KK KK GG GG DDDDDDDD EEEEEEEE MM MM OOOOOOO PP KK KK GGGGGG WELCOME TO IBM DEMOPKG YOUR IP ADDRESS : 217.28.208.218 YOUR TELNET PORT : 29216 --------------------------------------------------------- | APPLICATIONS AVAILABLE | |-------------------------------------------------------| | TSO | IMSB | CICSA | CICSB | | IMSA | NETVIEW | AOF | MFN | | IBMSM | OMVIEW | | | --------------------------------------------------------- |
Рис. 6 Окно завершения работы в ISPF
Эмулятор TN3270 вывел вас опять в окно приветствия операционной системы z/OS, ожидающее команд. На этом вы можете закончить сессию связи с виртуальной средой супер ЭВМ MAINFRAME.
Контрольные вопросы
Перечислите способы подключения к виртуальной среде мэйнфрейма. Что такое эмулятор TN3270? В чем заключается основное предназначение TSO? Что такое набор данных? Какие типы наборов данных используются в z/OS? Почему используется PDS? Почему задается 80-байтовые записи фиксированной длины? Перечислите основные команды ISPF? Перечислите команды ISPF необходимые для создания контейнера наборы данных? Перечислите основные форматы набора данных и их различия? Перечислить параметры контейнера набора данных «C» Перечислить параметры контейнера набора данных «CNTL» Перечислить параметры контейнера набора данных «LOAD» Каким образом можно скомпилировать программу на языке HLASM в z/OS Что такое JOB, JCL?Литература
Архитектура и технологии *****@***zSeries. , , . М.: Интернет-Университет Информационных технологий.2005г. Введение в современные мэйфреймы: основы z/OS. Майк Эбберс, Уэйн О’Брайн, Билл Огден. М.: Корпорация IBM, 2007г. Информационная управляющая система МГТУ им. «Электронный Университет»: Концепция и реализация / , , . М.: Издательство МГТУ им. , 2009г. Gabriel F. Garqulio. z/OSREXX with OS/2, TSO, & CMS Features Quick Reference Guide ISBN 978-6-1309-5285-3. 2010г./ Sue Sloan, Ann Kilty Hernandez, Susan Graziano Sloan,.DB2 Universal Database for OS/390. М:2008г. Галямова вычислительные машины и их место в современном мире// Межвузовский сборник научных трудов,. М.: МИРЭА. 2006. .Сьюзен Виссер, Билл Вонг Освой самостоятельно DB2 Universal Database. М.: 2004г. Учебные и методические материалы по суперЭВМ zSeries.http://www. /


