Культурный, абстрагированная от Kernel TRY-EXCEPT.

Оформлять для коллекции компонентов времени нет, но и "зажимать" жалко.

Использование:
## Код:
```
VAR mySafeProc: Robust.Trial;
...
BEGIN
  mySafeProc.proc := SomeProcedure;
  (* можно это делать заранее *)
  ....

 mySafeProc.Try(msg1, msg2, Robust.dummy);
 IF mySafeProc.ok THEN
    ...
  ELSE
    ...
  END
```


## Код:
```
MODULE omcRobust;

   IMPORT Kernel, S := SYSTEM;

   TYPE
      TryProc* = PROCEDURE (VAR par1, par2: ANYREC; IN par3: ANYREC);
      TrySig = PROCEDURE (par1, typ1, par2, typ2, par3, typ3: INTEGER);

      Trial* = RECORD
         proc*: TryProc;
         ok-: BOOLEAN;
         error-, pc-: INTEGER
      END;

   VAR
      dummy*: RECORD END;

      tryProc: TrySig;
      par: ARRAY 3 OF RECORD
         par, typ: INTEGER
      END;

      trapCount: INTEGER;

   PROCEDURE Do (x, y, z: INTEGER);
   BEGIN
      tryProc(par[0].par, par[0].typ, par[1].par, par[1].typ, par[2].par, par[2].typ)
   END Do;

   PROCEDURE (VAR t: Trial) Try* (VAR par1, par2: ANYREC; IN par3: ANYREC), NEW;
   BEGIN
      trapCount := Kernel.trapCount;
      tryProc := S.VAL(TrySig, t.proc);
      par[0].par := S.ADR(par1); par[0].typ := S.TYP(par1);
      par[1].par := S.ADR(par2); par[1].typ := S.TYP(par2);
      par[2].par := S.ADR(par3); par[2].typ := S.TYP(par3);
      Kernel.Try(Do, 0, 0, 0);
      t.ok := Kernel.trapCount = trapCount;
      trapCount := Kernel.trapCount; (* для верхних Try *)
      IF ~t.ok THEN
         t.error := Kernel.err;
         t.pc := Kernel.pc;
      ELSE
         t.error := 0;
         t.pc := 0
      END
   END Try;

END omcRobust.
```
