字号: 小 中 大 |
推荐给好友
上一篇 |
下一篇
问个发消息的问题
发布: 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/
|
|
|
|
|
|
|
|