SUBROUTINE trackerrors(filevar, event, prerc, flags, recordkey, record, userrc)
*
*** Initialization
INCLUDE JBC.h
COMMON /trackerrors/ openflag, errorlog, jbcmessages
* This dynamic array contains the IDs of records in the jbcmessages file that we want to log
error_ids = ''
error_ids<-1> = 'DIVIDE_ZERO'
error_ids<-1> = 'NON_NUMERIC'
error_ids<-1> = 'ZERO_USED'
*
*** Open the ERRORLOG and jbcmessages files, once per session, to named common.
IF UNASSIGNED(openflag) OR NOT(openflag) THEN
openflag = @TRUE ;* Assume successful OPENs
OPEN 'ERRORLOG' TO errorlog ELSE openflag = @FALSE
OPEN 'C:\custom\jbcmessages' TO jbcmessages ELSE openflag = @FALSE
IF openflag = @FALSE THEN
CRT 'Unable to open ERRORLOG or jbcmessages.'
ABORT
END
END
*
*** Log only the specific errors in the error_ids array
IF event = TRIGGER_TYPE_POSTREAD THEN
LOCATE recordkey IN error_ids SETTING position THEN
READU rec FROM errorlog, recordkey ELSE rec = ''
process = SYSTEM(1029)<1,1,4>
rec<1,-1> = process
rec<2,-1> = DATE()
rec<3,-1> = TIME()
rec<4,-1> = SYSTEM(18) ;* port number
rec<5,-1> = SYSTEM(19) ;* user id
rec<6,-1> = @PID
WRITE rec ON errorlog, recordkey
END
END
RETURN