STRTJOB配置问题:如何让MYJOB每日00:00自动执行?
JCL定时触发作业未按预期时间执行的解决方法
问题描述
使用STRTJOB作业定时触发MYJOB,预期MYJOB每日00:00自动运行,但实际在每日9:00重复执行(STRTJOB的提交时间为9:00)。原JCL代码如下:
//STRTJOB JOB CLASS=A,NOTIFY=&SYSUID //STEP1 EXEC PGM=IEBGENER //SYSPRINT DD SYSOUT=T //SYSIN DD=DUMMY //SYSUT1 DD SYSOUT=(*,INTRDR) //SYSUT1 DD DATA,DLM=XX /*$TA10,T=00.00,I=86400,´$VS,´´s JOB,N=MYJOB´´´ //XX
问题原因
- DD语句重复定义错误:JCL中重复声明
SYSUT1,IEBGENER要求SYSUT1为输入数据源、SYSUT2为输出目标,此写法会导致数据流向异常。 - $TA命令参数解析偏差:
T=00.00被JES2解析为相对于STRTJOB提交时间的延迟时长(0小时0分),结合重复间隔I=86400(24小时),最终触发时间固定为每日提交时间(9:00),而非预期的绝对时间00:00。
修改方案
1. 修正JCL的DD语句错误
将重复的SYSUT1改为SYSUT2,确保IEBGENER正确将定时命令输出到内部阅读器:
//STRTJOB JOB CLASS=A,NOTIFY=&SYSUID //STEP1 EXEC PGM=IEBGENER //SYSPRINT DD SYSOUT=T //SYSIN DD DUMMY //SYSUT1 DD DATA,DLM=XX /*$TA10,T=(00:00),DATE=+1,I=86400,´$VS,´´s JOB,N=MYJOB´´´ //XX //SYSUT2 DD SYSOUT=(*,INTRDR)
2. 调整$TA命令的定时参数
要实现每日00:00的绝对时间触发,需明确指定首次执行的绝对时间为下一个00:00,再设置每日重复:
T=(00:00):指定触发时间为00:00DATE=+1:指定首次触发为次日的00:00(避免当天00:00已过导致立即执行)I=86400:保持24小时的重复间隔
若需从指定日期的00:00开始,也可直接写绝对日期时间,例如:T=10/06/00:00,I=86400(表示从10月6日00:00开始,每日重复)
验证说明
修改后提交STRTJOB,JES2会将MYJOB加入定时队列,首次执行时间为次日00:00,之后每日同一时间自动触发。
内容的提问来源于stack exchange,提问作者Soraya
相关产品推荐
相关产品推荐

