JCL - EXEC 语句

每个 JCL 都可以由许多作业步骤组成。 每个作业步骤可以直接执行一个程序,也可以调用一个过程,该过程依次执行一个或多个程序(作业步骤)。 保存作业步骤程序/过程信息的语句是EXEC语句。

EXEC 语句的目的是为作业步骤中执行的程序/过程提供所需的信息。 此语句中编码的参数可以将数据传递给正在执行的程序,可以覆盖 JOB 语句的某些参数,如果 EXEC 语句调用过程而不是直接执行程序,则可以将参数传递给过程。

语法

以下是 JCL EXEC 语句的基本语法:

//Step-name EXEC Positional-param, Keyword-param 

描述

让我们看看上面 EXEC 语句语法中使用的术语的描述。

步骤名称

这标识了 JCL 中的作业步骤。 它的长度可以是 1 到 8,包含字母数字字符。

EXEC

这是将其标识为 EXEC 语句的关键字。

Positional-param(位置参数)

这些是位置参数,可以有两种类型:

位置参数 描述
PGM 这是指作业步骤中要执行的程序名称。
PROC 这是指作业步骤中要执行的过程名称。 我们将单独章节讨论它。

Keyword-param(关键字参数)

以下是 EXEC 语句的各个关键字参数。 您可以根据需要使用一个或多个参数,参数之间以逗号分隔:

关键字参数 描述
PARM

用于向作业步骤中正在执行的程序提供参数化数据。 这是一个与程序相关的字段,没有明确的规则,只是如果 PARM 值包含特殊字符,则必须将其包含在引号内。

例如下面给出的示例,值"CUST1000"作为字母数字值传递给程序。 如果程序采用 COBOL 格式,则通过 JCL 中的 PARM 参数传递的值将在程序的 LINKAGE SECTION 中接收。

ADDRSPC

这用于指定作业步骤是否需要虚拟存储或实际存储来执行。 虚拟存储是可分页的,而实际存储则不是,而是放置在主内存中以供执行。 需要更快执行的作业步骤可以放置在实际存储中。 以下是语法:

ADDRSPC=VIRT | REAL

当 ADDRSPC 未编码时,VIRT 是默认的。

ACCT

这指定了作业步骤的记帐信息。 以下是语法:

ACCT=(userid)

这类似于JOB语句中的位置参数记帐信息。 如果在 JOB 和 EXEC 语句中都编码,则 JOB 语句中的记帐信息适用于未编码 ACCT 参数的所有作业步骤。 EXEC 语句中的 ACCT 参数将仅覆盖该作业步骤的 JOB 语句中存在的参数。

EXEC和JOB语句常用关键字参数

关键字参数 描述
ADDRSPC JOB 语句中编码的 ADDRSPC 会覆盖任何作业步骤的 EXEC 语句中编码的 ADDRSPC。
TIME 如果 TIME 在 EXEC 语句中编码,则它仅适用于该作业步骤。 如果在 JOB 和 EXEC 语句中都指定了它,则两者都将有效,并且可能会由于其中任何一个而导致超时错误。 不建议在 JOB 和 EXEC 语句中同时使用 TIME 参数。
REGION

如果 REGION 在 EXEC 语句中编码,则它仅适用于该作业步骤。

JOB 语句中编码的 REGION 会覆盖任何作业步骤的 EXEC 语句中编码的 REGION。

COND

用于根据上一步的返回码控制作业步骤的执行。

如果 COND 参数编码在作业步骤的 EXEC 语句中,则 JOB 语句的 COND 参数(如果存在)将被忽略。 条件处理中解释了可以使用 COND 参数执行的各种测试。

示例

以下是 JCL 脚本以及 JOB 和 EXEC 语句的简单示例:

//TTYYSAMP JOB 'TUTO',CLASS=6,MSGCLASS=X,REGION=8K,
//      NOTIFY=&SYSUID
//*
//STEP010 EXEC PGM=MYCOBOL,PARAM=CUST1000,
//      ACCT=(XXXX),REGION=8K,ADDRSPC=REAL,TIME=1440