在JCL中,STEPLIB总是覆盖JOBLIB。任何人都可以解释为什么会这样?
答案 0 :(得分:6)
以下是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库。
答案 1 :(得分:3)
总之,没有。要获得明确的答案,您必须找到原始设计师,并问他们为什么;我怀疑他们在半个世纪之后还记得。这是一个设计决策,除了合理化之外,像大多数这样的原因很可能“当时看起来好像是个好主意。”
答案 2 :(得分:1)
通过类比来思考。您知道在编写程序时如何使用与全局变量同名的局部变量。语言的范围规则从具体到一般。
与STEPLIB相同,STEPLIB在作业步骤级别是特定的。虽然JOBLIB是一个通用的全球定义。这允许在每个步骤可更改的一般定义或覆盖。走另一条路太僵硬,无法控制。
有些人会说“好吧,有人在IBM做出选择。”不,我不同意这一点,IBM在设计大型机硬件和软件方面做出了良好,可靠,合理的决策。而且,从特定到一般的分层方式控制程序库的能力是他们众多优秀选择之一。