如何解决上一个 JCL 步骤未找到文件时运行步骤
在以下 JCL 中,HFS 路径 /u/woodsmn/jjk 不存在。它会引发 JCL 错误并且不会运行 copYHFS 步骤,也不会运行任何其他步骤。我希望它检测丢失的文件,并运行 FAILIND 步骤。
我怀疑 MVS 会引发 JCL 错误并完全忽略可能适用的任何 COND 条件。我希望它提出一些失败步骤条件代码并以这种方式行事。
当 PATH 不存在时,如何重写它以执行步骤?
//WOODSMN1 JOB (1111),MSGLEVEL=(1,1),CLASS=A,MSGCLASS=H,// USER=WOODSMN,REGION=1M
//copYHFS EXEC pgm=IKJEFT01
//INHFS DD PATH='/u/woodsmn/jjk',// PATHOPTS=(ORDONLY),RECFM=VB,LRECL=255,BLKSIZE=32760
//OUTMVS DD DSN=WOODSMN.TESTDS1,// disP=(NEW,CATLG,DELETE),// SPACE=(TRK,(1,1)),// DCB=(LRECL=80,RECFM=FB,BLKSIZE=8080)
//SYSTSPRT DD SYSOUT=*
//SYSTSIN DD *
OcopY INDD(INHFS) OUTDD(OUTMVS) CONVERT(NO)
/*
//*
//NETVIEW EXEC pgm=IEFBR14,COND=(0,EQ,copYHFS)
//*
//SUCCIND EXEC pgm=IEBGENER,REGION=1M,NETVIEW)
//SYSPRINT DD SYSOUT=*
//SYSUT1 DD *
Attempt to put file succeeded
/*
//SYSUT2 DD PATHOPTS=(ORDWR,OTrunc,OCREAT),PATHMODE=SIRWXU,// PATHdisP=(KEEP,// PATH='/u/woodsmn/TESTDS.SUCCESS'
//SYSIN DD DUMMY
//*
//FAILIND EXEC pgm=IEBGENER,GT,NETVIEW)
//SYSPRINT DD SYSOUT=*
//SYSUT1 DD *
Attempt to put file Failed
/*
//SYSUT2 DD PATHOPTS=(ORDWR,// PATH='/u/woodsmn/TESTDS.FAIL'
//SYSIN DD DUMMY
//
解决方法
使用 BPXBATCH 执行 shell 命令来测试您的目录是否存在。
//EXIST001 EXEC PGM=BPXBATCH,PARM='SH test -e /u/woodsmn/jjk'
//STDOUT DD SYSOUT=*
//STDERR DD SYSOUT=*
您可能需要变得更加奇特,并使用 STDPARM DD 传递 `set -o errexit' 以使返回代码完全按照您的意愿工作。
,有两点需要改变:
首先,运行IKJEFT1B
而不是IKJEFT01
,因为当SYSTSIN
中的命令以非零返回码结束时,前者将结束,并且该返回码将成为步骤返回代码。
其次,在 ALLOC
之前使用 OCOPY
命令分配 z/OS UNIX 文件。如果 ALLOC
无法分配文件(无论出于何种原因),它将返回 RC=12。
因此,您的第一步应如下所示:
//COPYHFS EXEC PGM=IKJEFT1B
//OUTMVS DD DSN=WOODSMN.TESTDS1,// DISP=(NEW,CATLG,DELETE),// SPACE=(TRK,(1,1)),// DCB=(LRECL=80,RECFM=FB,BLKSIZE=8080)
//SYSTSPRT DD SYSOUT=*
//SYSTSIN DD *
ALLOC F(INHFS) PATH('/u/woodsmn/jjk') -
PATHOPTS(ORDONLY) RECFM(V B) LRECL(255) BLKSIZE(32760)
OCOPY INDD(INHFS) OUTDD(OUTMVS) CONVERT(NO)
/*
然后您可以照常测试 COPYHFS
步骤的返回码。 (顺便说一句,您不需要那个 NETVIEW
步骤,而是直接测试 COPYHFS
步骤的返回码。)
IKJEFT1B
、IKJEFT01
和第三种变体IKJEFT1A
在附录 A. 执行终端监控程序中在手册中进行了描述z/OS TSO/E 定制。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。