JCL中IEFBR14和COND
COND CODE,就是反映JCL中STEP运行状态的参数,JCL正常终了的COND CODE 是0000,另外笔者在执行某些工具JCL时候,比方说简单一个COMPARE吧,可能会出现0012、0004或者0016,0001,常规的JCL一般就是SUB后盼望出现0000。
IEFBR14是一种鸡肋的简单,其实不太明白JCL教程中的COND,指的是上一个STEP中的返回CODE,还是说本STEP的返回CODE,但在思考了一下,给出了一种解释,JCL在打出COND CODE这一行执行结果后,后面跟着的其实是执行本STEP的处理LOG,最后想了很久还是没搞懂这个CODE是怎么回事。咱就是说,测试条件满足时,不执行该作业步,测试条件满足时候,执行该作业步,让我很迷茫
一、IEFBR14
正如同每个编程体系中都会封装大量的库函数,比如说JAVA中的MAP、C语言中的scanf,在IBM大机的编程体系中同样如此,比方说IEFBR14这个库函数。这个库函数在官方定义其功能为“DO NOTNING”,和DUMMY一样,无为且百搭,在指定系统日付,在DD中创建数据集,删除文件时候都可以用。在IBM的OS/360研发小组,编制这个程序的时候,确定了一个命名规则,IEF是研发这个模块的小组名称,BR是汇编语言中寄存器地址的名字(BR即BRANCH,分支,无条件跳转到芯片支持的所有地址范围),14是指汇编程序结束时、分配到通用寄存器14的地址。
1.1 用IEFBR14创建顺序数据集,指定系统日付
这里面用了数据集长度定义:VB,并且指定了一个固定卷:MVSDL3,创建了一个顺序数据集:D08926.GAC0.TEST.OUTDD1
PS:顺序数据集,数据集的一种,它相当于一个文本文件,但在物理存储上完全按照数据存入的先后顺序存储的
1.2 用IEFBR14创建分区数据集
PDS(PO):分区数据集,相当于一个文件夹,PDS内包含若干个顺序的member,每个member都是一个数据集。但物理存储上,每个PDS包含两部分:Directory(目录)和members(数据集成员)。Directory中存有每个member的名字和地址。
PDS的缺陷是member被删除后,该member所占用的空间没有释放,无法立即使用,需要对该分区数据集压缩之后才会被释放,也就是说需要Z一下。
1.3 用IEFBR14删除文件
二、COND参数
因为BATCH是一个作业流嘛,不是说一串作业流的执行是嘎嘎顺利的,所以有些后续作业步的执行与否,要依赖于先头JOB传递过来的参数,后续我晚上试着再补充一篇,真就挺复杂的。