Я накидал вот такой демонстрационный пример.
Антон, я не совсем понимаю, почему нужен именно DevCPM.lib ? почему нельзя пользоваться StdLibrarian напрямую? В нем же есть уже стандартный библиотекарь...


## Код:
```
MODULE EasyLibrarian;
(**
   project   = "BlackBox 2.0"
   organization   = "www.oberon.ch, blackbox.oberon.org"
   contributors   = "Ivan Denisov"
   version   = "System/Rsrc/About"
   copyright   = "System/Rsrc/About"
   license   = "The 2-Clause BSD License"
   changes   = ""
   issues   = ""

**)

   IMPORT Files, DevCPM, StdLibrarian;

   TYPE
      Librarian = POINTER TO RECORD (StdLibrarian.Librarian)
         root: Files.Locator
      END;

   PROCEDURE (lib: Librarian) GetSpec (IN sub, name: ARRAY OF CHAR; what: INTEGER; OUT loc: Files.Locator; OUT fname: Files.Name; OUT ftype: Files.Type);
   VAR f: Files.File; loc2: Files.Locator;
   BEGIN
      loc := lib.root.This(sub);
      CASE what OF
      | StdLibrarian.source:
         loc := loc.This('Mod');
         IF loc.res = 0 THEN
            loc2 := loc;
            f := Files.dir.Old(loc2, name + ".cp", Files.shared);
            IF loc2.res = 0 THEN
               ftype := "cp";
               f.Close;
            ELSE
               ftype := "odc"
            END;
         ELSE
            ftype := "odc"
         END;
         fname := name$
      | StdLibrarian.symbols: loc := loc.This('Sym'); ftype := 'osf'; fname := name$
      | StdLibrarian.code: loc := loc.This('Code'); ftype := 'ocf'; fname := name$
      | StdLibrarian.docu: loc := loc.This('Docu'); ftype := 'odc'; fname := name$
      | StdLibrarian.moddocu: loc := loc.This('Docu'); ftype := 'odc'; fname := name$
      | StdLibrarian.rsrc: loc := loc.This('Rsrc'); ftype := 'odc'; ; fname := name$
         (* not sure... how 'bout arbitrary resources? *)
      ELSE HALT(20)
      END;
      lib.res := StdLibrarian.OK
   END GetSpec;

   PROCEDURE Set*;
   VAR lib: Librarian;
   BEGIN
      NEW(lib);
      lib.root := Files.dir.This("");
      StdLibrarian.SetLib(lib);
      DevCPM.lib := lib;
   END Set;

END EasyLibrarian.Set

DevCompiler.CompileThis EasyTest EasyLibrarian
```
