Jump to content

ИЭФБР14

IEFBR14 — это IBM для мэйнфреймов служебная программа . Он работает во всех IBM средах мэйнфреймов , производных от OS/360 , включая z/OS . Это заполнитель, который возвращает нулевой статус завершения , аналогично команде true в UNIX-подобных системах. [ 1 ]

Распределение (также называемое инициацией)

[ редактировать ]

В OS/360 и производных системах мэйнфреймов большинство программ никогда не указывают файлы (обычно называемые наборами данных ) напрямую, а вместо этого ссылаются на них косвенно через операторы языка управления заданиями (JCL), которые вызывают программы. Эти определения данных (или " DD") утверждения могут включать в себя "диспозицию" ( DISP=...) параметр, указывающий, как следует управлять файлом — создавать ли новый файл или повторно использовать старый; и следует ли удалить файл после завершения или оставить его; и т. д .

IEFBR14 был создан потому, что хотя DD операторы могут легко создавать или удалять файлы, но они не могут сделать это без запускаемой программы из-за определенной особенности системы управления заданиями, которая всегда требует, чтобы инициатор действительно выполнил программу, даже если эта программа фактически является нулевым оператором . [ 2 ] Программа, используемая в JCL, на самом деле не нуждается в использовании файлов для их создания или удаления. DD DISP=... спецификация делает всю работу. Таким образом, для выполнения этой роли потребовалась очень простая программа, ничего не делающая.

Таким образом, IEFBR14 можно использовать для создания или удаления набора данных с помощью JCL.

Освобождение (также называемое завершением)

[ редактировать ]

Дополнительной причиной запуска IEFBR14 было отключение устройств (обычно лент или дисков), которые были смонтированы после предыдущего задания, возможно, из-за ошибки в JCL этого задания или из-за того, что задание завершилось с ошибкой. В любом случае системным операторам часто приходится демонтировать устройства, а запущенная задача – DEALLOC – часто предназначалось для этой цели.

Просто введя команду

S DEALLOC

на системной консоли запускалось запущенное задание, состоящее всего из одного шага . Однако из-за особенностей управления заданиями DEALLOC должен фактически существовать в системной библиотеке процедур SYS1.PROCLIB, чтобы команда запуска не завершилась неудачно.

Кроме того, все такие запущенные задачи должны быть одним шагом задания, поскольку модуль «Управление запущенными задачами» (STC) в компоненте «Управление заданиями» операционной системы принимает только одношаговые задания и отклоняет все без исключения многоэтапные задания.

//STEP01    EXEC PGM=IEFBR14

Парсинг и проверка

[ редактировать ]

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

«IEF» происходит от соглашения, принятого на мэйнфреймах , согласно которому программы, поставляемые IBM, группируются по функциям или создателям и что каждая группа имеет трехбуквенный префикс. В OS/360 первая буква почти всегда была «I», а все программы, созданные группой управления заданиями (включая IEFBR14), использовали префикс «IEF». Другие распространенные префиксы включали «IEB» для служебных программ набора данных, «IEH» для системных служебных программ и «IEW» для связывания и загрузки программ. [ 3 ] Другими основными компонентами были (и остаются) «IEA» (супервизор операционной системы) и «IEC» ( супервизор ввода/вывода ).

Как поясняется ниже, «BR 14» была основной функцией программы — просто вернуться в операционную систему. Эта часть имени программы часто была мнемонической — например, IEBUPDTE была утилитой набора данных (IEB), которая применяла обновления (UPDTE) к файлам исходного кода, а IEHINITT была системной утилитой (IEH), которая инициализировала (INIT) метки на магнитной ленте ( Т).

Как поясняется далее в разделе «Использование» ниже, имя «BR14» происходит от инструкции языка ассемблера IBM « Перейти (по адресу) в 14 регистр » , которая по соглашению используется для «возврата из подпрограммы ». Большинство первых пользователей OS/360 были знакомы с языком IBM Assembler и сразу это поняли.

Использование

[ редактировать ]

Пример JCL будет:

//IEFBR14  JOB  ACCT,'DELETE DATASET',MSGCLASS=J,CLASS=A
//STEP0001 EXEC PGM=IEFBR14                       
//DELDD    DD DSN=xxxxx.yyyyy.zzzzz,
//            DISP=(MOD,DELETE,DELETE),UNIT=DASD

Чтобы создать секционированный набор данных:

//TZZZ84R  JOB NOTIFY=&SYSUID,MSGCLASS=X                    
//STEP01    EXEC PGM=IEFBR14                                 
//DD1       DD DSN=TKOL084.DEMO,DISP=(NEW,CATLG,DELETE),           
//             DCB=(RECFM=FB,LRECL=80,BLKSIZE=80,DSORG=PO),  
//             SPACE=(TRK,(1,1,1),RLSE),                       
//             UNIT=SYSDA

Выполнение

[ редактировать ]

использовалась мнемоника Первоначально IEFBR14 состоял из одной инструкции «Переход для регистрации» 14. В IBM Assembler BR, отсюда и название: IEF BR 14 . BR 14 тождественно эквивалентен BCR 15,14 (всегда переходить [маска = 15 = всегда] к адресу, содержащемуся в регистре общего назначения 14). BR — это псевдоинструкция для BCR 15. Системный ассемблер принимает многие случаи таких псевдоинструкций как логические эквиваленты канонических инструкций System/360. Каноническим экземпляром BR 14 является BCR 15,14 .

Соглашение о связывании для OS/360 и его потомков требует, чтобы программа вызывалась с регистром 14, содержащим адрес для возврата управления после завершения, и регистром 15, содержащим адрес, по которому вызываемая программа загружается в память; по завершении программа загружает код возврата в регистр 15, а затем переходит к адресу, содержащемуся в регистре 14. Но изначально IEFBR14 не был закодирован с учетом этих характеристик, поскольку IEFBR14 изначально использовался как фиктивная секция управления, которая просто возвращается вызывающей стороне, а не как исполняемый модуль.

Исходная версия программы вообще не изменяла регистр 15, поскольку ее исходное применение было заполнителем в определенных загрузочных модулях, которые были созданы во время Sysgen (генерации системы), а не как исполняемая программа как таковая. Поскольку IEFBR14 всегда вызывался функциональным эквивалентом канонической инструкции BALR 14,15 , код возврата в регистре 15 всегда был ненулевым. Позже должна была быть добавлена ​​вторая инструкция для очистки кода возврата, чтобы он завершался с определенным статусом, а именно нулевым. Изначально программисты не использовали все свойства языка управления заданиями, поэтому неопределенный код возврата не был проблемой. Однако впоследствии программисты действительно использовали эти свойства, поэтому определенный статус стал обязательным. Эта модификация IEFBR14 никоим образом не повлияла на его первоначальное использование в качестве заполнителя.

Машинный код модифицированной программы:

        SR    R15,R15  put zero completion code into register 15
        BR    R14      branch to the address in register 14 (which is actually an SVC 3 instruction in the Communications Vector Table)

Эквивалентный машинный код, исключающий BR для ясности:

        SR    R15,R15  put zero completion code into register 15
        SVC   3        issue EXIT SVC to terminate the jobstep

Это имеет смысл, поскольку инициатор OS/360 изначально «прикрепляет» задачу шага задания с помощью макрокоманды ATTACH (SVC 42), а «раскручивание» эффекта этого макроса ATTACH (это инструкция SVC типа 2) должно быть дополнительной командой, а именно макросом EXIT (обязательно командой SVC типа 1, SVC 3).

См. также

[ редактировать ]
  • true — UNIX-эквивалентная программа «ничего не делать».

Тромбетта, Майкл и Финкельштейн Сью Кэролайн (1985). «ОС JCL и утилиты». Эддисон Уэсли. стр. 152.

  1. ^ Перейти обратно: а б «Центр знаний IBM» . www.ibm.com . Корпорация IBM. 2010 . Проверено 26 декабря 2016 г.
  2. ^ Шмидт, Себастьян (24 апреля 2004 г.). «Приложение «Коротко о правде: IEFBR14»» . www.miketaylor.org.uk . Майк Тейлор . Проверено 27 декабря 2016 г.
  3. ^ Бэгвелл, Дэвид (9 августа 2005 г.). «Коротко о правде, Приложение: IEFBR14: Разъяснение» . www.miketaylor.org.uk . Майк Тейлор . Проверено 27 декабря 2016 г.
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: f6e8f37a3d8fd64c6459011b983008a9__1708111380
URL1:https://arc.ask3.ru/arc/aa/f6/a9/f6e8f37a3d8fd64c6459011b983008a9.html
Заголовок, (Title) документа по адресу, URL1:
IEFBR14 - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)