每个JCL都可以由许多工作步骤组成.每个作业步骤可以直接执行程序或者可以调用程序,该程序又执行一个或多个程序(作业步骤).保存作业步骤程序/过程信息的语句是 EXEC语句.
EXEC语句的目的是为程序提供所需信息/在作业步骤中执行的过程.在此语句中编码的参数可以将数据传递给正在执行的程序,可以覆盖JOB语句的某些参数,并且如果EXEC语句调用过程而不是直接执行程序,则可以将参数传递给过程.
以下是JCL EXEC语句的基本语法:
//Step-name EXEC Positional-param, Keyword-param
让我们看一下所用术语的描述以上EXEC语句语法.
这标识了JCL中的作业步骤.它的长度可以是1到8,带有字母数字字符.
这是将其标识为EXEC语句的关键字.
这些是位置参数,可以是两种类型:
位置参数 | 描述 |
---|---|
PGM | 这是指在作业步骤中执行的程序名称. |
PROC | 这是指程序名称在工作步骤中执行.我们将另外讨论它. |
关注是EXEC语句的各种关键字参数.您可以根据需要使用一个或多个参数,并用逗号分隔:
关键字参数 | 描述 |
---|---|
PARM | 用于向作业步骤中正在执行的程序提供参数化数据.这是一个程序相关字段,没有明确的规则,除了在有特殊字符的情况下PARM值必须包含在引号内. 例如下面给出的值"CUST1000"作为字母数字值传递给程序.如果程序在COBOL中,则通过程序的LINKAGE SECTION接收通过JCL中的PARM参数传递的值. |
ADDRSPC | 这用于指定作业步骤是否需要虚拟存储或实际存储才能执行.虚拟存储是可分页的,而实际存储不是并且被放置在主存储器中以供执行.需要更快执行的作业步骤可以放在实际存储中.以下是语法: ADDRSPC = VIRT | REAL 当ADDRSPC未编码时,VIRT是默认值. |
ACCT | 这指定了作业步骤的会计信息.以下是语法: ACCT =(userid) 这类似于位置参数会计JOB声明中的信息.如果它在JOB和EXEC语句中都被编码,则JOB语句中的记帐信息适用于未编码ACCT参数的所有作业步骤. EXEC语句中的ACCT参数将覆盖仅作业步骤的JOB语句中的ACCT参数. |
关键字参数 | 描述 |
---|---|
ADDRSPC | 在JOB语句中编码的ADDRSPC会覆盖在任何作业步骤的EXEC语句中编码的ADDRSPC. |
TIME | 如果TIME在EXEC语句中编码,则它仅适用于该作业步骤.如果在JOB和EXEC语句中都指定了它,则两者都将生效,并且可能由于其中任何一个而导致超时错误.不建议在JOB和EXEC语句中同时使用TIME参数. |
REGION | 如果REGION在EXEC语句中编码,则它仅适用于该作业步骤. 在JOB语句覆盖中编码的REGION REGION在任何工作步骤的EXEC语句中编码. |
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