为啥 StEPLIB 总是覆盖 JCL 中的 JOBLIB? [关闭]

Posted

技术标签:

【中文标题】为啥 StEPLIB 总是覆盖 JCL 中的 JOBLIB? [关闭]【英文标题】:Why the StEPLIB always overrides the JOBLIB,in JCL? [closed]为什么 StEPLIB 总是覆盖 JCL 中的 JOBLIB? [关闭] 【发布时间】:2013-07-06 23:15:26 【问题描述】:

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

【问题讨论】:

正如@cschneid 指出的那样,没有人会知道这个问题的实际答案,如果他们知道了,这对任何事情有什么帮助?解决这个问题的好机会。 【参考方案1】:

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

Use the JOBLIB DD statement to:

创建一个私有库。

标识系统要搜索的私有库 作业中每个 EXEC 语句 PGM 参数中命名的程序。除非 系统在私有库中没有找到程序,是吗 搜索系统库。

Relationship of a STEPLIB to a JOBLIB

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

【讨论】:

好吧,人们仍然更喜欢这个 :-) JOBLIB 什么都没有。 JOBLIB 提供“私有库”(一个或多个),在系统库之前将首先搜索这些库以找到程序。 JOBLIB 为 JOB 中的每个步骤提供这些库。在提供 STEPLIB 的任何步骤中,JOBLIB(如果存在)将被忽略。然后搜索来自 STEPLIB 的私有库,然后是系统库。 STEPLIB 和 JOBLIB 都不会“覆盖系统定义的库”。 你说得对,我误解了 Joblib 和 Steplib 之间的关系,这不是我所期望的。【参考方案2】:

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

JOBLIB 和 STEPLIB 的文档表明它们的用途相同。

【讨论】:

我认为这是正确的。有一个选择,有人选择了另一个。为什么?除了选择者,谁知道?如果采取了其他选择,那么该选择现在将“有意义”,因为它已经使用了很多年。就是这样。 实际上有很多原因可能需要 STEPLIB 来覆盖 JOBLIB。最好的原因之一是当安装了专有软件产品时,只有一个应用程序具有使用许可。不过,一般来说,JOBLIB 用于定义私有库或应用程序特定库,当您需要版本控制来引用 JOBLIB 中包含的对象的不同版本时,插入 STEPLIB 是合适的。 @MikeC 这些是我所说的合理化。我很清楚 JOBLIB 和 STEPLIB 的用途,但这不是问题。【参考方案3】:

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

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

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

【讨论】:

以上是关于为啥 StEPLIB 总是覆盖 JCL 中的 JOBLIB? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

C# - 为啥全屏 Winform 应用程序不总是覆盖任务栏?

为啥我的excel打字总是被下列覆盖,需要拉长列宽

为啥 plot_ly 饼图总是将 R 中的第 5 个值文本从白色变为黑色?

SVG:为啥外部 css 会覆盖文本的内联样式?

如何保护 JCL FTP 中的存储密码?

如果我在不同的方法中对文本应用更多样式,为啥会覆盖样式?