Базовая библиотека — это секционированный набор данных (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, системная библиотека.