本文主要讲解在CLP程序中如何使用RTVJOBA获得JOB属性。 RTVJOBA命令主要用于获" name="description" />

在CLP程序中使用RTVJOBA获得JOB属性

发表于:2007-06-08来源:作者:点击数: 标签:
MI LY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-ansi-language: ZH-CN; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA"> 本文主要讲解在CLP程序中如何使用RTVJOBA获得JOB属性。 RTVJOBA命令主要用于获
MILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-ansi-language: ZH-CN; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">本文主要讲解在CLP程序中如何使用RTVJOBA获得JOB属性。

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查看执行结果如下:

原文转自:http://www.ltesting.net