The JSMPROXY program calls CL program JSMPXYEXT when the following life cycle events occur:

ENTRY

Program starts.

EXIT

Program finishes successfully.

ERRnnnn

where nnnn is a 4 digit number starting from 2000.
Error has occurred, program ending, EXIT event will not be called

The source code for this exit program is stored in QCLSRC in the JSM library.

    /* JSMPROXY EXIT PROGRAM */

PGM PARM(&EVENT &SERVICE &SERVERHOST &REMOTEUSER &REMOTEADDR +
        &DIRECTHOST &HOST &PORT &CONTINUE &MESSAGE)

DCL VAR(&EVENT)      TYPE(*CHAR) LEN(10)
DCL VAR(&SERVICE)    TYPE(*CHAR) LEN(30)
DCL VAR(&SERVERHOST) TYPE(*CHAR) LEN(80)
DCL VAR(&REMOTEUSER) TYPE(*CHAR) LEN(30)
DCL VAR(&REMOTEADDR) TYPE(*CHAR) LEN(45)
DCL VAR(&DIRECTHOST) TYPE(*CHAR) LEN(80)
DCL VAR(&HOST)       TYPE(*CHAR) LEN(80)
DCL VAR(&PORT)       TYPE(*CHAR) LEN(5)
DCL VAR(&CONTINUE)   TYPE(*CHAR) LEN(1)
DCL VAR(&MESSAGE)    TYPE(*CHAR) LEN(256)

MONMSG MSGID(CPF0000)

IF COND(&EVENT *EQ 'ENTRY') THEN(DO)
/* DEFAULT VALUE FOR CONTINUE IS 'Y' */
/* CHGVAR VAR(&CONTINUE) VALUE('N') */
/* CHGVAR VAR(&MESSAGE)  VALUE('I do not know you') */
GOTO END
ENDDO

IF COND(&EVENT *EQ 'EXIT') THEN(DO)
GOTO END
ENDDO

IF COND(%SUBSTRING(&EVENT 1 3) *EQ 'ERR') THEN(DO)
/* LOG ERROR EVENT */
CALLSUBR SUBR(LOGERR)
GOTO END
ENDDO

/* =================================================================== */
/* SUBROUTINES                                                         */
/* =================================================================== */

SUBR SUBR(LOGERR)
/* LOG ERROR EVENT */
SNDPGMMSG MSG('------- JSMPROXY ERROR -------')
SNDPGMMSG MSGID(CPF9897) MSGF(QCPFMSG) MSGDTA(&EVENT)
SNDPGMMSG MSGID(&EVENT)  MSGF(JSMMSGF)

  SNDPGMMSG MSGID(CPF9897) MSGF(QCPFMSG) MSGDTA(&SERVICE)
SNDPGMMSG MSGID(CPF9897) MSGF(QCPFMSG) MSGDTA(&SERVERHOST)
SNDPGMMSG MSGID(CPF9897) MSGF(QCPFMSG) MSGDTA(&REMOTEUSER)
SNDPGMMSG MSGID(CPF9897) MSGF(QCPFMSG) MSGDTA(&REMOTEADDR)
SNDPGMMSG MSG('------------------------------')
ENDSUBR

END: ENDPGM