/********************************************************************/
/* Set file scoped flag so caller knows exception occurred */
/********************************************************************/
fException = fTrue;
/********************************************************************/
/* Try and pull out the message text */
/********************************************************************/
_GetExcData(&Signal);
if (!memcmp(Signal.Msg_Id, "TCP", 3) ) {
/******************************************************************/
/* TCP Apps (and Stack with recursive call) message file */
/******************************************************************/
pszMsgFile = QTCPMSGF;
} else if (!memcmp(Signal.Msg_Id, "C2M16", 5) ) {

Figure 302. Sample WSG Server Logon Exit Program (Part 40 of 50)

/******************************************************************/
/* ILE-C message file (primarily for signals, if use raise/abort) */
/******************************************************************/
pszMsgFile = QC2MSGF;
} else if (!memcmp(Signal.Msg_Id, "CEE99", 5) ) {
/******************************************************************/
/* ILE-C message file */
/******************************************************************/
pszMsgFile = QCEEMSG;
} else {
/******************************************************************/
/* Most CPFxxxx messages */
/******************************************************************/
pszMsgFile = QCPFMSG;
} /* endif */

Figure 302. Sample WSG Server Logon Exit Program (Part 41 of 50)

memset(&esErrCode, 0x00, sizeof(esErrCode));
esErrCode.Bytes_Provided = sizeof(esErrCode); /* Ignore exceptions */
QMHRTVM(&rtvm0100, /* Message information */
sizeof(rtvm0100), /* Length of message information */
"RTVM0100", /* Format name */
Signal.Msg_Id, /* Message identifier */
pszMsgFile, /* Qualified message file name */
Signal.Ex_Data, /* Message data */
sizeof(Signal.Ex_Data), /* Length of message data */
"*YES ", /* Replace substitution values */
"*NO ", /* Return format control */
&esErrCode, /* Error Code */
"*MSGID ", /* Retrieve option */
0, /* Convert to CCSID */
0); /* Message data CCSID */
if (esErrCode.Bytes_Available || !rtvm0100.Length_Message_Returned) {

Figure 302. Sample WSG Server Logon Exit Program (Part 42 of 50)

590 OS/400 TCP/IPConfiguration and Reference V4R4