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