Anmelden

View Full Version : Parameter eines Programms ermitteln?



Seiten : 1 [2]

RobertMack
06-02-13, 11:53
...untersuche mal einen Dump:

1) Programm ohne Parameter aufrufen = RNQ0222
2) Antwort D = Spool QPPGMDMP
3) Suche nach _QRNL_PRMCPY_ im Spool = _QRNL_PRMCPY_FELD1 POINTER SPP:*NULL
4) Suche nach FELD1 = FELD1 CHAR(10) NOT ADDRESSABLE

Fuerchau
06-02-13, 11:56
Das schöne daran ist, dass es diese Information im Joblog nicht gibt.
Beim CALL in einem CLP steht im Joblog lapidar "Call enthält Parameter", wenn LOGCLPGM eingeschaltet ist.

Bei allen anderen Calls wird absolut nichts protokolliert, schießlich weiß ja jedes Programm was es tut und erwartet.

Nur der arme Programmierer fängt da ohne Quellen das Raten an und das kann sehr schnell sehr teuer werden.

Obv
07-02-13, 12:39
...untersuche mal einen Dump:

1) Programm ohne Parameter aufrufen = RNQ0222
2) Antwort D = Spool QPPGMDMP
3) Suche nach _QRNL_PRMCPY_ im Spool = _QRNL_PRMCPY_FELD1 POINTER SPP:*NULL
4) Suche nach FELD1 = FELD1 CHAR(10) NOT ADDRESSABLE

Suche nach NOT ADDRESSABLE im Dump sollte auch reichen

Fuerchau
07-02-13, 13:10
Solange Debuginformationen vorhanden sind...

Obv
07-02-13, 15:06
:confused: welche debuginformationen brauche ich denn für einen dump?

Fuerchau
07-02-13, 17:48
Solange ein Programm nicht mit CHGPGM ... RMVOBS(...) bearbeitet wurde, sind die Infos da.

Aber was hilft es, wenn der Parameter als CHAR(845) ausgewiesen wird und sich dahinter halt eine DS verbirgt?

zipperle
14-02-13, 18:59
Hallo an Alle,
es gibt die API "Retrieve Program Interface Information (QBNRPII). Diese liefert die Parameterschnittstelle. Allerdings kommen die Informationen als PCML Daten daher. IBM RAD verwendet diese API um aus einem IBM i Programm einen Webservice zu machen. Du findest sie im IBM Information Center.
Vielleicht hilft dir diese API.
Grüsse Siegfried