z/OS 2.4环境下,如何用JCL在顺序数据集顶部添加当前日期时间?
最佳实现方案
针对你的需求,最简洁且兼容现有JOB的方式是在原IKJEFT01步骤中,先通过TSO命令输出当前日期时间,再执行Db2命令,无需新增额外步骤,具体调整如下:
调整后的JCL代码片段
//MYUSERND JOB (16201,CCA25,227,72575),'DSPCPYPQ', // CLASS=1,MSGCLASS=X,MSGLEVEL=1,REGION=32M,NOTIFY=MYUSERN,TIME=99 /*JOBPARM TIME=10,LINES=050,CARDS=0000,COPIES=01 //*---------------------------------------------- //DISDB EXEC PGM=IKJEFT01,DYNAMNBR=20 //*---------------------------------------------- //STEPLIB DD DISP=SHR,DSN=DB2.DBQ1.DSNA10.SDSNLOAD //SYSPRINT DD SYSOUT=* //SYSTSPRT DD DISP=OLD,DSN=MYUSERN.DB2.CMDOUTQ <-- 将DISP改为OLD,确保每次覆盖原有内容 //SYSTSIN DD * ECHO "JOB RUN DATE/TIME: &SYSDATE &SYSTIME" <-- 输出格式化的日期时间 ECHO "" <-- 输出空行分隔 DSN SYSTEM(DBQ1) -DISPLAY DB(DN*) SPACENAM(*) USE RESTRICT LIMIT(*) ... //
关键说明
- DISP参数修正:原
SYSTSPRT的DISP=SHR仅允许读取,无法写入修改;改为DISP=OLD会覆盖原有数据集内容,符合每日生成新报告的需求。 - 系统符号解析:
&SYSDATE(格式为YYYY/MM/DD)和&SYSTIME(格式为HH:MM:SS)是JCL内置系统符号,提交JOB时会自动替换为当前日期时间,无需额外配置。 - 兼容性保障:完全复用现有IKJEFT01步骤,对原有JOB逻辑改动极小,不会影响长期稳定运行的状态。
备选方案(自定义格式需求)
如果需要更贴合习惯的日期时间格式,可使用TSO原生的DATE和TIME命令输出系统标准格式,调整SYSTSIN部分即可:
//SYSTSIN DD * ECHO "=== JOB RUN DETAIL ===" DATE TIME ECHO "" DSN SYSTEM(DBQ1) -DISPLAY DB(DN*) SPACENAM(*) USE RESTRICT LIMIT(*) ... //
输出效果示例:
=== JOB RUN DETAIL === DATE=2024.234 TIME=06:15:32 DSN DISPLAY DB(DN*) SPACENAM(*) USE RESTRICT LIMIT(*) ...(Db2表空间状态输出)
内容的提问来源于stack exchange,提问作者Dave Ford
相关产品推荐
相关产品推荐

