JCL,全称Job Control Language,是IBM大型机操作系统如z/OS中的作业控制语言,用于编写作业脚本,管理和调度系统资源。面试中关于JCL的问题通常涉及其核心概念和用法。下面将详细解析JCL中的一些关键知识点。
1. **DISP参数**:DISP参数用于指示数据集在作业开始时的状态以及作业结束后的处理方式。常见的状态有NEW(新建并使用),OLD(独占已存在的数据集),SHR(共享已存在的数据集),MOD(追加或创建数据集)。作业结束时的处理参数有DELETE(删除数据集),KEEP(保留数据集),PASS(传递给后续步骤),CATLG(编目数据集)和UNCATLG(取消编目)。
2. **DD语句**:DD语句定义了程序在执行时要使用的文件或设备。在子程序中调用文件,也需要通过DD语句来声明,指定DSN(数据集名)和相关选项。
3. **DATASET传递**:通过DISP参数的设置,可以将DATASET从一个步骤(STEP)传递到另一个步骤。例如,使用DISP=(,PASS)可以在步骤A中创建一个数据集,并传递给步骤B。
4. **JOBLIB、STEPLIB和JCLLIB的区别**:
- JOBLIB:在整个作业范围内定义程序库,优先于系统库查找程序。
- STEPLIB:仅对当前步骤有效,指定的程序库在找不到程序时会直接查找系统库。
- JCLLIB:用于指定私有的过程库,系统按顺序查找作业中调用的编目过程。
5. **主分配与从分配**:主分配是在创建数据集时分配的空间,而从分配是在需要更多空间时额外分配的空间。
6. **临时数据集**:临时数据集通常用于在同一作业中传递数据,不指定DSNAME或使用临时文件DSN=&&TEMP,作业完成后会被自动删除。
7. **重启PROC**:通过在JOB卡中指定RESTART=PROCSTEP.STEPNAME,可以指示作业在哪个步骤中重启,PROCSTEP是JCL作业部分的名称。
8. **TIME参数**:TIME参数用于设置作业或步骤的最大CPU时间。TIME=1440表示无时间限制,相当于24小时。若在JOB卡上设置,是整个作业的限制,而在EXEC语句中设置,则是步骤的限制。
9. **COND参数**:COND=EVEN表示无论前一步骤是否成功,都要执行当前步骤;COND=ONLY则表示只有前一步骤失败,才会执行当前步骤。
10. **EXEC语句**:EXEC语句是JCL的核心,它指定要执行的程序,格式为`//STEPNAME EXEC PGM=程序名`,其中STEPNAME是步骤的标识,PGM=后面是程序名。可以附加其他关键字如REGION(内存区域大小)、PARM(传递参数)等。
理解并熟练掌握这些JCL知识点对于在面试中表现出专业性至关重要,因为它们涵盖了JCL的基本操作和流程控制,是大型机系统管理的基础。