EXEC 声明
每个JCL都可以由许多工作步骤组成。 每个作业步骤可以直接执行程序或者可以调用程序,该程序又执行一个或多个程序(作业步骤)。 保存作业步骤程序/过程信息的EXEC statement.是EXEC statement.
EXEC语句的目的是为在作业步骤中执行的程序/过程提供所需的信息。 在此语句中编码的参数可以将数据传递给执行中的程序,可以覆盖JOB语句的某些参数,并且如果EXEC语句调用过程而不是直接执行程序,则可以将参数传递给过程。
语法 (Syntax)
以下是JCL EXEC语句的基本语法:
//Step-name EXEC Positional-param, Keyword-param
描述 (Description)
让我们看一下上面EXEC语句语法中使用的术语的描述。
STEP-NAME
这标识了JCL中的作业步骤。 它的长度可以是1到8,带有字母数字字符。
EXEC
这是将其标识为EXEC语句的关键字。
中方位-PARAM
这些是位置参数,可以有两种类型:
位置参数 | 描述 |
---|---|
PGM | 这是指要在作业步骤中执行的程序名称。 |
PROC | 这是指在作业步骤中要执行的过程名称。 我们将单独讨论它。 |
关键字PARAM
以下是EXEC语句的各种关键字参数。 您可以根据需要使用一个或多个参数,并用逗号分隔:
关键字参数 | 描述 |
---|---|
PARM | 用于向作业步骤中正在执行的程序提供参数化数据。 这是一个程序相关字段,没有明确的规则,除了在有特殊字符的情况下PARM值必须包含在引号内。 例如,下面给出了值“CUST1000”作为字母数字值传递给程序。 如果程序在COBOL中,则通过程序的LINKAGE SECTION接收通过JCL中的PARM参数传递的值。 |
ADDRSPC | 这用于指定作业步骤是否需要虚拟存储或实际存储来执行。 虚拟存储是可分页的,而实际存储不是并且被放置在主存储器中以供执行。 需要更快执行的作业步骤可以放在实际存储中。 以下是语法: ADDRSPC=VIRT | REAL 如果未对ADDRSPC进行编码,则VIRT是默认值。 |
ACCT | 这指定了作业步骤的会计信息。 以下是语法: ACCT=(userid) 这类似于JOB语句中的位置参数accounting information 。 如果它在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 | 用于根据上一步的返回代码控制作业步骤执行。 如果在作业步骤的EXEC语句中编码COND参数,则忽略JOB语句(如果存在)的COND参数。 在条件处理中解释了可以使用COND参数执行的各种测试。 |
例子 (Example)
以下是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