The both error id is "global" error messsage, used to trap all messages.
When you use MONMSG for CPF0000, you are looking for any error messages, while a CPF9999 is for function checks.
When you implement a program-level message monitor, I recommend that you use the message identifier CPF9999 instead of the widely used CPF0000. Using CPF9999 provides two important functions over CPF0000. First, CPF9999 catches some messages that CPF0000 will not catch because CPF9999 is the "Function Check" error, which occurs only after some other program error, including errors triggered by CPFxxxx escape messages, MCHxxxx escape messages (machine errors), and escape messages from other message identifier groups. CPF0000 only monitors for actual CPFxxxx messages. Second, the CPF9999 "Function Check" message provides the actual failing statement number, which is not available from the CPFxxxx error message. Specifying the CPF9999 message ID as the program-level message monitor makes this additional information available.
Thanks for the information.
Can you please provide one scenarios for this?
Do u meant that CPF9999 will catch MCHxxxx messages too?