【发布时间】:2021-06-13 05:25:57
【问题描述】:
在下面的 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,COND=(0,EQ,NETVIEW)
//SYSPRINT DD SYSOUT=*
//SYSUT1 DD *
Attempt to put file succeeded
/*
//SYSUT2 DD PATHOPTS=(ORDWR,OTRUNC,OCREAT),PATHMODE=SIRWXU,
// PATHDISP=(KEEP,DELETE),
// PATH='/u/woodsmn/TESTDS.SUCCESS'
//SYSIN DD DUMMY
//*
//FAILIND EXEC PGM=IEBGENER,REGION=1M,COND=(0,GT,NETVIEW)
//SYSPRINT DD SYSOUT=*
//SYSUT1 DD *
Attempt to put file failed
/*
//SYSUT2 DD PATHOPTS=(ORDWR,OTRUNC,OCREAT),PATHMODE=SIRWXU,
// PATHDISP=(KEEP,DELETE),
// PATH='/u/woodsmn/TESTDS.FAIL'
//SYSIN DD DUMMY
//
【问题讨论】:
-
如果您只想测试数据集是否存在,请使用实用程序并检查返回码。您无法检查 JCL 中是否存在数据集。对于 MVS 数据集,您可以使用 idcams。在 JES3 中的内存中,您会在作业开始之前收到 JCL 错误。在 JES2 中,作业在步骤开始时失败。你能告诉我们你使用的是哪个版本的 JES