【问题标题】:How to check for existence of Unix System Services files如何检查 Unix 系统服务文件是否存在
【发布时间】:2012-02-02 10:55:28
【问题描述】:

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

【问题讨论】:

  • 我只是偶然发现了这个。我已经通过 PGM=BPXBATCH 在 JCL 中通过 PGM=BPXBATCH 在编译/组装作业流中完成了此操作,其中源文件已从源存储库中检出,并且取决于版本可能存在也可能不存在 - 绝对不是您想要 JCL 错误的地方。让我在接下来的一两天内挖掘我的 JCL,然后将其发布在这里。

标签: unix zos jcl mvs


【解决方案1】:

在 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 的输出。

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

【讨论】:

  • 谢谢。 COBOL 程序还添加了一个步骤,但它可以写入 JES,我可以选择返回代码以用于调节后续步骤。另外,我可以一步检查多个文件。
猜你喜欢
  • 2011-04-19
  • 1970-01-01
  • 2012-08-16
  • 1970-01-01
  • 2012-10-01
  • 2011-11-16
  • 1970-01-01
  • 2013-01-08
  • 2011-01-18
相关资源
最近更新 更多