RTVJOBA命令主要用于获得一个或同时获得作业的多个属性。它参数定义可以在OS/400命令行输入RTVJOBA命令,然后按F4键获得所有参数的定义和属性(字段名、长度等),如下图所示:
那如何在CLP程序中使用RTVJOBA呢?
下面举一个例子来具体说明如何在CLP程序中使用RTVJOBA命令,这个程序主要实现从当前作业中取出它所用的Message Queue和它所在的Library,然后将Message发送到这个Message Queue中,程序中用到了几个自定义的变量:
&MSGQ用于存放Message Queue的名称;
&MSGQLIB用于存放Message Queue所在的Library;
&MSGKEY用于将Message的查询结果用RCVMSG返回到相应的Message Queue中;
&REPLY用于存放返回回答结果;
列 . . . : 1 71 浏览 LIU/QCLSRC SEU==> ZRTVJOBA FMT ** ...+... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ******************** 数据开始 ***************************************** 0001.00 PGM 0002.00 DCL VAR(&MSGQ) TYPE(*CHAR) LEN(10) 0003.00 DCL VAR(&MSGQLIB) TYPE(*CHAR) LEN(10) 0004.00 DCL VAR(&MSGKEY) TYPE(*CHAR) LEN(4) 0005.00 DCL VAR(&REPLY) TYPE(*CHAR) LEN(1) 0006.00 CHGVAR VAR(&REPLY) VALUE(*BLANKS) 0007.00 0008.00 RTVJOBA SBMMSGQ(&MSGQ) SBMMSGQLIB(&MSGQLIB) 0009.00 IF COND(&MSGQ *EQ '*NONE') THEN(DO) 0010.00 CHGVAR VAR(&MSGQ) VALUE('QSYSOPR') 0011.00 CHGVAR VAR(&MSGQLIB) VALUE('QSYS') 0012.00 ENDDO 0013.00 SNDMSG: SNDPGMMSG MSG('WOULD YOU PLEASE TO INSERT A TAPE IN + 0014.00 THE DRIVER (Y/N)?') + 0014.01 TOMSGQ(&MSGQLIB/&MSGQ) MSGTYPE(*INQ) + 0014.02 KEYVAR(&MSGKEY) 0017.00 0018.00 RCVMSG MSGQ(*PGMQ) MSGTYPE(*RPY) MSGKEY(&MSGKEY) + 0019.00 WAIT(12) MSG(&REPLY) 0020.00 IF COND(&REPLY *EQ 'Y') THEN(GOTO CMDLBL(BACKUP)) 0021.00 ELSE CMD(IF COND(&REPLY *EQ 'N') THEN(GOTO + 0021.01 CMDLBL(END))) 0022.00 0023.00 BACKUP: SNDPGMMSG MSG('BACKUP FINISHED') TOMSGQ(&MSGQLIB/&MSGQ) 0026.00 0028.00 END: ENDPGM ******************** 数据结束 *****************************************
F3= 退出 F5= 刷新 F9= 检索 F10= 光标 F11= 切换 F12= 取消 F16= 重复查找 F24= 其余键 |
执行CALL ZRTVJOBA后,先通过Shift+Esc系统请求键切换到4回答QSYS/QSYSOPR信息,最终也通过WRKMSG QSYSOPR查看执行结果如下:
文章来源于领测软件测试网 https://www.ltesting.net/