如何在 z/OS 上将 java 作为作业步骤运行

Bar*_*tta 0 java jcl zos

我需要在 z/OS 大型机上运行 Java 类程序作为 JCL 作业步骤。有人这样做过吗?我已经尝试过在大型机的AIX下运行java程序。但我需要在 JCL 作业流中运行相同的程序。我知道我可以使用 System.exit(rc) 将返回代码传递回 JCL 步骤。但是如何执行、设置 CLASSPATH、输入参数和文件以及将文件写入 z/OS 呢?

Val*_*e R 5

您当然可以使用 BPXBATCH 来运行 shell 脚本,该脚本设置您需要的任何变量,然后调用 Java。对于简单和静态的事情,您可以通过 JCL 中的特殊 DDNAME 向 BPXBATCH 传递环境变量列表。如果您需要更复杂的处理,您可能会编写一个简短的 shell 脚本来设置您需要的任何内容,其中可能包括将参数从 JCL 定义的文件复制到本地 UNIX 服务文件,您可以将其传递给 Java 应用程序。

如果您的调用 Java 的脚本相当薄,您可能更喜欢 BPXBATSL - 它会在本地生成并为您节省一些资源。您可以在这里阅读有关它们的信息。

请小心输出文件之类的内容 - 当您运行可能派生其他进程的 UNIX 应用程序时,使用“SYSOUT=*”之类的内容效果不太好...最好将输出重定向到本地 UNIX 文件,如此例所示来自上面提到的 IBM 文档:BPXBATCH SH /u/usr/joe/shellscriptA > /tmp/a.out. 如果您需要打印此输出(或其他内容),您始终可以使用 OGET 进行后续步骤 - 请参阅此处

如果您做了很多这样的事情并且想要获得尽可能多的性能,那么您始终可以自己编写一个小型 C 程序来为您处理所有这些步骤。您可以设置所需的任何环境变量等,然后生成 Java 进程并等待它结束。如果您想要更复杂,您甚至可以通过设置一些管道并将它们作为 STDOUT/STDERR 传递给 Java 来直接写入 SYSOUT。

  • 不,该脚本是在您的 z/OS 作业步骤中运行的内容...与 AIX 或任何其他平台无关。您可能会忽略的是,BPXBATCH 可以运行运行您的脚本的普通 UNIX shell。 (2认同)