2016-06-11 2 views
1

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

//REPORTS EXEC PGM=IKJEFT01,**PARM='SDSFINFO FTPSRV01 * hiqual'** 
//SYSEXEC DD DSN=rexx.is.here,DISP=(SHR,PASS)     
//SYSTSPRT DD SYSOUT=A,HOLD=YES        
//SYSTSIN DD DUMMY           

Я пишу свой JCL в качестве процедуры. Действительно ли описать параметры в счете-фактуре процедуры? Пример:

//stepxx exec myproc,hiqual=hiqual,owner=*... 

ответ

3

Существует два вида процедуры, каталогизированная процедура и процедура в потоке.

Каталогизированная процедура хранится в библиотечном элементе отдельно от исполняемого JCL. Эта отдельная библиотека расположена системой, просматривающей список таких библиотек, определенных ей в SYS1.PARMLIB. Этот список может быть переопределен оператором JCLLIB в исполняемом JCL. Вероятно, ваш магазин имеет стандартное место, где хранятся каталогизированные процедуры.

Процедуры In-Stream расположены в том же члене библиотеки, что и ваш JCL-исполнитель. Оператор PROC должен находиться между вашей службой и оператором EXEC, который выполняет именованный процесс. Процедура в потоке должна заканчиваться оператором PEND.

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

Вы движетесь в правильном направлении ...

[jobcard is here] 
//MYPROC PROC 
//REPORTS EXEC PGM=IKJEFT01,PARM='SDSFINFO FTPSRV01 &OWNER &HIQUAL' 
//SYSEXEC DD DSN=[rexx.is.here],DISP=(SHR,PASS) 
//SYSTSPRT DD SYSOUT=A,HOLD=YES 
//SYSTSIN DD DUMMY 
//   PEND 
//* 
//MYSTEP EXEC PROC=MYPROC,HIQUAL=ABC,OWNER=XYZ 

... где материал в квадратных скобках должны быть предоставлены Вами. Это приведет к MyProc выполняется, как если бы вы жёстко ...

//REPORTS EXEC PGM=IKJEFT01,PARM='SDSFINFO FTPSRV01 XYZ ABC' 
//SYSEXEC DD DSN=[rexx.is.here],DISP=(SHR,PASS) 
//SYSTSPRT DD SYSOUT=A,HOLD=YES 
//SYSTSIN DD DUMMY 

Иногда прок кодируются со значениями по умолчанию для символьных параметров ...

//MYPROC PROC ENV='PROD' 
//REPORTS EXEC PGM=IKJEFT01,PARM='SDSFINFO FTPSRV01 &OWNER &HIQUAL' 
//SYSEXEC DD DSN=&ENV..REXX,DISP=(SHR,PASS) 
//SYSTSPRT DD SYSOUT=A,HOLD=YES 
//SYSTSIN DD DUMMY 

... а иногда значение по умолчанию является документация ...

//MYPROC PROC ENV='SPECIFY_PROD_OR_TEST_OR_QA' 
//REPORTS EXEC PGM=IKJEFT01,PARM='SDSFINFO FTPSRV01 &OWNER &HIQUAL' 
//SYSEXEC DD DSN=&ENV..REXX,DISP=(SHR,PASS) 
//SYSTSPRT DD SYSOUT=A,HOLD=YES 
//SYSTSIN DD DUMMY 

... принудительное выполнение JCL для обеспечения значения или ошибки JCL во время выполнения.

Обратите внимание, что с помощью инструкции SET вы можете использовать символические параметры, не требуя процедуры, каталогизации или в потоке. Это ...

[jobcard is here] 
// SET HIQUAL=ABC 
// SET OWNER=XYZ 
//* 
//REPORTS EXEC PGM=IKJEFT01,PARM='SDSFINFO FTPSRV01 &OWNER &HIQUAL' 
//SYSEXEC DD DSN=[rexx.is.here],DISP=(SHR,PASS) 
//SYSTSPRT DD SYSOUT=A,HOLD=YES 
//SYSTSIN DD DUMMY 
//* 

... даст те же результаты, что и в первом примере, без использования proc.

Как правило, существуют стандарты магазинов, к которым вы, как ожидается, будете придерживаться. Часто в магазинах мейнфреймов есть выделенная группа, функция которой заключается в том, чтобы запускать потоки производственных заданий, планируя сотни или тысячи таких потоков рабочих мест в день.

+0

Официально то, что вы описали как _заменяемые параметры_, называются ** символическими параметрами **. Не путать с параметрами JCL (positional и Keyword), а также не путать с параметрами, переданными программам, написанным для чтения поля PARM оператора PGM. – MikeT

+1

@MikeT спасибо, я изменил ответ за ваш комментарий. – cschneid

Смежные вопросы