Message Example:
The code for the break-handling program is detailed below.
QCLSRC source: STSMSG
PGM PARM(&MSGQ &MSGL &MSGK)
DCL VAR(&MSGQ) TYPE(*CHAR) LEN(10)
DCL VAR(&MSGL) TYPE(*CHAR) LEN(10)
DCL VAR(&MSGK) TYPE(*CHAR) LEN(4)
DCL VAR(&BLANK) TYPE(*CHAR) LEN(75)
DCL VAR(&I) TYPE(*DEC) LEN(2 0) VALUE(75)
DCL VAR(&MSG) TYPE(*CHAR) LEN(200)
DCL VAR(&MSGDTA) TYPE(*CHAR) LEN(200)
DCL VAR(&MSGID) TYPE(*CHAR) LEN(7)
DCL VAR(&MSGF) TYPE(*CHAR) LEN(10)
DCL VAR(&MSGL) TYPE(*CHAR) LEN(10)
MONMSG MSGID(CPF0000) EXEC(GOTO CMDLBL(ERROR))
RCVMSG MSGQ(&MSGQ) MSGKEY(&MSGK) RMV(*NO) MSG(&MSG)
LOOP: SNDPGMMSG MSGID(CPF9898) MSGF(QCPFMSG) +
MSGDTA(%SST(&BLANK 1 &I) || &MSG) +
TOPGMQ(*EXT) MSGTYPE(*STATUS)
IF COND(&I *GT 1) THEN(DO)
CHGVAR VAR(&I) VALUE(&I -5)
GOTO CMDLBL(LOOP)
ENDDO
SNDPGMMSG MSGID(CPF9898) MSGF(QCPFMSG) MSGDTA(&MSG) +
TOPGMQ(*EXT) MSGTYPE(*STATUS)
RETURN
ERROR:
MSGD: RCVMSG MSGTYPE(*DIAG) MSG(&MSG) MSGDTA(&MSGDTA) +
MSGID(&MSGID) MSGF(&MSGF) MSGFLIB(&MSGL)
IF COND(&MSGID *NE ' ') THEN(DO)
SNDPGMMSG MSGID(&MSGID) MSGF(&MSGL/&MSGF) +
MSGDTA(&MSGDTA) MSGTYPE(*DIAG)
GOTO CMDLBL(MSGD)
ENDDO
MSGE: RCVMSG MSGTYPE(*EXCP) MSG(&MSG) MSGDTA(&MSGDTA) +
MSGID(&MSGID) MSGF(&MSGF) MSGFLIB(&MSGL)
IF COND(&MSGID *NE ' ') THEN(SNDPGMMSG +
MSGID(&MSGID) MSGF(&MSGL/&MSGF) +
MSGDTA(&MSGDTA) MSGTYPE(*ESCAPE))
ENDPGM
|
To activate the message ticker, the break-handling program needs to be attached to the message queue. Insert the following code into your initial program to set up the message ticker feature.
QCLSRC source: (initial program)
DCL VAR(&USER) TYPE(*CHAR) LEN(10)
/* Retrieve USER */
RTVJOBA USER(&USER)
/* Change USER message queue for Ticker Line */
CHGMSGQ MSGQ(&USER) DLVRY(*BREAK) PGM(@COMMON/STSMSG)
|
|