Учебники

JCL — Базовая библиотека

Базовая библиотека — это секционированный набор данных (PDS), который содержит модули загрузки программы, выполняемой в JCL, или каталогизированную процедуру, которая вызывается в программе. Базовые библиотеки могут быть указаны для всего JCL в библиотеке JOBLIB или для конкретного шага задания в инструкции STEPLIB .

Заявление JOBLIB

Оператор JOBLIB используется для определения местоположения программы, которая должна быть выполнена в JCL. Оператор JOBLIB указывается после оператора JOB и перед оператором EXEC. Это может быть использовано только для потоковых процедур и программ.

Синтаксис

Ниже приведен основной синтаксис оператора JCL JOBLIB:

//JOBLIB DD DSN=dsnname,DISP=SHR                                      

Оператор JOBLIB применим ко всем операторам EXEC в JCL. Программа, указанная в операторе EXEC, будет найдена в библиотеке JOBLIB, а затем в системной библиотеке.

Например, если инструкция EXEC выполняет программу COBOL, модуль загрузки программы COBOL должен быть помещен в библиотеку JOBLIB.

STEPLIB Заявление

Оператор STEPLIB используется для определения местоположения программы, которая должна быть выполнена на шаге задания. Оператор STEPLIB указывается после оператора EXEC и перед оператором DD шага задания.

Синтаксис

Ниже приведен основной синтаксис оператора JCL STEPLIB:

//STEPLIB DD DSN=dsnname,DISP=SHR                                      

Программа, указанная в операторе EXEC, будет найдена в библиотеке STEPLIB, а затем в системной библиотеке. STEPLIB, закодированный в шаге задания, переопределяет оператор JOBLIB.

пример

В следующем примере показано использование операторов JOBLIB и STEPLIB:

//MYJCL JOB ,,CLASS=6,NOTIFY=&SYSUID
//*
// JOBLIB DD DSN=MYPROC.BASE.LIB1,DISP=SHR
//*
//STEP1 EXEC PGM=MYPROG1
//INPUT1 DD DSN=MYFILE.SAMPLE.INPUT1,DISP=SHR
//OUTPUT1 DD DSN=MYFILES.SAMPLE.OUTPUT1,DISP=(,CATLG,DELETE),
//           RECFM=FB,LRECL=80
//*
//STEP2 EXEC PGM=MYPROG2
// STEPLIB DD DSN=MYPROC.BASE.LIB2,DISP=SHR
//INPUT2 DD DSN=MYFILE.SAMPLE.INPUT2,DISP=SHR
//OUTPUT2 DD DSN=MYFILES.SAMPLE.OUTPUT2,DISP=(,CATLG,DELETE),
//           RECFM=FB,LRECL=80                                      

Здесь загружается модуль загрузки программы MYPROG1 (в STEP1) в MYPROC.SAMPLE.LIB1. Если не найден, он ищется в системной библиотеке. В STEP2 STEPLIB переопределяет JOBLIB, и модуль загрузки программы MYPROG2 ищется в MYPROC.SAMPLE.LIB2, а затем в системной библиотеке.

ВКЛЮЧИТЬ заявление

Набор операторов JCL, закодированных в элементе PDS, может быть включен в JCL с помощью оператора INCLUDE . Когда JES интерпретирует JCL, набор операторов JCL внутри члена INCLUDE заменяет оператор INCLUDE.

Синтаксис

Ниже приведен основной синтаксис оператора JCL INCLUDE:

//name INCLUDE MEMBER=member-name                                      

Основная цель оператора INCLUDE — возможность многократного использования. Например, общие файлы, которые будут использоваться во многих JCL, могут быть закодированы как операторы DD внутри члена INCLUDE и использованы в JCL.

Фиктивные операторы DD, спецификации карт данных, PROCs, JOB, операторы PROC не могут быть закодированы внутри члена INCLUDE. Оператор INLCUDE может быть закодирован внутри члена INCLUDE, и дальнейшее вложение может быть выполнено до 15 уровней.

Заявление JCLLIB

Оператор JCLLIB используется для идентификации частных библиотек, используемых в задании. Может использоваться как с instream, так и с каталогизированными процедурами.

Синтаксис

Ниже приведен основной синтаксис оператора JCL JCLLIB:

//name JCLLIB ORDER=(library1, library2....)                                  

Библиотеки, указанные в операторе JCLLIB, будут найдены в указанном порядке, чтобы найти программы, процедуры и элемент INCLUDE, используемые в задании. В JCL может быть только один оператор JCLLIB; указывается после оператора JOB и до оператора EXEC и INCLUDE, но его нельзя кодировать в элементе INCLUDE.

пример

В следующем примере поиск программы MYPROG3 и INCLUDE MYINCL выполняется в порядке MYPROC.BASE.LIB1, MYPROC.BASE.LIB2, системная библиотека.