2

我在 JZOS 下的 IBM 大型机上运行批处理 Java。该作业根据在数据库中找到的内容创建 0 - 6 个“.txt”输出。然后,我需要将这些文件从 Unix 转换为 MVS (ebcdic),并且我正在使用在 IKJEFT01 下运行的 OCOPY 命令。但是,当未创建特定输出时,我收到 JCL 错误并且作业结束。我想检查每个文件名是否存在并设置条件代码来控制是否执行 IKJEFT01 步骤,但不知道使用什么来访问 Unix 文件路径名。
我已经通过编写一个 COBOL 程序来检查转换后的 MVS 文件并设置返回码来控制后续 JCL 步骤的执行,从而解决了这个问题。已完成的作业现在正在进行用户验收测试。也许这听起来像一个杂牌,但它确实有效,我很高兴分享这个解决方案。

4

1 回答 1

2

在 JCL 中执行此操作的最简单方法是使用 BPXBATCH,如下所示:

//EXIST    EXEC PGM=BPXBATCH,
// PARM='pgm /bin/cat /full/path/to/USS/file.txt'
//*
//         IF  EXIST.RC = 0
//* do whatever you need to
//         ENDIF

如果文件存在,则该步骤以 CC 0 结束并且IF成功。如果文件不存在,你会得到一个非零的 CC(我相信是 256),并且IF失败。

由于没有//STDOUT DD语句,因此没有写入 JES 的输出。

唯一的缺点是它是另一个作业步骤,如果您有很多 proc(如编译/组装作业),您可能会遇到 255 步的限制。

于 2012-01-22T05:50:24.500 回答