В этой статье обсуждаются программы поддержки, включенные или доступные для OS/360 и последующих версий . IBM классифицирует некоторые из этих программ как утилиты [1] [a] , а другие как сервисные средства; [2] границы не всегда последовательны или очевидны. Многие, но не все, из этих программ соответствуют типам в утилитном программном обеспечении .
В следующих списках описываются программы, связанные с OS/360 и ее преемниками . Утилиты DOS , TPF или VM не включены.
Многие из этих программ были разработаны пользователями IBM через группу SHARE , а затем изменены или расширены IBM на основе версий, изначально написанных пользователем.
Эти программы обычно вызываются через Job Control Language (JCL). Они, как правило, используют общие идентификаторы JCL DD (в ОС, теперь операционных системах z/OS ) для своих наборов данных:
DDNAME | Обычная функция |
---|---|
СЫСИН | Входной файл для 'команд' для утилиты. Часто устанавливается в DUMMY, если требуется действие по умолчанию |
СИСУТ1 | входной файл |
СИСУТ2 | выходной файл |
СИСУТ3 | рабочий (spill) файл для ввода (SYSUT1) (часто не используется) |
СИСУТ4 | рабочий (spill) файл для вывода (SYSUT2) (часто не используется) |
СИСПРИНТ | выходной файл для распечатки выходных данных утилиты |
СИСТЕМНЫЙ ВЫХОД | выходной файл для сообщений от утилиты |
СИСУДАМП | выходной файл для системного «дампа» в случае сбоя программы |
IDCAMS («Access Method Services») генерирует и изменяет наборы данных Virtual Storage Access Method (VSAM) и Non-VSAM. IDCAMS был представлен вместе с VSAM в OS/VS ; ссылка «Access Method» происходит от изначального мышления OS/VS «VSAM заменяет все другие методы доступа». IDCAMS, вероятно, обладает наибольшей функциональностью среди всех служебных программ, выполняя множество функций как для файлов VSAM, так и для файлов не-VSAM.
Следующий пример иллюстрирует использование IDCAMS для копирования набора данных на диск. Набор данных содержит 80-байтовые записи, и система выберет размер блока для вывода:
// XXXXXXXW JOB XXXXXXX , AAAA , CLASS = G , MSGCLASS = 1 , NOTIFY =& SYSUID // STEP001 EXEC PGM = IDCAMS // SYSIN DD * REPRO INFILE(FILE01) OUTFILE(FILE02) /* // FILE01 DD DSN = PROD . FILE1 . INPUT , disp = shr ..... // FILE02 DD DSN = PROD . FILE2 . ВЫВОД , // ОТОБРАЖЕНИЕ = ( НОВЫЙ , CATLG , УДАЛИТЬ ), // ЕДИНИЦА = DASD , // ПРОБЕЛ = ( TRK ,( 100 , 10 ), RLSE ), // DCB = ( RECFM = FB , BLKSIZE = 0 , LRECL = 80 ) // SYSPRINT DD SYSOUT = * // SYSOUT DD SYSOUT = * // SYSUDUMP DD SYSOUT = * //*
В приведенном выше примере контрольные карты SYSIN берутся из файла in-stream, но вместо этого вы можете указать на любой последовательный файл или член PDS, содержащий контрольные карты или временный набор данных, если хотите. Пример использования файлов SYSIN будет примерно таким:
// SYSIN DD DSN = PROD.MYFILE.REPRO , DISP = SHR
или это:
// SYSIN DD DSN = PROD.MYLIB.CNTLLIB ( REPRO ) , // DISP = SHR
IEBCOMPR сравнивает записи в последовательных или секционированных наборах данных .
Утилита IEBCOMPR используется для сравнения двух последовательных или секционированных наборов данных . Это сравнение наборов данных выполняется на уровне логической записи. Поэтому IEBCOMPR обычно используется для проверки корректности резервной копии набора данных (точного соответствия оригиналу).
Во время обработки IEBCOMPR сравнивает каждую запись из каждого набора данных, одну за другой. Если записи не равны, IEBCOMPR выводит следующую информацию в SYSOUT:
При сравнении последовательных наборов данных IEBCOMPR считает наборы данных равными, если выполняются следующие условия:
Для разделенных наборов данных IEBCOMPR считает наборы данных равными, если выполняются следующие условия:
Если в процессе обработки обнаружено десять неравных сравнений, IECOMPR завершает работу с соответствующим сообщением.
// XXXXXXXW JOB XXXXXXX , AAAA . A. A , CLASS = G , MSGCLASS = 1 , NOTIFY = XXXXX // STEP01 EXEC PGM = IEBCOMPR , ACCT = PJ00000000 // INCLUDE MEMBER=@BATCHS //*SYSIN DD DUMMY // SYSIN DD * COMPARE TYPORG=PO /* // SYSUT1 DD DSN = XXXXXXX . OLDFILE , UNIT = DASD , DISP = SHR // SYSUT2 DD DSN = XXXXXXX . NEWFILE , UNIT = DASD , DISP = SHR // SYSUT # DD
Примечание: IEBCOMPR не очень гибкая или удобная программа сравнения. Она не может ограничить сравнение только определенными столбцами, не может игнорировать различия в пробелах, не сообщает, где в записи возникает различие, и останавливается после 10 различий. С другой стороны, она быстрая и присутствует на всех мэйнфреймах IBM. Поэтому она очень полезна, когда ожидается точное совпадение, например, при сравнении загрузочных модулей, которые не были переблокированы, или при проверке корректности работы копии. Для сравнения программ или отчетов часто используется программа сравнения ISPF SuperC (ISRSUPC).
IEBCOPY копирует, сжимает и объединяет секционированные наборы данных . Он также может выбирать или исключать указанные элементы во время операции копирования, а также переименовывать или заменять элементы.
Некоторые из задач, которые может выполнять IEBCOPY, включают в себя следующее:
Для утилиты IEBCOPY требуемые операторы управления заданиями для копирования следующие:
// имя_шага EXEC PGM = IEBCOPY // SYSPRINT DD SYSOUT = класс // MYDD1 DD DSN = xxxx . ppp . psps , DISP = SHR // MYDD2 DD DSN = xxxx . ppp . pssp , DISP = SHR // SYSIN DD * COPY INDD=MYDD1,OUTDD=MYDD2 ВЫБРАТЬ ЭЛЕМЕНТ=(MEM1,MEM2,MEM3)/ ИСКЛЮЧИТЬ ЭЛЕМЕНТ=(SF,DF,SA)
Операторы DD MYDD1 и MYDD2 — это имена, выбранные пользователем для разделенных входных и выходных наборов данных соответственно; значения по умолчанию — SYSUT1 и SYSUT2. Вы можете использовать любое допустимое DDNAME для этих двух операторов DD. Эти DDNAME указываются в управляющих операторах утилиты, чтобы сообщить IEBCOPY имя входных и выходных наборов данных. Для сжатия PDS вам нужен только один оператор DD.
IEBDG ('Генератор данных') создает тестовые наборы данных, состоящие из шаблонных данных. Операторы управления определяют поля создаваемых записей, включая позицию, длину, формат и выполняемую инициализацию. IEBDG может использовать существующий набор данных в качестве входных данных и изменять поля, как указано в операторах управления, например, заменяя поле имени случайным алфавитным текстом. Содержимое каждого поля может изменяться для каждой записи, например, путем поворота символов в алфавитно-цифровом поле влево или вправо для каждой последующей записи.
Пример:
// XXXXXXXW JOB XXXXXXX , AAAA , CLASS = G , MSGCLASS = 1 , NOTIFY =& SYSUID //********************************************************************** //* СОЗДАНИЕ НАБОРА ДАННЫХ ДЛЯ ДАЛЬНЕЙШЕГО ИСПОЛЬЗОВАНИЯ //***************************************************************** // CRSTEP EXEC PGM = IEFBR14 // DDCREA DD DSN =& SYSUID .. MVSUT . SEQOUT , DISP = ( NEW , CATLG ) //********************************************************************** //* СОЗДАНИЕ ТЕСТОВЫХ ДАННЫХ //***************************************************************** // STEP1 EXEC PGM = IEBDG // SYSPRINT DD SYSOUT = * // SEQOUT DD DSN =& SYSUID .. MVSUT . SEQOUT , DISP = OLD // SYSIN DD DATA DSD OUTPUT=(SEQOUT) FD NAME=FIELD1,LENGTH=30,STARTLOC=1,FORMAT=AL,ACTION=TL FD NAME=FIELD2,LENGTH=30,STARTLOC=31,FORMAT=AL,ACTION=TR FD NAME=FIELD3,LENGTH=10,STARTLOC=71,PICTURE=10, X P'1234567890',INDEX=1 CREATE QUANTITY=500,NAME=(FIELD1,FIELD2,FIELD3),FILL=X'FF' END /* //*************************************************************************** //* ПЕЧАТЬ ТЕСТОВЫХ ДАННЫХ В SYSOUT //********************************************************************** // STEP2 EXEC PGM = IEBGENER // SYSPRINT DD SYSOUT = * // SYSUT1 DD DSN = * . STEP1 . SEQOUT , DISP = SHR // SYSIN DD DUMMY // SYSUT2 DD SYSOUT = * //********************************************************************** //* УДАЛИТЬ СОЗДАННЫЙ НАБОР ДАННЫХ, ДАЖЕ ЕСЛИ ПРЕДЫДУЩИЕ ШАГИ ЗАВЕРШИЛИСЬ //********************************************************************** // DLSTEP EXEC PGM = IEFBR14 , COND = EVEN // DDDEL DD DSN =& SYSUID .. MVSUT . SEQOUT , DISP = ( OLD , DELETE , DELETE ) //
IEBEDIT выборочно копирует части JCL.
Пример программы IEBEDIT:
// IEBEDITJ JOB ACCT , '' , CLASS = P , MSGCLASS = T , MSGLEVEL = ( 1 , 1 ), NOTIFY =& SYSUID // STEP0001 EXEC PGM = IEBEDIT // SYSPRINT DD SYSOUT = * // SYSUT1 DD DSN = xxxxx . yyyyy . zzzzz , DISP = SHR // SYSUT2 DD SYSOUT = ( * , INTRDR ) // SYSIN DD * EDIT TYPE=INCLUDE,STEPNAME=(STEP10,STEP5,STEP15) /* //
В этом примере набор данных xxxxx.yyyyy.zzzzz должен содержать задание(я) (которые должны включать шаги с именами STEP5, STEP10 и STEP15). Эта процедура IEBEDIT копирует выбранные шаги задания в выходной файл SYSUT2 (в этом примере внутренний считыватель).
Синтаксис оператора EDIT следующий:
[метка] ИЗМЕНИТЬ [START=имя_задания] [,ТИП={ПОЛОЖЕНИЕ|ВКЛЮЧИТЬ|ИСКЛЮЧИТЬ}] [,STEPNAME=(список_имен)] [,NOPRINT]
START=jobname
указывает имя входного задания, к которому применяется оператор EDIT. Каждый оператор EDIT должен применяться к отдельному заданию. Если START указан без TYPE и STEPNAME, в вывод включаются оператор JOB и все шаги задания для указанного задания.
По умолчанию: Если START пропущен и указан только один оператор EDIT, обрабатывается первое задание, обнаруженное во входном наборе данных. Если START пропущен из оператора EDIT, отличного от первого оператора, обработка продолжается со следующего оператора JOB, обнаруженного во входном наборе данных.
TYPE={POSITION|INCLUDE|EXCLUDE}
определяет содержимое выходного набора данных. Эти значения могут быть закодированы:
POSITION
указывает, что вывод должен состоять из оператора JOB, шага задания, указанного в параметре STEPNAME, и всех шагов, которые следуют за этим шагом задания. Все шаги задания, предшествующие указанному шагу, исключаются из операции. POSITION — значение по умолчанию.
INCLUDE
указывает, что выходной набор данных должен содержать оператор JOB и все шаги задания, указанные в параметре STEPNAME.
EXCLUDE
указывает, что выходной набор данных должен содержать оператор JOB и все шаги задания, относящиеся к заданию, за исключением шагов, указанных в параметре STEPNAME.
STEPNAME=(namelist)
указывает названия этапов работы, которые вы хотите обработать.
namelist
может быть одним именем шага задания, списком имен шагов, разделенных запятыми, или последовательным диапазоном шагов, разделенных дефисом (например, STEPA-STEPE). Любая комбинация из них может использоваться в одном списке имен. Если указано более одного имени шага, весь список имен должен быть заключен в скобки.
При кодировании с TYPE=POSITION, STEPNAME указывает первый шаг задания, который будет помещен в выходной набор данных. Шаги задания, предшествующие этому шагу, не копируются в выходной набор данных.
При кодировании с TYPE=INCLUDE или TYPE=EXCLUDE STEPNAME указывает имена шагов задания, которые должны быть включены в операцию или исключены из нее. Например, STEPNAME=(STEPA,STEPF-STEPL,STEPZ) указывает, что шаги задания STEPA, STEPF через STEPL и STEPZ должны быть включены в операцию или исключены из нее.
Если STEPNAME опущен, копируется все входное задание, имя которого указано в операторе EDIT. Если имя задания не указано, обрабатывается первое обнаруженное задание.
NOPRINT
указывает, что набор данных сообщения не должен включать в себя список выходного набора данных.
По умолчанию: результирующий вывод указывается в наборе данных сообщения.
Более подробную информацию смотрите здесь: [1]
IEBGENER копирует записи из последовательного набора данных или создает секционированный набор данных.
Некоторые из задач, которые может выполнять IEBGENER, включают в себя следующее:
Пример программы IEBGENER для копирования одного набора данных в другой:
// IEBGENER JOB ACCT , 'DATA COPY' , MSGCLASS = J , CLASS = A // STEP010 EXEC PGM = IEBGENER // SYSUT1 DD DSN = xxxxx . yyyyy . zzzzz , DISP = SHR // SYSUT2 DD DSN = aaaaa . bbbbb . ccccc , DISP = (, CATLG ), // UNIT = SYSDA , SPACE = ( TRK ,( 5 , 5 ), RLSE ), // DCB = ( RECFM = FB , LRECL = 1440 ) // SYSPRINT DD SYSOUT = * // SYSIN DD DUMMY
Для задач прямого копирования программа сортировки часто может делать это быстрее, чем IEBGENER. Таким образом, многие магазины мэйнфреймов используют опцию, которая автоматически направляет такие задачи в программу сортировки ICEGENER вместо IEBGENER.
В некоторых системах можно отправлять электронную почту из пакетного задания, направляя вывод во внешний писательSMTP
" " . В таких системах техника выглядит следующим образом:
// IEBGENER JOB ACCT , 'DATA COPY' , MSGCLASS = J , CLASS = A // NORMRC EXEC PGM = IEBGENER // SYSPRINT DD SYSOUT = * // SYSUT1 DD * , LRECL = 80 HELO <SYSTEMID> MAIL FROM:<USERID@SYSTEMID> RCPT TO:<USERID@SYSTEMID> DATA From: <USERID@SYSTEMID> To: <USERID@SYSTEMID> Subject: Test Mail ТЕСТОВАЯ ПОЧТА С МЭЙНФРЕЙМА . ВЫЙТИ /* // SYSUT2 DD SYSOUT = ( B , SMTP ), LRECL = 80 // SYSIN DD DUMMY
Также можно прикреплять файлы при отправке электронного письма с мэйнфрейма.
IEBIMAGE управляет несколькими типами определений (AKA изображениями ) для принтера IBM 3211, подсистемы лазерной печати IBM 3800 и принтера IBM 4248. Обычно используется для буферов управления формами ( FCB ), таблиц расположения символов, определений символов и изображений форм, которые будут напечатаны на выходе вместе с текстом, для логотипов компаний, которые будут напечатаны на странице, или просто для печати страниц «серых полос» (чередование серого и белого горизонтальных фонов, чтобы соответствовать предыдущей бумаге с зелеными полосами ). С помощью этой утилиты можно сохранять множество различных форм или логотипов в виде изображений и печатать их при необходимости, используя одну и ту же стандартную чистую бумагу, тем самым устраняя необходимость хранить много предварительно напечатанных форм и необходимость для операторов останавливать принтер и менять бумагу.
IEBISAM выгружает, загружает, копирует и печатает наборы данных ISAM .
Извлечено из руководства IBM SC26-7414-08 z/OS DFSMSdfp Utilities: Программа IEBISAM больше не распространяется. Начиная с z/OS V1R7, наборы данных ISAM больше не могут обрабатываться (создаваться, открываться, копироваться или выгружаться). Наборы данных ISAM, которые все еще используются, должны быть преобразованы в наборы данных с последовательностью ключей VSAM.
До версии z/OS V1R7 можно было использовать службы методов доступа для выделения набора данных с последовательностью ключей VSAM и копирования в него набора данных ISAM.
IEBPTPCH («PrinT and PunCH») печатает или перфорирует записи из последовательного или секционированного набора данных.
Некоторые из задач, которые может выполнять IEBPTPCH, включают следующее:
// IEBPTPCH JOB // EXEC PGM=IEBPTPCH // SYSIN DD * PRINT MAXFLDS=2 TITLE ITEM=('Name',22), ITEM=('GPA',50) TITLE ITEM=(' ',1) RECORD FIELD=(25,1,,22), FIELD=(4,51,,50) /* // SYSPRINT DD SYSOUT = * // SYSUT1 DD * Лицо 1 307 C Meshel Hall 3.89 Второе лицо 123 Williamson Hall 2.48 Третье лицо 321 Maag Library 1.52 /* // SYSUT2 DD SYSOUT = * //
Проверка пустого набора данных: если проверяемый набор данных пуст, то RC=4, иначе 0.
// IEBPTPCH JOB // EXEC PGM=IEBPTPCH // SYSUT1 DD DSN = < имя файла >, DISP = SHR // SYSUT2 DD DUMMY , // DCB = ( BLKSIZE = < размер блока >,RECFM=FA) // SYSIN DD * PRINT TYPORG=PS /* // SYSPRINT DD SYSOUT = * //
Чтение записей с устройства чтения ленточных картриджей 2495.
Изменяет записи в последовательном наборе данных или в элементе секционированного набора данных, замененные, но несовместимые с IEBUPDTE.
IEBUPDTE ("UPDaTE") включает изменения в последовательные или секционированные наборы данных. Утилита UNIX patch
является похожей программой, но использует другие маркеры формата ввода ( например , "./ INSERT ..." в MVS становится "@@..." в Unix Patch).
Некоторые программисты произносят это как «IEB up-ditty».
Утилита IEBUPDTE используется для обслуживания исходных библиотек. Некоторые из функций, которые может выполнять IEBUPDTE, включают следующее:
IEBUPDTE обычно используется для распространения исходных библиотек с ленты на DASD .
IEBUPDTE использует те же операторы управления заданиями, которые требуются для большинства утилит типа IEB. Единственными исключениями являются следующие:
IEUPDTE использует следующие методы управления заданиями:
// имя_шага EXEC PGM = IEUPDTE , PARM = NEW // SYSPRINT DD SYSOUT = класс // SYSUT1 DD ... // SYSUT2 DD ... // SYSIN DD ...
IEFBR14 — это фиктивная программа, обычно вставляемая в JCL, когда единственным желаемым действием является выделение или удаление наборов данных.
Пример шага IEFBR14 :
// IEFBR14 JOB ACCT , ' DELETE DATASET ' // STEP01 EXEC PGM = IEFBR14 // DELDD DD DSN = xxxxx.yyyyy.zzzzz , // DISP = ( MOD , DELETE , DELETE ) , UNIT = DASD
Последовательность вызова для OS/360 содержала адрес возврата в регистре 14. Таким образом, переход к регистру 14 немедленно завершит программу. Однако до и после выполнения этой программы операционная система будет выделять и освобождать наборы данных, как указано в операторах DD, поэтому это обычно используется как быстрый способ настройки или удаления наборов данных.
Первоначально он состоял из одной инструкции «Переход к регистру» 14. Мнемоника, используемая в IBM Assembler, была BR, отсюда и название: IEF BR 14. IEF — это «префикс» подсистемы «управления заданиями» OS/360.
Эта программа с одной инструкцией имела ошибку — она не устанавливала код возврата. Поэтому пришлось добавить вторую инструкцию, чтобы очистить код возврата и выйти с правильным статусом.
IBM сообщила о дополнительной ошибке и исправила ее в этой теперь двухинструкционной программе. Эта ошибка была вызвана тем, что программа IEFBR14 не была отредактирована как повторно вводимая (одновременно используемая более чем одним вызывающим).
Некоторые хакеры взяли IEFBR14 и изменили инструкцию BR 14 на BR 15, тем самым создав «самый короткий цикл в мире», поскольку регистр 15 содержит адрес самого модуля IEFBR14, а инструкция BR 15 просто повторно вызовет модуль, навсегда.
Эти утилиты обычно используются системными программистами для поддержания работы системы, а не программистами, выполняющими прикладную работу в системе.
ICKDSF («Средство поддержки устройств») устанавливает, инициализирует и обслуживает DASD как в операционной системе, так и автономно .
Назначьте альтернативные пути для дефектных путей.
IEHDASDR [1] : 161–187 может выполнять несколько операций для устройств хранения данных с прямым доступом [b] (DASD)
В конечном итоге IBM прекратила добавлять поддержку новых типов устройств в IEHDASDR и направила клиентов к бесплатному DSF для инициализации томов и к платным DASDR (5740-UT1) и Data Facility/Data Set Services (5740-UT3, DF/DSS) для дампа/восстановления.
IBM удалила IEHDASDR из MVS/XA. [3]
IEHINITT ("INITialize Tape") инициализирует ленты, записывая метки лент. Несколько лент могут быть помечены за один запуск утилиты. Могут быть записаны стандартные метки IBM или ASCII .
Пример программы IEHINITT:
// IEHINITT JOB ACCT , 'LABEL TAPES' , MSGCLASS = J , CLASS = A // STEP0001 EXEC PGM = IEHINITT , REGION = 8 M // SYSPRINT DD SYSOUT = A // LABEL DD DCB = DEN = 2 , UNIT = ( 3490 , 1 , DEFER ) // SYSIN DD * LABEL INITT SER=123450,NUMBTAPE=3 /*
В этом примере будут промаркированы 3 ленты на магнитной ленте 3490. Каждая лента получит стандартную метку IBM. VOLSER будет увеличиваться на единицу для каждой промаркированной ленты. Каждая лента будет перемотана и выгружена после промаркировки.
IEHIOSUP обновляет ссылки относительных адресов дорожек (TTR) для процедур вызова супервизора типа IV (SVC) в SYS1.SVCLIB. IEHIOSUP больше не поддерживается в OS/VS2 и более поздних версиях. [4]
Функции OPEN, CLOSE и EOV выполняются серией модулей SVC, которые выполняются последовательно. Некоторые модули содержат таблицы, используемые макросом XCTL
для ссылки на следующий модуль в серии. Из соображений производительности, чтобы избежать поиска в каталоге каждый раз, эти таблицы содержат дисковые адреса модулей, а не имена. Обновления SYS1.SVCLIB могут привести к изменению этих адресов, поэтому необходимо запустить IEHIOSUP для установки правильных адресов. [5]
Это пример JCL, необходимого для запуска IEHIOSUP. [1]
// ЗАДАНИЕ IHEIOSUP // EXEC PGM=IEHIOSUP // SYSUT1 DD DSNAME = SYS1 . SVCLIB ~ DISP = OLD , UNIT = 2311 , // VOLUME = SER = 111111 // SYSPRINT DD SYSOUT = A //
IEHLIST — это утилита, используемая для составления списка записей в каталоге секционированного набора данных (PDS) или для составления списка содержимого таблицы содержания тома ( VTOC ).
Утилита IEHLIST используется для вывода списка записей, содержащихся в любом из следующих:
Пример программы IEHLIST:
// IEHLIST JOB ACCT , 'LIST PDS' , MSGCLASS = J , CLASS = A // STEP0001 EXEC PGM = IEHLIST , REGION = 8 M // SYSPRINT DD SYSOUT = A // PDS1 DD DSN = xxxx . yyyy . zzzz , DISP = OLD // SYSIN DD * LISTPDS DSNAME=xxxx.yyyy.zzzz,FORMAT /*
Это задание создаст форматированный список каталога PDS PDS с именем xxxx.yyyy.zzzz.
Пример программы IEHLIST для составления списка VTOC очень похож:
// IEHLIST JOB ACCT , 'LIST VTOC' , MSGCLASS = J , CLASS = A // STEP0001 EXEC PGM = IEHLIST , REGION = 8 M // SYSPRINT DD SYSOUT = A // VOL1 DD VOL = SER = vvvvvv , DISP = OLD // SYSIN DD * LISTVTOC VOL=SER=vvvvvv,FORMAT /*
IEHMOVE перемещает или копирует наборы данных. Однако среды DFSMS ( System Managed Storage ) сейчас распространены, и IBM не рекомендует использовать утилиту IEHMOVE в них. Перемещение отличается от копирования тем, что после перемещения исходный набор данных удаляется или царапается. Некоторые из задач, которые может выполнять IEHMOVE, включают следующее:
На первый взгляд, IEHMOVE может показаться избыточным по сравнению с утилитами IEBGENER и IEBCOPY. Однако IEHMOVE более мощный. Главное преимущество использования IEHMOVE заключается в том, что вам не нужно указывать пространство или информацию DCB для новых наборов данных. Это связано с тем, что IEHMOVE выделяет эту информацию на основе существующих наборов данных.
Другим преимуществом IEHMOVE является то, что вы можете копировать или перемещать группы наборов данных, а также целые тома данных. Из-за простоты перемещения групп наборов данных или томов утилита IEHMOVE обычно пользуется популярностью у системных программистов .
Пример задания IEHMOVE:
// имя_шага EXEC PGM = IEHMOVE , PARM = 'LINECNT=xx,POWER=n' // SYSPRINT DD SYSOUT = класс // SYSUT1 DD UNIT = aaaa , VOL = SER = bbbbbb , DISP = OLD // anyname1 DD UNIT = cccc , VOL = SER = dddddd , DISP = OLD // anyname2 DD UNIT = eeee , VOL = SER = ffffff , DISP = OLD // SYSIN DD ...
Операторы DD для IEHMOVE, кроме SYSPRINT и SYSIN, ссылаются на тома DASD или магнитной ленты , а не на отдельные наборы данных . Однако ссылки на тома могут представлять проблему, поскольку указание DISP=OLD
получает эксклюзивный доступ к тому. Поэтому, пока выполняется задание IEHMOVE, весь этот том (и все наборы данных на нем) недоступны другим пользователям. Это приемлемо для частных томов, таких как ленточные или монтируемые тома DASD, но неприемлемо для публичных томов.
Оператор SYSUT1 DD указывает том DASD, где выделены три рабочих набора данных, требуемых IEHMOVE. Для этого оператора DD необходимо указать информацию о единице и объеме.
IEHMOVE была одной из первых систем, разработанных на PL/S .
В этом примере три последовательных набора данных (SEQSET1, SEQSET2 и SEQSET3) перемещаются с одного дискового тома на три отдельных дисковых тома. Каждый из трех принимающих томов монтируется, когда это требуется IEHMOVE. Исходные наборы данных не каталогизированы. Пространство выделяется IEHMOVE.
// MOVEDS JOB ... // STEP1 EXEC PGM = IEHMOVE // SYSPRINT DD SYSOUT = A // SYSUT1 DD UNIT = disk , VOLUME = SER = 333333 , DISP = OLD // DD1 DD UNIT = ( disk ,, DEFER ), DISP = OLD , // VOLUME = ( PRIVATE ,, SER = ( 222222 )) // DD2 DD UNIT = ( disk ,, DEFER ), DISP = OLD , // VOLUME = ( PRIVATE ,, SER = ( 222333 )) // DD3 DD UNIT = ( disk ,, DEFER ), DISP = OLD , // VOLUME = ( PRIVATE ,, SER = ( 222444 )) // DD4 DD VOLUME = ( PRIVATE , RETAIN , SER = ( 444444 )), // UNIT = disk , DISP = OLD // SYSIN DD * MOVE DSNAME=SEQSET1,TO=disk=222222,FROM=disk=444444 MOVE DSNAME=SEQSET2,TO=disk=222333,FROM=disk=444444 MOVE DSNAME=SEQSET3,TO=disk=222444,FROM=disk=444444 /*
IEHPROGM создает и поддерживает данные управления системой. Он также используется для переименования и скретчинга (удаления) набора данных.
Некоторые из задач, которые может выполнять IEHPROGM, включают в себя следующее:
Для каталогизации:
// SYSIN DD * CATLG DSNNAME=имя-набора-данных, VOL=имя-устройства=номер-тома /* //
Выберите и отформатируйте записи SMF для обнаружения ошибок на ленте.
Эти программы не работают под управлением операционной системы.
Отформатируйте тома прямого доступа и назначьте альтернативные дорожки.
Дамп и восстановление томов прямого доступа.
Назначайте альтернативные дорожки, восстанавливайте и заменяйте данные.
Загрузите буфер управления формами (FCB) и буфер универсального набора символов (UCS) на принтер.
Это утилиты, которые IBM документирует в руководствах по обслуживанию или диагностике [6] . Оригинальные сервисные средства OS/360 имели имена, начинающиеся с IFC и IM*, но IBM изменила соглашение об именах на HM* для OS/VS1 и на AM* для OS/VS2 . IBM не изменила соглашение об IFC.
Инициализирует набор данных SYS1.LOGREC.
Обобщает и печатает записи из набора данных регистрации ошибок SYS1.LOGREC.
Отслеживает выбранные системные события, такие как SVC и прерывания ввода-вывода.
Генерирует JCL, необходимый для применения к PTF и/или применяет PTF. Функции этой программы были включены в SMP .
Проверяет и/или заменяет инструкции и/или данные в загрузочном модуле, программном объекте или файле на диске.
Форматирует и печатает объектные модули, загрузочные модули, программные объекты и идентификационные записи CSECT.
Карты загружают модули. Функции этой программы были включены в IMBLIST.
Автономная программа для форматирования и печати очереди системных заданий. Не применимо к MVS .
Форматировать и распечатать системную очередь заданий. Не применимо к MVS .
Форматирует и печатает дампы ядра , набор данных подкачки TSO и данные трассировки GTF.
Автономная программа для создания высокоскоростного или низкоскоростного дампа основного хранилища.
Утилита сортировки/слияния — это программа, которая сортирует записи в файле в указанном порядке или объединяет предварительно отсортированные файлы. Она очень часто используется; часто является наиболее часто используемой прикладной программой в магазине мэйнфреймов. Современные программы сортировки/слияния также могут выбирать или пропускать определенные записи, суммировать записи, удалять дубликаты, переформатировать записи и создавать простые отчеты. Сортировка/слияние настолько важны, что существует несколько компаний, каждая из которых продает свой собственный пакет сортировки/слияния для мэйнфреймов IBM.
Оригинальная программа сортировки/слияния OS/360 от IBM, 360S-SM-023, название программы IERRCO00 (псевдоним SORT), поддерживала только устройства хранения данных с прямым доступом (DASD) [d] и ленты (2400) от IBM первого поколения. Поддержка дисковых накопителей второго поколения обеспечивалась программными продуктами IBM , такими как 5734-SM1 и более поздним 5740-SM1 ( DFSORT , псевдоним ICEMAN, также SORT).
SORT часто выполняется как отдельная программа, где она обычно считывает входные данные из файла, идентифицированного DD SORTIN
, и записывает отсортированные выходные данные в файл, идентифицированный DD SORTOUT
. Она также часто вызывается из другого приложения с помощью глагола COBOL SORT
или вызовов подпрограмм PL/I PLISRTx
, где она может использовать либо SORTIN
файлы SORTOUT
, либо передавать записи для сортировки вызывающей стороной и/или передавать отсортированные записи обратно вызывающей стороне по одной за раз.
Работа SORT управляется управляющими операторами, которые в значительной степени совместимы между различными программами сортировки IBM и сторонних производителей. Оператор SORT
or MERGE
определяет ключи сортировки — поля, по которым данные должны быть отсортированы или объединены. Этот оператор определяет положение, длину и тип данных каждого ключа. Оператор RECORD
описывает формат и длину записей во входном файле. Другие операторы позволяют пользователю указывать, какие записи следует включить или исключить из сортировки, а также указывать другие преобразования, которые следует выполнить с данными.
Ключи могут быть любой комбинацией данных символов EBCDIC или ASCII , зонированных или упакованных десятичных, знаковых или беззнаковых двоичных с фиксированной точкой или шестнадцатеричных с плавающей точкой. Ключи могут быть расположены в любом месте записи и не обязательно должны быть смежными. Сортировка может быть указана для любой комбинации восходящей и нисходящей последовательности по ключу. [7]
Программа сортировки OS/360, IERRCO00, работает путем разделения входных данных на разделы, сортировки каждого раздела в основной памяти и записи отсортированного раздела в промежуточные наборы данных либо на устройствах хранения с прямым доступом (DASD), либо на магнитной ленте . Затем на заключительных этапах слияния разделы объединяются для получения отсортированного вывода. SORT использует один из нескольких методов распределения разделов между вторичными устройствами хранения. Обычно SORT может выбрать оптимальный метод, но он может быть переопределен пользователем. [8] SORT имеет три метода, которые можно использовать, если промежуточное хранилище — лента, и два, если диск. [9]
Методы тейпирования следующие:
Дисковые методы:
OS/360 имел только редактор Linkage, доступный в нескольких конфигурациях. DFSMSdfp добавил Binder в качестве альтернативы для загрузочных модулей и как единственный вариант для программных объектов.
Редактор связей создает и заменяет модули нагрузки в секционированном наборе данных из комбинации контрольных карт, модулей объектов и других модулей нагрузки. Он может переименовывать или заменять секцию управления (CSECT) и выполнять несколько других разнообразных функций. Первоначально он был доступен в нескольких конфигурациях в зависимости от требований к хранению, но редактор связей уровня E больше не доступен, а редактор связей уровня F теперь известен просто как редактор связей. В z/OS редактор связей присутствует только для совместимости.
Связующее, добавленное в DFSMS , выполняет те же функции, что и редактор связей. Кроме того, он поддерживает новый формат, программный объект, который является функциональным эквивалентом модуля загрузки в Partitioned Data Set Extended (PDSE), со многими дополнительными возможностями.
Один ассемблер обычно был стандартным, поскольку он требовался для генерации системы (SYSGEN) и настройки.
Ассемблер (E) был предназначен для OS/360, работающей на очень маленьких машинах.
Ассемблер (F) был предназначен для обычных установок OS/360.
Assembler (XF) был системным ассемблером для OS/VS1 и OS/VS2, заменив Assembler (E) и (F), хотя он не был полностью совместим с ними. IBM вскоре сделала Assembler (XF) системным ассемблером также для DOS и VM.
Assembler (H) и Assembler (H) версии 2 — это ассемблеры программных продуктов, которые в целом быстрее, чем Assembler E, F и XF, хотя и не полностью совместимы ни с одним из них.
IBM High Level Assembler (HLASM) по сути является новой версией Assembler (H) Version 2 и единственным ассемблером, который IBM поддерживает на z/OS и z/VM. Он заменяет все старые ассемблеры, хотя и не полностью совместим с ними.
Каждый язык программирования, используемый в компьютерном магазине, будет иметь один или несколько связанных компиляторов , которые транслируют исходную программу в объектный модуль машинного языка. Затем объектный модуль из компилятора должен быть обработан редактором связей IEWL для создания исполняемого загрузочного модуля.
IGYCRCTL — это распространенный пример компилятора; это компилятор для текущего продукта IBM Enterprise COBOL для z/OS. (За эти годы было несколько предыдущих компиляторов IBM COBOL с разными названиями, хотя пользователи могут указать псевдоним COBOL
для текущей версии.) Существует много других компиляторов для различных языков программирования.
Компиляторы, доступные от IBM, включают ALGOL , COBOL, FORTRAN , PL/I и RPG .
Программа модификации системы (SMP) — это средство установки сервиса на OS/360 и ее последователях, заменяющее, например, автономную сборку, редактирование ссылок и задания IMAPTFLE. Первоначально это была необязательная возможность, но она обязательна для MVS/SP и более поздних версий, а версия программного продукта SMP/E включена в более поздние системы, например, z/OS.
Если вы обнаружите, что для конкретного приложения сортировки/слияния программа сортировки/слияния не выбирает наиболее эффективный метод, вы можете запросить сортировку использовать другой метод.