Когда начал упрощать, то нашел причину. В примере закомментировал неправильное указание типа для lpModuleName## Код:
```
MODULE Test;
   IMPORT SYSTEM, WinApi;
   VAR
   (*  d-: PROCEDURE (lpModuleName: ARRAY [untagged] OF CHAR): INTEGER;   *)
      a-: PROCEDURE (hModule: LONGINT; lpProcName: ARRAY OF CHAR): INTEGER;
      WriteFile-: PROCEDURE (hFile: WinApi.HANDLE; lpBuffer: WinApi.PtrVoid; nNumberOfBytesToWrite: INTEGER; VAR [nil] lpNumberOfBytesWritten: INTEGER; VAR [nil] lpOverlapped: WinApi.OVERLAPPED): INTEGER;
      b: LONGINT;        
      PROCEDURE GetProcAddress*(hModule: INTEGER; procName: ARRAY OF CHAR; VAR c: LONGINT);
   BEGIN
      c := a(hModule, procName)
   END GetProcAddress;

BEGIN
   IF b = 0 THEN
      INC(b);
   END;
END Test.
```
Еще не могу найти в документации эквивалент обероновского флага UNTRACED для ВВ.