Спасибо Илья! Посмотрел, получил что требовалось, вот пример:
MODULE T_Trap;  (* sia *)
IMPORT StdLog, Kernel;
VAR res, err: INTEGER;

PROCEDURE trapChk();
BEGIN err := Kernel.err END trapChk;

PROCEDURE trapView();
BEGIN END trapView;

PROCEDURE TestAssert(a, b, c: INTEGER);
BEGIN
res := 0; err := 0;
IF a = 21      THEN  ASSERT(a = 0, 21); res := 21
ELSIF a = 41 THEN  ASSERT(a = 0, 42); res := 42
ELSE res := 99 END;
INC(res, 100);
END TestAssert;

PROCEDURE Do*;
VAR
a, b, c: INTEGER;
BEGIN
Kernel.SetTrapGuard(FALSE);
Kernel.InstallTrapViewer(trapView);
Kernel.InstallTrapChecker(trapChk);

Kernel.Try( TestAssert, 21, 0, 0);
StdLog.String("21 ? res, err  = "); StdLog.Int(res); StdLog.Int(err);
StdLog.Bool(err = 21); StdLog.Ln();

Kernel.Try( TestAssert, 41, 0, 0);
StdLog.String("41 ? res, err  = "); StdLog.Int(res); StdLog.Int(err);
StdLog.Bool(err = 41); StdLog.Ln();

Kernel.Try( TestAssert, 99, 0, 0);
StdLog.String("0  ? res, err  = "); StdLog.Int(res); StdLog.Int(err);
StdLog.Bool(err = 0); StdLog.Ln();

END Do;

END  T_Trap.

T_Trap.Do;

(* Log:
21 ? res, err  =  0 21 $TRUE
41 ? res, err  =  0 42 $FALSE
0  ? res, err  =  199 0 $TRUE
*)