View Full Version : ILE-RPG in Stapel debuggen
hallo Leute,
wie kann man ein ILE-RPG-PGM debuggen, welches als
Stapelprogramm ausgeführt wird.
Bei traditionellen RPG kann man ja mit strsrvjob
und strdbg vorgehen.
Bei ILE-RPG funktioniert das aber nicht.
Wer hat das schon gemacht?
Danke für Eure Vorschläge.
so? dann muss das völlig neu sein, gestern ging das bei mir noch!!
Bei traditionellen RPG kann man ja mit strsrvjob
und strdbg vorgehen.
Bei ILE-RPG funktioniert das aber nicht.
Das funktioniert bei ILERPG ganz genauso.
Was genau funktioniert denn bei dir nicht ?
Ggf. fehlt beim CRTRPGLE ... DBGVIEW(*SOURCE).
ich gehe folgendermaßen vor:
strsrvjob...
strdbg programmname
dann erscheint die Source
möchte mit F6 Breakpoint hinzufügen ->folgende Meldung
Befehl nicht zulässig, solange gewarteter Job nicht aktiv ist.
sobald der Job aktiv ist und ich mit addbkp arbeiten möchte,
kommt die Fehlermeldung
Kein Standardprogramm vorhanden.
will ich dann mit chgdbg das Standardprogramm ändern,
kommt die Fehlermeldung
Programm xy in der OPM-Testhilfeumgebung nicht aktiv.
wenn ich addpgm mache kommt die Meldung
Befehl für Binderprogramme ungültig.
Das ist das generelle Problem mit Batch-Debug.
Breakpoints können leider nur gesetzt werden, wenn der Job aktiv ist. Das hat mit ILE gar nichts zu tun.
Du musst den Job erst mal loslaufen lassen, bevor du Breakpoints setzt.
Da der Job aber ggf. schon fertig ist, bevor du die Chance hast, musst du dir eine sinnvolle Wartemöglichkeit einfallen lassen.
Z.B.:
Im Dialogjob einen ALCOBJ *EXCL auf ein Testobjekt machen.
Ein CLP submitten, dass auf das gleiche Objekt wartet.
Dann den Debugger starten und Breakpoints setzen.
Anschließend per DLCOBJ im Dialogjob das Objekt wieder freigeben.
Du kannst auch mit einer INQ-Nachricht (SNDPGMMSG) arbeiten, die ja auch auf eine Antwort wartet.
so einfach ist das mit ILE? :-)
beim traditionellen RPG bleibt der Job vor Beginn stehen und man kann in aller Ruhe die Breakpoints setzen.
Mich würde interessieren, wie einfach die Vorgehensweise
von Bender sich diesbezüglich gestalten würde.
Ich weiß nicht wie du das bei OPM-Programmen machst.
Aber Breakpoints wurden bei mir in inaktivem Job noch nie akzeptiert.
So müßte es gehen:
SBMJOB CMD(CALL PGM(Bibliothek/Programm)) Job(Name) HOLD(*YES)
STRSRVJOB JOB(Nummer/Benutzer/Name)
STRDBG PGM(Bibliothek/Programm)
F12=Wiederaufnehmen
RLSJOB JOB(Nummer/Benutzer/Name)
F10=Befehlseingabe
DSPMODSRC
F10=Step oder Unterbrechungspunkte setzen und F12=Wiederaufnehmen
F12=Abbrechen
Eingabetaste
Programm wie gewohnt warten
F3=Verlassen
ENDDBG
ENDSRVJOB
Das Problem hier ist der RLSJOB, da hier der Job ja sofort startet und mein Programm ggf. schon fertig ist, bevor ich zu den nächsten Schritten komme.
Das Problem hier ist der RLSJOB, da hier der Job ja sofort startet und mein Programm ggf. schon fertig ist, bevor ich zu den nächsten Schritten komme.
Da hab ich wohl einen gut erzogenen Job erwischt, denn er fragt sofort nach dem RLSJOB nach, wie es weitergehen soll und wartet dann brav ab. ;)