"eine Prozedur pro Serviceprogramm" ist auch Perfomance-Suboptimal.
Je externen Verweis auf ein Programmobjekt (egal ob Service oder nicht), verwaltet ein Programm einen sog. "Systempointer". Dieser wird beim Laden eines Programmes initialisiert.
Schlägt der Init fehl, kommt es allerdings erst zur Laufzeit zu einem Laufzeitfehler.
Je mehr Systempointer ich nun habe, desto länger die Ladezeit beim Erstaufruf da jedes Objekt über die LIBL gesucht werden muss, was zugegeben auch ziehmlich schnell ist.
Bei INLR = *ON oder MAIN-Programmen werden die Verweise ja wieder aufgehoben.

Warum führt das System wohl über das interne Systemobjekt QINSEPT eine Verweisliste auf alle möglichen Runtime-Module?
Die Compiler generieren da nämlich Aufrufe wie "call Ptr(4711)..." um die Initialisierungen zusparen.