Спасибо, Пётр, поглядел твои эксперименты. И потом еще DevDebug поизучал более настойчиво. Придумал решение:

## Код:
```
c.pName := "";
      (* получаем имя процедуры *)
      Kernel.SearchProcVar(SYSTEM.VAL(INTEGER, c.p), mod, adr);    (*  c.p  =  процедурная переменная  *)
      IF mod # NIL THEN
         IF mod.refcnt >= 0 THEN
            ref := mod.refs;
            REPEAT
               Kernel.GetRefProc(ref, n, procName);
            UNTIL (n = 0) OR (n > adr);
            IF n > 0 THEN
               Kernel.GetModName(mod, modName);
               Strings.Utf8ToString(procName, name, res);
               (* записываем полное имя процедуры для передачи другому Блэкбоксу *)
               c.pName := modName + "." + name     (* <===== результат  *)
            END
         ELSE
            Log.String("module unloaded"); Log.Ln
         END;
      END;
```


Файл с примером обновил тоже в хранилище.