//TE01A JOB ACCT#,
// TE01,
// NOTIFY=TE01,
// MSGLEVEL=(1,1)
//STEP1 EXEC PGM=IEFBR14
//DD1 DD DSN=TE01.PS1,UNIT=3390,VOL=SER=USER02,
// DISP=(NEW,CATLG,DELETE),DSORG=PS,RECFM=FB,
// LRECL=80,SPACE=(TRK,1)
1.Display the JES2 Held Output Queue with SDSF
A : Release a job's output
C : Purge a job's output
H : Hold a job's output
L : List a job's output in the log
O : Release output for printing
P : Purge a job's output
S : Display a job's held output
X : Print output data sets.
? : 将作业结果分类显示
2.JCL的9种语句
- JOB : 标志一个作业的开始,提供必要的运行参数
- EXEC : 标志一个作业步的开始,定义本作业步所要执行的程序或过程
- DD : 描述应用程序所需要的数据文件
- /* : 流内数据结束或调用JES控制语句
- //* : 注释语句,在4-80列写出注释内容
- // : 空语句,标记一个作业的结束
- PROC : IN-STREAM PROCEDURE或CATALOGED PROCEDURE的起始标记。
- PEND : 标志IN-STREAM PROCEDURE的结束
- Command : 用来在输入流中写入操作命令
3.JCL错误
- JCL语法错误
- JCL运行时错误(JCL Execution Time Errors)
作业返回码RC的范围:0-4095
JCL字符集(55个)
- 字母26个
- 数字10个
- 通配符3个 (@ $ #)
- 特殊字符10个 (, . / ( ) * & + - =)
- 关系字符集6个 (EQ NE GT GE LT LE)
4.JCL语句规范
除/*外均以第一、第二列的//符号作为开始标志,长度为80列。分为5个区:
- 标识符区 (Identifier Field)
- 名字区 (Name Field) : 从第三列开始,由1~8个字母数字或通配符组成,第一个字符不可以是数字,后面必须跟至少一个空格;
- 操作符区 (Operation Field) : 规定了语句类型: JOB,EXEC,DD,PROC,PEND或者操作员命令,后面至少跟一个空格;
- 参数区 (Parameter Field) : 包括位置参数和关键字参数,没有固定的长度或者列的要求;
- 注释区 (Comment Field) : 位于参数区之后,仅当参数出现时才能书写注释信息,防止于参数混淆,后面必须跟一个空格。
参数区和注释区可以续行,在当前行的71列前把某个参数及其后面的逗号些完整,下一行以"// "开始,续行内容从4~16列开始,从16列以后开始将被当作注释。
5. JOB语句参数
1.位置参数 : 记账信息,程序员名
2.关键字参数 : CLASS,MSGCLASS,MSGLEVEL,NOTIFY,PRTY,ADDRSPC,REGION,TIME,LINES
例子:
//TE01A JOB ACCT#,
// TE01,
// CLASS=A, #作业类别,A~Z,0~9共36个,相同类别的作业处于同一输入等待队列中,具有相同的处理属性,缺省为A
// MSGCLASS=A/X, #为作业日志(LOG)设置输出类别,A~Z,0~9,A为标准格式打印,B为打孔,K为Held Output Queue
// MSGLEVEL=(1,1), #MSGLEVEL=([statements][,messages]) statements:0~2, messages:0~1,缺省为(1,1)
// NOTIFY=TE01 #系统在后台作业处理完毕后给指定用户发送信息
6. MSGLEVEL=([statements][,messages])
statements : 0~2
- 0 : 仅打印作业的JOB语句
- 1 : 打印作业中包括过程语句在内的所有语句,以及JES控制语句
- 2 : 仅打印JCL和JES控制语句,不打印过程语句
- 0 : 仅当作业异常终止时,打印出有关JCL,JES,操作员及SMS的处理信息;否则只打印JCL处理信息;
- 1 : 无论作业是否异常终止都打印所有信息。
7. EXEC : 标志作业步的开始,并告知系统如何执行该作业步。一个作业最多有255个作业步。
格式: //[作业步名] EXEC 位置参数[,关键字参数]...[符号参数=值]...[注释]
EXEC语句的位置参数: 每条EXEC语句必须有且仅有一个位置参数
1.PGM
PGM = {program-name}
{*.stepname.ddname} #要执行的程序由本作业步前名为stepname的作业步内名为ddname的DD语句的DSN参数决定
{*.stepname.procstepname.ddname} #要执行的程序由...所调用的过程步procstepname中...
例子:
//JOBC JOB ,JOHN,MSGCLASS=H
//STEP2 EXEC PGM=UPDT
//DDA DD DSN=SYS1.LINKLIB(P40),
// DISP=OLD
//STEP3 EXEC PGM=*.STEP2.DDA
2.PROC
PROC={procedure-name}
{procedure-name}
EXEC语句的关键字参数(只作用于本作业步):
ACCT,ADDRSPC,REGION,TIME,COND,PARM
8. COND=(code,operator)
功能:将code和已经执行过的任何作业步的RC进行operator的比较。如果结果为真,则跳过作业中余下的所有作业步。
可以一次定义最多8个比较,如果其中任意一个为真,系统将bypass这个step.
COND=((code,operator,stepname),(code,operator,stepname)...)
例子:
//JOB1 JOB 778,SMITH
//EXAMPLE2 EXEC PGM=DELETE
//EXAMPLE3 EXEC PGM=UPDATE,
// COND=(8,GT) #COND=(8,GT,EXAMPLE2) !DIFFERENT!
//DD1 DD DSN=INPUT
如果前面任意作业步RC<8(8>RC), bypass step EXAMPLE3
(如果前面EXAMPLE2作业步RC<8(8>RC), bypass step EXAMPLE3)
//JOB1 JOB 778,SMITH
//EXAMPLE1 EXEC PGM=STEP1
//EXAMPLE2 EXEC PGM=STEP2
//EXAMPLE3 EXEC PGM=STEP3
//EXAMPLE4 EXEC PGM=STEP4,
// COND=EVEN #EXAMPLE4这个作业步总会执行,即便前面有有作业步异常终止
//DD1 DD DSN=INPUT
没有评论:
发表评论