如何运行将作业提交给qbatch的命令,然后获取工作号以供以后在CL PGM中使用
我尝试创建一个向qbatch提交作业的命令,之后我想获得下一个命令的返回的作业编号,
我尝试rtvjoba,但这不是正确的
rtvjoba检索我当前的用户作业 当提交命令有不同的工作号码时,
请帮助我解决
我附加代码。
PGM
DCL VAR(&TEMPFILE) TYPE(*CHAR) LEN(10)
DCL VAR(&LEVEL) TYPE(*CHAR) LEN(10)
DCL VAR(&USER ) TYPE(*CHAR) LEN(10)
DCL VAR(&JOB ) TYPE(*CHAR) LEN(10)
DCL VAR(&NBR ) TYPE(*CHAR) LEN(06)
DCL VAR(&SBMMSGQ) TYPE(*CHAR) LEN(10)
DCLF FILE(MLIB/PGM_LIST)
RTVJOBA USER(&USER)
RTVJOBA NBR(&NBR )
CHGVAR VAR(&TEMPFILE) VALUE(&USER || '01')
CHKOBJ OBJ(TEMPLIB/&TEMPFILE) OBJTYPE(*FILE)
MONMSG MSGID(CPF9801) +
EXEC(GOTO CMDLBL(NEXT1))
DLTF TEMPLIB/&TEMPFILE
NEXT1: CPYF FROMFILE(LIB/PGM_TEMP) +
TOFILE(TEMPLIB/&TEMPFILE) +
CRTFILE(*YES)
/* ADDLIBLE &LEVEL */
MONMSG MSGID(CPF2110) EXEC(GOTO CMDLBL(ERRMSG1))
MONMSG MSGID(CPF2103)
READ: RCVF RCDFMT(RECORD1)
MONMSG MSGID(CPF0864) EXEC(GOTO CMDLBL(CLOSE))
COBLIST (&PGM_NAME) LEVEL(*FULL) /* submit a job to QBATCH */
RTVJOBA NBR(&NBR)
CPYSPLF FILE(&PGM_NAME) TOFILE(TEMPLIB/&TEMPFILE) +
JOB(&NBR/&USER/&PGM_NAME) +
MBROPT(*ADD) SPLNBR(*LAST)
GOTO READ
CLOSE: CLOSE
/* RMVLIBLE &LEVEL */
GOTO RETURN
ERRMSG1: SNDPGMMSG MSG('LIB NOT FOUND')
GOTO CLOSE
RETURN: RETURN
ENDPGM
I try to create a command that submit a JOB to QBATCH, after that I want to get the returned JOB number for next command
I try RTVJOBA but it's not right
RTVJOBA retrieve my current USER JOB
while the submitted command has different job number
Please help me resolve
I attach code here
PGM
DCL VAR(&TEMPFILE) TYPE(*CHAR) LEN(10)
DCL VAR(&LEVEL) TYPE(*CHAR) LEN(10)
DCL VAR(&USER ) TYPE(*CHAR) LEN(10)
DCL VAR(&JOB ) TYPE(*CHAR) LEN(10)
DCL VAR(&NBR ) TYPE(*CHAR) LEN(06)
DCL VAR(&SBMMSGQ) TYPE(*CHAR) LEN(10)
DCLF FILE(MLIB/PGM_LIST)
RTVJOBA USER(&USER)
RTVJOBA NBR(&NBR )
CHGVAR VAR(&TEMPFILE) VALUE(&USER || '01')
CHKOBJ OBJ(TEMPLIB/&TEMPFILE) OBJTYPE(*FILE)
MONMSG MSGID(CPF9801) +
EXEC(GOTO CMDLBL(NEXT1))
DLTF TEMPLIB/&TEMPFILE
NEXT1: CPYF FROMFILE(LIB/PGM_TEMP) +
TOFILE(TEMPLIB/&TEMPFILE) +
CRTFILE(*YES)
/* ADDLIBLE &LEVEL */
MONMSG MSGID(CPF2110) EXEC(GOTO CMDLBL(ERRMSG1))
MONMSG MSGID(CPF2103)
READ: RCVF RCDFMT(RECORD1)
MONMSG MSGID(CPF0864) EXEC(GOTO CMDLBL(CLOSE))
COBLIST (&PGM_NAME) LEVEL(*FULL) /* submit a job to QBATCH */
RTVJOBA NBR(&NBR)
CPYSPLF FILE(&PGM_NAME) TOFILE(TEMPLIB/&TEMPFILE) +
JOB(&NBR/&USER/&PGM_NAME) +
MBROPT(*ADD) SPLNBR(*LAST)
GOTO READ
CLOSE: CLOSE
/* RMVLIBLE &LEVEL */
GOTO RETURN
ERRMSG1: SNDPGMMSG MSG('LIB NOT FOUND')
GOTO CLOSE
RETURN: RETURN
ENDPGM
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
SBMJOB之后,您可以收到提供提交的作业号的完成消息。您可以尝试此小程序以查看其工作原理。
After the SBMJOB, you can receive the completion message that gives the submitted job number. You can try this little program to see how it works.
我用来实现这一目标的唯一方法是使用 spawn api ,也许您应该看看它。
对不起,我无法给您举个例子,因为我使用此API制定的唯一代码是为我的公司。
但是整个想法是您可以产生多个过程并获取这些过程ID。使用此过程ID,您可以查看是否仍然处于活动状态。
the only way I've used to achieve this is using the spawn API, maybe you should take a look of it.
I'm sorry I can't bring you an example, 'cause the only code I made with this API is for my company.
But the whole idea is you can spawn several process and get those process id. With this process id you can see if still active.