📜  JCL(作业控制语言)

📅  最后修改于: 2021-10-19 06:16:47             🧑  作者: Mango

作业控制语言 (JCL) 是一种脚本语言,用于向在 IBM 大型服务器(大型机)计算机中运行的操作系统描述作业。 JCL 充当应用程序(COBOL、PL/1、Assembler 等)和大型机操作系统(MVS 或 Z/OS)之间的接口。它主要是一组控制语句,提供运行应用程序所需的规范。在大型机环境中,程序可以以批处理和在线方式执行。 JCL 用于提交程序以批处理模式执行。

对于您提交的每个作业,您需要告诉 z/OS 在哪里可以找到合适的输入、如何处理该输入以及如何处理结果输出。 JCL 用于将此信息传送到 z/OS。 JCL 最初是为打孔卡设计的,编码 JCL 语句的细节可能很复杂。但是,一般概念非常简单,大多数作业都可以使用这些控制语句的一个很小的子集来运行。

所有作业都需要三种主要类型的 JCL 语句:JOB、EXEC 和 DD。

JOB 语句——它应该是 JCL 中的第一个语句。它向系统指示会计信息和JOB相关信息。它还指定了作业的 SPOOLing 所需的信息,例如作业 ID、执行优先级、作业完成时要通知的用户 ID。

EXEC 语句– 要执行的程序或过程的名称在此处编码。指定要执行的 PROC/程序。 JOB 中的每个 EXEC 语句都标识一个步骤。一个作业中最多可以编码 255 个 EXEC 语句。

DD 语句– 数据描述符。数据集详细信息在此处编码。数据集包含程序需要处理的数据或程序产生的数据。一个步骤中最多可以编码 3273 条 DD 语句。

例子:

//JCLSCHOOL JOB ,,,NOTIFY=&SYSUID
//STEP1 EXEC PGM=IEFBR14
//DD1 DD DSN=JCLSCHOOL.JCL.PS,
// DISP=(NEW,CATLG,DELETE),
// UNIT=SYSDA, SPACE=(TRK,(2,2),RLSE),
// DCB=(LRECL=80,BLKSIZE=800,RECFM=FB)
//SYSPRINT DD SYSOUT=*

输出:

In this JCL, a PS file is created

异常结束 (ABEND) & ERROR

一旦在 JCL 中定义了要完成的工作,就可以使用 SUBMIT 命令将其提交给操作系统。通常在提交之前,会发出 JEM 或 JSCAN 以检查任何可能的 JCL 错误。

JCL 错误:
1. 作业开始执行前的错误:如果存在语法错误,则整个作业将被拒绝,并在 JES MESSAGES 中显示错误消息。通常,这需要更正并重新提交整个 JOB。

2. 步骤开始执行之前的错误:如果存在任何分配问题,例如(未找到数据集,重复数据集),则作业将出错,但在这种情况下,可能已经执行了 n 个步骤。通常,这需要更正并在作业中重新启动。

放弃:
与 JCL 错误不同,ABEND 发生在一个步骤中的程序执行期间。 ABENDS 分为 2 类。

System ABEND(Snnn) – 当系统无法执行程序中指示的语句时,就会发生系统异常终止。操作系统抛出错误。

User ABEND(Unnn) – 当传递的数据中出现一些意外情况时,程序将调用异常终止例程并以适当的显示异常终止步骤。这是由应用程序根据需求抛出的。