4

在 JCL 中,STEPLIB 总是覆盖 JOBLIB。谁能解释为什么会这样?

4

3 回答 3

6

以下是 IBM 手册的摘录,解释了 Joblib DD 语句的作用以及 Steplib DD 语句如何与 Joblib 语句交互。

使用 JOBLIB DD 语句可以:

  • 创建一个私人图书馆。

  • 标识一个私有库,系统将在作业中搜索在每个 EXEC 语句 PGM 参数中命名的程序。只有当系统在私有库中没有找到程序时,才会搜索系统库。

STEPLIB 与 JOBLIB 的关系

使用 JOBLIB DD 语句定义系统将用于整个作业的私有库。如果您包含作业的 JOBLIB DD 语句和单个作业步骤的 STEPLIB DD 语句,系统首先搜索步骤库,然后搜索系统库以查找 EXEC 语句中请求的程序。系统忽略该步骤的 JOBLIB 库。

于 2013-07-07T09:22:05.570 回答
3

一句话,没有。要获得明确的答案,您必须找到原始设计师并询问他们原因;我怀疑他们在半个世纪后还记得。这是一个设计决定,除了合理化之外,像大多数这样的原因可能是“当时这似乎是一个好主意”。

JOBLIBSTEPLIB的文档表明它们具有相同的目的。

于 2013-07-07T02:40:48.983 回答
1

以此类推。当您编写程序时,您知道如何拥有一个与全局变量同名的局部变量。语言的范围规则从特定到通用。

与特定于作业步骤级别的 STEPLIB 相同。而 JOBLIB 是一个通用的全局定义。这允许在每一步都可以更改的一般定义或覆盖。反其道而行之,太死板了,不可控。

有些人会说“好吧,IBM 的某个人刚刚做出了选择。” 不,我不同意这一点,IBM 在他们如何设计大型机硬件和软件方面做出了良好、可靠、合理的决策。并且以分层方式控制程序库的能力,从特定到通用是他们众多优秀选择之一。

于 2013-09-04T02:23:39.207 回答