Hallo Alex,

Du meinst bestimmt die Befehle CRTBNDRPG, CRTBNRCBL usw.
Mit diesen Befehlen können Quellen umgewandelt werden, die aus genau einem Modul bestehen, d.h. es dürfen keine Module oder Service-Programme mit dem Befehl CALLB aufgerufen werden.
Bei der Compilierung wird zunächst ein Modul erstellt. Aus diesem Modul dann ein Programm generiert und das Modul-Objekt wieder gelöscht.

Anmerkung :
Nur Programme können mit dem Befehl CALL aufgerufen werden (dynamisches Binden)
Module und Service-Programme müssen mit dem Befehl CALLB aufgerufen werden.
Der Befehl CALLP für den prototypisierten Aufruf ist eigentlich eine Compiler-Anweisung.
Je nach dem, ob ein Programm oder Modul oder Service-Programm aufgerufen wird, wird der Befehl in einen CALL oder CALLB umgewandelt.

Werden Module mit dem Befehl CALLB in einem Programm aufgerufen, wird zum Compile-Zeitpunkt eine Kopie des Moduls in das Programm eingebunden. (Bind by copy) Daraus folgt, wird ein solches Modul geändert, müssen alle Programme, in denen dieses Modul aufgerufen wird neu erstellt werden (CRTPGM oder UPDPGM).

Möchte man dies vermeiden, erstellt man aus den Modulen Service Programme und bindet diese in die Programme ein. Zum Compile-Zeitpunkt wird ein Symbol für das Service-Programm in das Programm eingebunden.(Bind by Reference) Über dieses Symbol wird das entsprechende Service-Programm zum Aktivierungs-Zeitpunkt gefunden.
Ändert sich das Modul, muss nur das zugehörige Service-Programm geändert werden (CRTSRVPGM oder UPDSRVPGM) und alle Programme, die dieses Service-Programm aufrufen arbeiten mit der neuen Version.

Ich hoffe das erklärt einiges

B.Hauser