Hallo,

ich halte mir diese Probleme auf einfache Weise vom Hals:
1. Bei mir sind alle Exporte/Importe eindeutig, indem ich bei der Angabe EXTPROC im Prototyp den Modulnamen als Prefix vor den Procedure Name stelle. (CLs verwende ich keine - alternativ APIs oder system)
2. Alle CALL Anweisungen werden per CALLP ausgeführt.

Auf dieser Basis zeigt mir DSPMOD DETAIL(*IMPORT) (der auch outfile erlaubt) alle Referenzen, die ich brauche. Mittels PDM kann man sich da auch alle Angaben mit ADD in einem Rutsch in ein Outfile geben lassen.

Von UPDPGM und solchen Sachen lasse ich konsequent die Finger - das vor sich herschieben des neu bindens verschlimmert allenfalls Probleme (weil man nicht mehr weiss, wie korrekt gebunden wird) indem es sie in die Zukunft verschiebt; das gehört für mich in die Schachtel "grober Unfug" in der sich bei mir auch schon Binder Language und LevelCheck No, egal ob für Signaturen von Programmen, Serviceprogrammen oder Dateien, befindet. Lieber den Binder arbeiten, als den Programmierer Fehler suchen lassen.
Probleme beim neu binden lassen sich sicher vermeiden, wenn man genau dokumentiert wie zu binden ist. Ganz einfach geht das, indem man beim CRTPGM alle Module und Serviceprogramme explizit benennnt und den kompletten Befehl als Kommentar in die Quelle des Moduls mit dem Program Entry Point (SRVPGM analog) reinschreibt. Um nicht immer aus der Quelle abtippen zu müsssen, habe ich mir einen kleinen Preprozessor geschrieben, der automatisch aus der Quelle den CompileBefehl ausliest und ausführt, habe ihn OpenSource gemacht und auf meine Webseite gestellt. Seitdem befinden sich Binding Directories bei mir in der Schachtel "mittelgrober Unfug". Wem das zu einfach ist, der kann auch ein Change Management System einsetzen.

Zu dem Debug noch eine Anmerkung: mit Step into (Shift step -> F21) kan man sich da auch durch hangeln.

BTW: Debug gehört für mich in die Schachtel "lästiger Unfug, den man manchmal trotzdem braucht"; zur Verifikation von Modulen taugt der jedenfalls nix - doch das sprengt so ein Posting nun doch bei weitem.

mfg

Dieter Bender

Zitat Zitat von Fuerchau
Per DSPPGM können die Module ausfindig gemacht werden (auf den weiteren Seiten). Eine Ausgabe in OUTFILE gibts leider nicht.
Für das Auffinden von Modulen gibts denn auch nur API's, die hier im Forum bereits diskutiert wurden.
Um ein Modul auszutauschen, reicht das Erstellen des Moduls, das Programm kann dann mittel UPDPGM verändert werden.
Um ein Modul zu debuggen muss beim CRTxxxMOD DEBUG(*SOURCE) angegeben werden, dann kann man mittels STRDBG das Programm debuggen und (ich glaube F15) in die entsprechende Modulquelle wechseln und dort dann Breakpoints setzen und Einzelschritt durchführen.
Es müssen nicht alle Module debugbar sein.