IBM大型机论坛索引
 
登录
 
IBM大型机论坛索引 大型机:搜索 IBM Mainframe论坛:常见问题解答 寄存器
 

包括Vs JCLLIB


IBM大型机论坛 -> JCL& VSAM
发表新话题   回复主题
查看上一个主题 :: 查看下一个主题  
作者 信息
普里亚

主持人


已加入:2003年7月24日
帖子:568
地点:班加罗尔

发布发表:2003年8月13日,星期三,上​​午7:56
引用回复

Can anyone please explain the diff b/w INCLUDE statement &JCLLIB站...请...
回到顶部
查看用户资料 发送私信
姆滕杜尔卡

活跃用户


已加入:2003年7月29日
职位:237
地点:美国

发布发表:2003年8月13日,星期三,上​​午10:20
引用回复

你好普里亚,

包括

目的

1)确定分区数据集(PDS)或扩展分区数据集扩展(PDSE)的成员名称,该成员包含一组称为INCLUDE组的JCL语句(例如DD和OUTPUT JCL语句)。

2)将INCLUDE组嵌入到JCL流中的INCLUDE语句的位置。

3)INCLUDE组替换INCLUDE语句,并且系统将嵌入式JCL语句作为JCL流的一部分进行处理。受所有JCL处理规则约束的JCL语句必须是完整的语句。也就是说,您不能使用嵌入语句来继续INCLUDE之前的语句。


包括语句:
可以出现在作业中JOB语句之后的任何地方,但有一个例外:如果存在JCLLIB语句,则INCLUDE语句必须位于JCLLIB之后
声明。

必须遵循完整的JCL语句。

可以出现在INCLUDE组中。 INCLUDE组可以包含INCLUDE语句,并且最多可以嵌套15个嵌套级别。

不能出现在CNTL / ENDCNTL组中,该组包含由CNTL和ENDCNTL语句分隔的程序控制语句。

包括组不能包含以下JCL语句:
职位声明
PROC和PEND语句
JCLLIB语句
JES2和JES3语句和命令
DD *和DD DATA语句

不要在INCLUDE组中定义过程。但是,您可以将调用过程的EXEC语句放在INCLUDE组中。

您可以使用INCLUDE语句嵌入包含DD和OUTPUT JCL语句的INCLUDE组,这允许您将相同的数据集定义用于
各种工作。

当INCLUDE语句和INCLUDE组包含符号参数时,系统将替换遇到符号参数时的当前值。分配给INCLUDE组中的符号参数的值(例如使用SET语句)对于在后续的JCL语句上有效。


例子1

在私有库CAMPBELL.SYSOUT.JCL的成员SYSOUT2中定义了以下INCLUDE组。

// @此包含组的目录为...
// @ CAMPBELL.SYSOUT.JCL(SYSOUT2)
// SYSOUT2 DD SYSOUT = A
// OUT1 OUTPUT DEST = POK,COPIES = 3
// OUT2 OUTPUT DEST = KINGSTON,COPIES = 3)
// OUT3 OUTPUT DEST = MCL,COPIES = 1)
// @结束组...
// @ CAMPBELL.SYSOUT.JCL(SYSOUT2)

系统执行以下程序:
// TESTJOB作业...
// LIBSRCH JCLLIB ORDER = CAMPBELL.SYSOUT.JCL
// STEP1 EXEC PGM = OUTRTN
// OUTPUT1 INCLUDE MEMBER = SYSOUT2
// STEP2 EXEC PGM = IEFBR14

JCLLIB语句指定系统要搜索私有库
CAMPBELL.SYSOUT.JCL在搜索之前包含INCLUDE组SYSOUT2
任何系统库。

系统处理INCLUDE语句后,JCL流显示为:

// TESTJOB作业...
// LIBSRCH JCLLIB ORDER = CAMPBELL.SYSOUT.JCL
// STEP1 EXEC PGM = OUTRTN
// @此包含组的目录为...
// @ CAMPBELL.SYSOUT.JCL(SYSOUT2)
// SYSOUT2 DD SYSOUT = A
// OUT1 OUTPUT DEST = POK,COPIES = 3
// OUT2 OUTPUT DEST = KINGSTON,COPIES = 3)
// OUT3 OUTPUT DEST = MCL,COPIES = 1)
// @结束组...
// @ CAMPBELL.SYSOUT.JCL(SYSOUT2)
// STEP2 EXEC PGM = IEFBR14

系统将INCLUDE组嵌入到JCL流中(替换INCLUDE语句),并使用JCL流处理包含的JCL语句。

例子2

下面的示例说明如何使用SET语句为INCLUDE组中的符号参数分配值。

// @此包含组的目录为...
// @ LAMAN.SYSOUT.JCL(SYSOUT2)
// SYSOUT2 DD SYSOUT = A
// OUT1 OUTPUT DEST = POK,COPIES = 3
// OUT2 OUTPUT DEST =&AA,COPIES =&NC
// OUT3 OUTPUT DEST =&BB,COPIES = 1)
// @结束组...
// @ LAMAN.SYSOUT.JCL(SYSOUT2)

执行以下程序。

// JOBA JOB ...
// LIBS JCLLIB ORDER = LAMAN.SYSOUT.JCL
// SET1 SET AA = KINGSTON,BB = STL,NC = 1)
// STEP1 EXEC PGM = OUTRTN
// OUTPUT1 INCLUDE MEMBER = SYSOUT2
// STEP2 EXEC PGM = IEFBR14

SET语句易于为不同的作业更改,它为INCLUDE组SYSOUT2中的符号参数分配值。

系统处理INCLUDE语句后,它将按以下方式执行JCL流:

// JOBA JOB ...
// LIBS JCLLIB ORDER = LAMAN.SYSOUT.JCL
// STEP1 EXEC PGM = OUTRTN
// @此包含组的目录为...
// @ LAMAN.SYSOUT.JCL(SYSOUT2)
// SYSOUT2 DD SYSOUT = A
// OUT1 OUTPUT DEST = POK,COPIES = 3
// OUT2 OUTPUT DEST = KINGSTON,COPIES = 1)
// OUT3 OUTPUT DEST = STL,COPIES = 1)
// @结束组...
// @ LAMAN.SYSOUT.JCL(SYSOUT2)
// STEP2 EXEC PGM = IEFBR14

系统将INCLUDE组嵌入到JCL流中(替换INCLUDE语句),并将值分配给INCLUDE中的符号参数
组。




JCLLIB

目的:

1)标识系统用于作业的专用库的名称。系统在库中搜索:
–在任何EXEC语句上命名的过程
–命名为JCL语句的组(称为INCLUDE组)
在任何INCLUDE语句上。

2)标识系统用于作业的系统过程库和安装定义的过程库的名称。

3)确定搜索库的顺序。系统按照您在JCLLIB上指定库的顺序搜索库
语句,然后搜索任何未指定的默认系统过程库。

JCLLIB语句允许您在私有库中编码和使用过程以及INCLUDE组,而无需使用系统过程库。

每个作业只能编写一个JCLLIB语句。


JCLLIB语句:
1)必须出现在作业中的JOB语句之后和第一个EXEC语句之前。
2)必须出现在任何INCLUDE语句之前。
3)不得出现在INCLUDE组中。


您只能在一个作业中指定一个JCLLIB语句。

您在JCLLIB语句上指定的系统库和专用库可以包含过程和INCLUDE组。

您在JCLLIB语句上指定的私有库必须遵守以下规则:

1)必须对私有库进行分类。但是,无法在通过JOBCAT或STEPCAT DD语句指定的目录中对库进行分类。

2)作业必须可以访问私有图书馆。图书馆必须是
永久居民和在线。

3)JCLLIB数据集不能是受密码保护的数据集。

4)作业必须对JCLLIB上指定的任何系统或私有库具有读取权限。

5)私有库必须具有与系统库相同的数据集属性,这些属性是:
–逻辑记录长度为80个字节(LRECL = 80)
–固定长度的记录(RECFM = F或RECFM = FB)。如果JCLLIB
数据集是PDSE,则记录格式只能是RECFM = FB。
–在JCLLIB语句上指定多个库时,
这些库将串联在一起。



例子1

// MYJOB1作业...
// MYLIBS1 JCLLIB ORDER = CAMPBEL.PROCS.JCL
// S1 EXEC PROC = MYPROC1
.
.
系统按以下顺序在库中搜索过程MYPROC1:

1. CAMPBEL.PROCS.JCL
2. SYS1.PROCLIB

例子2

// MYJOB2作业...
// MYLIBS2 JCLLIB ORDER =(CAMPBEL.PROCS.JCL,PUCHKOF.PROCS.JCL,
// YUILL.PROCS.JCL,GARY.PROCS.JCL)
// S2 EXEC PROC = MYPROC2
.
.
// INC2 INCLUDE MEMBER = MYINC2
.
.

系统在库中搜索过程MYPROC2和INCLUDE组

MYINC2的顺序如下:
1. CAMPBEL.PROCS.JCL
2. PUCHKOF.PROCS.JCL
3. YUILL.PROCS.JCL
4. GARY.PROCS.JCL
5. SYS1.PROCLIB

例子3

您可以指定系统过程库。

// MYJOB3作业...
// MYLIBS3 JCLLIB ORDER =(SYS1.PROCLIB,CAMPBEL.PROCS.JCL)
// S3 EXEC PROC = MYPROC3
.
.

系统按以下顺序在库中搜索过程MYPROC3:

1. SYS1.PROCLIB
2. CAMPBEL.PROCS.JCL
3. SYS1.PROCLIB(再次搜索系统默认过程库)


您可以在任何JCL手册中找到此描述。
如果您没有...向我发送您的邮件ID ...我会将其转发给您。


希望这可以帮助..



问候

Mayuresh
icon_lol.gif
回到顶部
查看用户资料 发送私信
妻子

超级版主


加入:2003年5月30日
帖子:1592

发布发表:2003年8月14日,星期四,上午6:19
引用回复

嗨priya,

简而言之,JCL中的INCLUDE类似于pgming语言(例如COBOL)中的COPYBOOK。它允许您编写一次代码(在本例中为JCL),并在整个JCL中的许多地方多次使用它。

JCLLIB类似于JOBLIB JCL stmt。 JCLLIB stmt指向要在JOB长度内使用的JCL库,而不是指向在JOB长度内保持活动状态的备用负载库。在JOB的JCLLIB中搜索JOB中引用的所有分类过程。如果未提供JCLLIB,则搜索默认的JCL库。使用JCLLIB为您提供了另一种方法来测试proc,然后再将它们转移到生产中。

杰克。
回到顶部
查看用户资料 发送私信
查看上一个主题 :: :: 查看下一个主题  
发表新话题   回复主题 查看书签
所有时间均为格林尼治标准时间+ 6小时
论坛索引 -> JCL& VSAM

 


类似主题
话题 论坛 回覆
没有新帖 包括cond ascii常数 DFSORT / ICETOOL 4
没有新帖 包含排序中的必需日期格式... DFSORT / ICETOOL 6
没有新帖 在INCLUDE参数中指定SMF ... DFSORT / ICETOOL 7
没有新帖 包括基于详细信息的组记录... DFSORT / ICETOOL 11
没有新帖 包括当前& next records if... DFSORT / ICETOOL 22
搜索我们的论坛:


回到顶部