I do not like to see unnecessary escape messages in my joblog.  If I 
monitor for them then I like to remove them.  This way, when I scan the 
joblog for Escape, I only see the ones of import.
So, instead of
ADDLIBLE ...
MONMSG CPF0000
I will do something like the following instead:
START:      PGM
 DCL  &DATA        *CHAR  30  /* Message data from RCVMSG */
 DCL  &KEYVAR      *CHAR   4  /* Message key from RCVMSG */
 DCL  &MSGID       *CHAR   7  /* Message id from RCVMSG */
             ADDLIBLE TLACS
 MONMSG CPF2103 EXEC(DO) /* Library is already in library list */
   /* Remove message from cluttering joblog */
   RCVMSG MSGTYPE(*NEXT) MSGKEY(*TOP) RMV(*YES) KEYVAR(&KEYVAR) +
          MSGDTA(&DATA) MSGID(&MSGID)
 EndDo
             ENDPGM 
This little test program works fine.  If I run it repeatedly I will see:
call a01 
     116 - ADDLIBLE LIB(TLACS) 
     135 - RCVMSG MSGTYPE(*NEXT) MSGKEY(*TOP) RMV(*YES) KEYVAR(&KEYVAR)
    MSGDTA(&DATA) MSGID(&MSGID) 
         - RETURN        /* RETURN due to end of CL program */ 
and no escape message.
However, I have this logic buried in another program and I am still seeing 
the escape message.
Message . . . . :     3100 - ADDLIBLE LIB(TLACS)
CPF2103-Library TLACS already exists in library list.
Message . . . . :     3400 - RCVMSG MSGTYPE(*NEXT) MSGKEY(*TOP) RMV(*YES)
  KEYVAR(&KEYVAR) MSGDTA(&DATA) MSGID(&MSGID) 
Other program's logic looks like:
...
    /*     +
     | Start up BC400     +
    */
             ADDLIBLE TLACS
 MONMSG CPF2103 EXEC(DO) /* Library is already in library list */
   /* Remove message from cluttering joblog */
   RCVMSG MSGTYPE(*NEXT) MSGKEY(*TOP) RMV(*YES) KEYVAR(&KEYVAR) +
          MSGDTA(&DATA) MSGID(&MSGID)
 EndDo
             TLACS/STRBC400
...
Rob Berendt
As an Amazon Associate we earn from qualifying purchases.