• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

问个发消息的问题

发布: 2007-6-08 22:43 | 作者: seanhe | 来源: | 查看: 22次 | 进入软件测试论坛讨论

领测软件测试网
我想做到SEND一个MSG给一个用户,让用户第一时间看到这个MSG


如果用SNDBRKMSG的话,如果这个用户不在线,当他登陆的时候,这条消息也不会弹出来,必须DSPMSG才能看到。


怎么样才能做到当这个用户登陆的时候,让这个消息第一时间弹出来显示给用户??? :em06:  :em06:

 zzzddd 回复于:2005-03-21 15:27:19
改它的usrprf,让他的Delivery . . . . . . . . . . . . DLVRY          *BREAK ,这样就可以了!

 xuguopeng 回复于:2005-03-21 17:09:53
那个我已经试过了 不行的

如果这个用户他在系统里面,SNDBRKMSG他会马上看到

可如果他不在线,过后登陆到系统的时候,这条消息是不弹出来的

只能用DSPMSG看才行。。。。。。。。。

 Ginger 回复于:2005-03-21 18:49:08
[quote:0cd0f247ca="zzzddd"]改它的usrprf,让他的Delivery . . . . . . . . . . . . DLVRY          *BREAK ,这样就可以了![/quote:0cd0f247ca]

这样改了后,sndmsg后确实是可以了,但问题也来了,所有的消息都会弹出来,如JOB结束的MSG,这样会很烦~

PS: sndbrkmsg偶没有找到发送给USR的选项啊,好像是只能发给station吧,请教如用该CMD发给USR应如何操作?

TKS!

 mamei 回复于:2005-03-22 09:22:45
前段时间,我鼓捣过这个,

写了一个CL

回去我把源码给你参考一下!!

 xuguopeng 回复于:2005-03-22 10:08:19
我想能否设置发送MSG的Severity code呢??

如果可以设置Severity code的话 就可以更改Severity code filter来取得自己要的消息了。。。

 zzzddd 回复于:2005-03-22 11:03:28
应该可以的亚!你可以自己定义消息吧!

 xuguopeng 回复于:2005-03-22 11:34:38
知道了~ 发个消息还的建MSGF

 YZG 回复于:2005-03-23 12:04:03
我试做了一个.



命令界面




效果画面


 YZG 回复于:2005-03-23 12:16:28
第一步:修改用户登录的初始程序

初始程序代码如下:

/************************************************** */
/*        CLP - INTPGM - INITIAL PROGRAM                                       */
/************************************************** */
             PGM

             DCL        VAR(&MSGQ)    TYPE(*CHAR) LEN(10)
             DCL        VAR(&MSGQLIB) TYPE(*CHAR) LEN(10)

             RTVUSRPRF  MSGQ(&MSGQ) MSGQLIB(&MSGQLIB)

             CHGMSGQ    MSGQ(&MSGQLIB/&MSGQ) DLVRY(*BREAK) +
                                 PGM(YAOLIB/RCVBRKMSG)

             CALL       PGM(QSYS/QCMD)

             RETURN

             ENDPGM






 YZG 回复于:2005-03-23 12:23:28
第二步: 建立MESSAGE接受程序

代码如下:

/* ************************************************* */
/*        CLP - RCVBRKMSG - RECEIVE BREAK MESSAGE                    */
/* ************************************************* */

             PGM        PARM(&MSGQ &MSGQLIB &MSGKEY)

             DCL        VAR(&MSGQ   ) TYPE(*CHAR) LEN(10)
             DCL        VAR(&MSGQLIB) TYPE(*CHAR) LEN(10)
             DCL        VAR(&MSGKEY ) TYPE(*CHAR) LEN(4)
             DCL        VAR(&MSGDTA ) TYPE(*CHAR) LEN(200)
             DCL        VAR(&MSGID  ) TYPE(*CHAR) LEN(7)
             DCL        VAR(&MSGF   ) TYPE(*CHAR) LEN(10)
             DCL        VAR(&MSGFLIB) TYPE(*CHAR) LEN(10)
             DCL        VAR(&MSGTXT ) TYPE(*CHAR) LEN(200)

             DCL        VAR(&BLANK  ) TYPE(*CHAR) LEN(78)
             DCL        VAR(&INDEX  ) TYPE(*DEC)  LEN(2 0) VALUE(78)

             MONMSG     MSGID(CPF0000) EXEC(GOTO CMDLBL(ERROR))

/* ************************************************* */
/*  RECEIVE BREAK MESSAGE                                                         */
/* ************************************************* */

             RCVMSG     MSGQ(&MSGQLIB/&MSGQ)      +
                               MSGKEY(&MSGKEY)                 +
                               RMV(*YES)                              +
                               MSG(&MSGTXT)                       +
                               MSGDTA(&MSGDTA)                +
                               MSGID(&MSGID)                     +
                               MSGF(&MSGF)                        +
                               SNDMSGFLIB(&MSGFLIB)

/* ************************************************* */
/*  RECEIVE BREAK MESSAGE                                                         */
/* ************************************************* */

             IF         COND(&MSGID = ' ') THEN(DO)
             CHGVAR     VAR(&MSGID  ) VALUE('CPF9898')
             CHGVAR     VAR(&MSGFLIB) VALUE('QSYS')
             CHGVAR     VAR(&MSGF   ) VALUE('QCPFMSG')
             CHGVAR     VAR(&MSGDTA ) VALUE(&MSGTXT)
             ENDDO

/* ************************************************* */
/*  AS STATUS MESSAGE TO RESEND                                              */
/* ************************************************* */

 LOOP:       CHGVAR     VAR(&MSGDTA) VALUE(%SST(&BLANK 1 &INDEX) +
                          *CAT &MSGTXT)

             SNDPGMMSG  MSGID(&MSGID)                    +
                                   MSGF(&MSGFLIB/&MSGF)       +
                                   MSGDTA(&MSGDTA)               +
                                   TOPGMQ(*EXT)                      +
                                   MSGTYPE(*STATUS)

             CHGVAR     VAR(&INDEX) VALUE(&INDEX - 2)

             IF         COND(&INDEX *GT 0) THEN(GOTO CMDLBL(LOOP))

             SNDPGMMSG  MSGID(&MSGID)                     +
                                   MSGF(&MSGFLIB/&MSGF)       +
                                   MSGDTA(&MSGTXT)                +
                                   TOPGMQ(*EXT)                      + 
                                   MSGTYPE(*STATUS)

             RETURN

 ERROR:      RCVMSG     MSGDTA(&MSGDTA)            +
                                    MSGID(&MSGID)                  +
                                    MSGF(&MSGF)

             SNDPGMMSG  MSGID(&MSGID)                  +
                                   MSGF(&MSGF)                      +
                                   MSGDTA(&MSGDTA)             +
                                   MSGTYPE(*ESCAPE)
             ENDPGM

 YZG 回复于:2005-03-23 12:25:59
第三步:建立CMD

代码如下:

/* ************************************************************* */
/*        COMMAND - SNDCMSG - SEND COLOR MESSAGE                 */
/*                                                               */
/*   COPYRIHGT (C) 2005 YAO ZHONGGUANG.  ALL RIGHTS RESERVED.    */
/* ************************************************************* */

             CMD        PROMPT('Send Colored Message')

             PARM       KWD(USER)                  +
                        TYPE(*NAME)                +
                        LEN(10)                    +
                        PROMPT('User')

             PARM       KWD(MSG)                   +
                        TYPE(*CHAR)                +
                        LEN(80)                    +
                        PROMPT('Message')

             PARM       KWD(COLOR)                 +
                        TYPE(*CHAR)                +
                        LEN(1)                     +
                        RSTD(*YES)                 +
                        DFT(*WHITE)                +
                        SPCVAL((*GREEN     X'20')  +
                               (*WHITE     X'22')  +
                               (*RED       X'28')  +
                               (*TURQUOISE X'30')  +
                               (*YELLOW    X'32')  +
                               (*PINK      X'38')  +
                               (*BLUE      X'3A')) +
                        PROMPT('Color')

 YZG 回复于:2005-03-23 12:27:06
第四步:建立CMD所执行的CLP

代码如下:

/* ************************************************************* */
/*        CLP - SNDCMSGC - SEND COLOR MESSAGE                    */
/*                                                               */
/*   COPYRIHGT (C) 2005 YAO ZHONGGUANG.  ALL RIGHTS RESERVED.    */
/* ************************************************************* */

             PGM        PARM(&USER &MSG &COLOR)

             DCL        VAR(&USER  ) TYPE(*CHAR) LEN(10)
             DCL        VAR(&MSG   ) TYPE(*CHAR) LEN(80)
             DCL        VAR(&COLOR ) TYPE(*CHAR) LEN( 1)

             DCL        VAR(&MSGF  ) TYPE(*CHAR) LEN(10)
             DCL        VAR(&MSGID ) TYPE(*CHAR) LEN( 7)
             DCL        VAR(&MSGDTA) TYPE(*CHAR) LEN(80)
             DCL        VAR(&MSGTXT) TYPE(*CHAR) LEN(82)

             DCL        VAR(&WHITE ) TYPE(*CHAR) LEN( 1) VALUE(X'22')
             DCL        VAR(&NORMAL) TYPE(*CHAR) LEN( 1) VALUE(X'20')

             MONMSG     MSGID(CPF0000) EXEC(GOTO CMDLBL(ERROR))

/* ************************************************************* */
/*                                                               */
/* ************************************************************* */
             CHKOBJ     OBJ(&USER) OBJTYPE(*USRPRF)

             CHGVAR     VAR(&MSGTXT) VALUE(&MSG)

             IF         COND(&COLOR *NE &WHITE) THEN(DO)

             CHGVAR     VAR(&MSGTXT)                              +
                        VALUE(&COLOR *TCAT &MSGTXT)
             ENDDO

             SNDMSG     MSG(&MSGTXT) TOUSR(&USER)

             RETURN

/* ************************************************************* */
/*                                                               */
/* ************************************************************* */
 ERROR:      RCVMSG     MSGDTA(&MSGDTA)            +
                        MSGID(&MSGID)              +
                        MSGF(&MSGF)

             SNDPGMMSG  MSGID(&MSGID)              +
                        MSGF(&MSGF)                +
                        MSGDTA(&MSGDTA)            +
                        MSGTYPE(*ESCAPE)

             ENDPGM


 YZG 回复于:2005-03-23 12:35:08
以下是用户登录成功后的画面.






 qingzhou 回复于:2005-03-23 12:56:41
[quote:c3bb799d6c="xuguopeng"]知道了~ 发个消息还的建MSGF[/quote:c3bb799d6c]

1、ADDLIBLE   LIB_Name

2、WRKMSGF USRMSG

3、12=Work with message description

4、F6=Add 

5、Input :
 ●Message identifier;
 ●First-level message text;
 ●Severity code

 xuguopeng 回复于:2005-03-23 13:11:40
YGZ和QINGZHOU说的都不错

YGZ的CLP不错,但我的要求没那么烦琐拉~  建一个MSGF就搞定了。。。。。

我只是要通过WRKACTJOB的结果校验CPU的使用以及PGM的状态

如果PGM有MSGW时,发出BREAK消息,并写JOBLOG

同时也CHECK QSYSOPR中的*INQ的MSG

我试过用API获得CPU的使用率,但好象返回的结果都不理想,基本都是0

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备2023014753号-2
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网