When attempting to convert Model messages to database file, receive error: Function check on PLI9001.
CA 2E 8.7.x
Running YCVTMDLMSG over a very large model with over 20,000 messages will result in the following error message:
MCH2804 Tried to go larger than storage limit for object &1. PLI0485 STORAGE condition raised at 2126 in YEXPACPR1I. PLI9001 Run-unit ended at 1993 in YPARDTAR1I.
This is IBMi PL/I run unit 16MB limitation, which will be caused if there are hanging surrogates, like infinite loops, present in the model objects or due to a larger number of messages.
In this specific case, this 16MB limitation was reached because of the huge number of messages and their corresponding parameters.
You can avoid this failure and successfully run YCVTMDLMSG with these steps:
1. Build a model list of all MSGs (MSGALL) and make sure all are selected
YBLDMDLLST OBJNAM((*ANY *ALL *MSG)) MDLLST(MSGALL) OUTFLAGVAL(*SELECTED)
2. Run YFLTMDLLST to extract the 6 types of MSG to individual lists
YFLTMDLLST MDLLST(MSGALL) OUTLST(MSGCMP) OBJATR(CMP) YFLTMDLLST MDLLST(MSGALL) OUTLST(MSGERR) OBJATR(ERR) YFLTMDLLST MDLLST(MSGALL) OUTLST(MSGEXC) OBJATR(EXC) YFLTMDLLST MDLLST(MSGALL) OUTLST(MSGINF) OBJATR(INF) YFLTMDLLST MDLLST(MSGALL) OUTLST(MSGRTV) OBJATR(RTV) YFLTMDLLST MDLLST(MSGALL) OUTLST(MSGSTS) OBJATR(STS)
3. Run YCVTMDLMSG using each of the 6 lists
YCVTMDLMSG CVTOPT(*MDLLST) MDLLST(MSGCMP) YCVTMDLMSG CVTOPT(*MDLLST) MDLLST(MSGERR) YCVTMDLMSG CVTOPT(*MDLLST) MDLLST(MSGEXC) YCVTMDLMSG CVTOPT(*MDLLST) MDLLST(MSGINF) YCVTMDLMSG CVTOPT(*MDLLST) MDLLST(MSGRTV) YCVTMDLMSG CVTOPT(*MDLLST) MDLLST(MSGSTS)