Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何检查Unix系统服务文件是否存在_Unix_Zos_Jcl_Mvs - Fatal编程技术网

如何检查Unix系统服务文件是否存在

如何检查Unix系统服务文件是否存在,unix,zos,jcl,mvs,Unix,Zos,Jcl,Mvs,我正在JZOS下的IBM大型机上运行批处理Java。作业根据在数据库中找到的内容创建0-6“.txt”输出。然后,我需要将这些文件从Unix转换为MVS(ebcdic),并使用在IKJEFT01下运行的OCOPY命令。但是,当没有创建特定的输出时,我得到一个JCL错误,作业结束。我想检查每个文件名是否存在,并设置一个条件代码来控制是否执行IKJEFT01步骤,但不知道使用什么来访问Unix文件路径名。 我通过编写一个COBOL程序来检查转换后的MVS文件并设置返回代码来控制后续JCL步骤的执行,

我正在JZOS下的IBM大型机上运行批处理Java。作业根据在数据库中找到的内容创建0-6“.txt”输出。然后,我需要将这些文件从Unix转换为MVS(ebcdic),并使用在IKJEFT01下运行的OCOPY命令。但是,当没有创建特定的输出时,我得到一个JCL错误,作业结束。我想检查每个文件名是否存在,并设置一个条件代码来控制是否执行IKJEFT01步骤,但不知道使用什么来访问Unix文件路径名。

我通过编写一个COBOL程序来检查转换后的MVS文件并设置返回代码来控制后续JCL步骤的执行,从而解决了这个问题。完成的作业现在正在接受用户验收测试。也许这听起来像是一个难题,但它确实有效,我很高兴与大家分享这个解决方案

在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结束,如果成功,则执行
。如果文件不存在,您将得到一个非零CC(256,我相信),如果
失败,

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


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

我刚刚偶然发现了这一点。我已经在JCL中通过编译/组装作业流中的PGM=BPXBATCH完成了这项工作,其中源文件已从源存储库中签出,并且取决于版本可能存在,也可能不存在,这肯定不是您想要JCL错误的地方。让我在接下来的一两天内把我的JCL挖出来,我会把它贴在这里。谢谢。COBOL程序还添加了一个步骤,但它可以写入JES,并且我可以选择返回代码用于调整后续步骤。此外,我可以一步检查多个文件。