Message Queue Break Programs give us an ability to asynchronously execute commands. I don't like having to display my job message queue to see my completion messages; I prefer them to display on the bottom of my screen as status messages. A Message Queue Break Program allows me to do this.
Someplace in the interactive job's initial program, the following code needs to execute:
CHGMSGQ MSGQ(*USRPRF) DLVRY(*BREAK) PGM(DEVCPANDO/CP0003)
The program CP0003
looks like:
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(&MSG ) TYPE(*CHAR) LEN(78)
MONMSG MSGID(CPF0000)
RCVMSG MSGQ(&MSGQLIB/&MSGQ) MSGKEY(&MSGKEY) RMV(*NO) MSG(&MSKEY) RMV(*NO) MSG(&MSG)
SNDPGMMSG MSGID(CPF9898) MSGF(QCPFMSG) MSGDTA(&MSG) TOPGMQ(*EXT) MSGTYPE(*STATUS)
ENDPGM