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

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

Заявление о JOBLIB

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

Синтаксис

Ниже приводится основной синтаксис оператора 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, а затем в системной библиотеке.

Заявление INCLUDE

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

Синтаксис

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

//name INCLUDE MEMBER=member-name

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

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

Заявление JCLLIB

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

Синтаксис

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

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

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

пример

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

//MYJCL JOB ,,CLASS=6,NOTIFY=&SYSUID
//*
//MYLIB JCLLIB ORDER=(MYPROC.BASE.LIB1,MYPROC.BASE.LIB2)
//*
//STEP1 EXEC PGM=MYPROG3
//INC INCLUDE MEMBER=MYINCL
//OUTPUT1 DD DSN=MYFILES.SAMPLE.OUTPUT1,DISP=(,CATLG,DELETE),
//           RECFM=FB,LRECL=80
//*