我正在提交一个JCL请求,以创建一个文件来指示特定JCL作业是否成功完成。这是必要的,因为我们只能通过SSH访问作业状态。系统报告条件代码0,但文件不是"0";触摸";ed.
JCL:
//WOODSMNX JOB (1111),MSGLEVEL=(1,1),CLASS=A,MSGCLASS=H,
// USER=WOODSMN,REGION=0M
/*JOBPARM S=CLA
//**********************************
//* CREATE SUCCESS INDICATOR FILE *
//**********************************
//SUCCIND EXEC PGM=BPXBATCH
//STDERR DD SYSOUT=*
//STDOUT DD SYSOUT=*
//STDPARM DD *
SH
touch /tmp/SSC.D051721.T200335.S90.CP037.DONE.SUCCESS
/*
//
该作业实际上存储在ZFS文件中,并通过Unix系统服务通过ssh提交。然而,我尝试通过ISPF提交这个JCL,唯一的区别是它存储在RECFM=FB,LRECL=80 PDS中。为什么它会给我一种虚假的成功感?
您可能需要转到文档并向下滚动到标题为";设置返回代码的一般规则";看看添加set -o errexit
是否会得到您想要的结果。
从之前关于并行shell会话的讨论中,我仍然相信您正在开发y多系统sysplex,不是吗?请注意,每个系统都有自己的/tmp
。因此,如果作业在系统A上运行并且您登录到系统B,则您将不会看到";触摸";文件
同样从前面的讨论中,我认为您的sysplex不是使用共享的UNIX文件系统运行的。您应该确保对UNIX文件和目录的所有访问都是从一个始终相同的系统中一致完成的。
还有一件事需要考虑:/tmp
可能是一个临时文件系统(即仅主存储器(RAM((。IPL之后,所有内容都将丢失。如果在作业运行和检查创建了什么文件来表示作业结果之间存在IPL,那么您就会迷失方向。两个文件都找不到。最好选择一个永久存储数据的位置,例如/var/jobname/result
。