PDA

View Full Version : Parameter eines Programms ermitteln



Seiten : [1] 2

Daechsle
16-06-15, 16:44
Hallo Welt

Gibt es eine Möglichkeit zu ermitteln, welche Parameter (Anzahl, Art und Länge) an ein RPG-Programm übergeben werden müssen, ohne den Sourcecode dieses Programms zu haben?

Mit DSPPGM und DSPPGMREF hab ich es schon versucht, sehe dort aber leider keine Möglichkeit.
OS-Version ist V5R3M0 ... ja, ich weiß, uralt, aber ein Upgrade ist nicht möglich, weil die
Maschine Ende dieses Jahres weggeschmissen wird. :-(

Schöne Grüße aus Österreich

bwachs
16-06-15, 19:22
Moin,

wenn Du das PGM debuggen kannst, könntest Du die Parameter erkennen.

Hth

Bernd

Fuerchau
17-06-15, 07:18
Allerdings nur, wenn der Sourcecode eingebettet (Spool) oder eben vorhanden ist.

hel400
17-06-15, 07:30
Mit DSPPGM kann man zumindest die ANZAHL sehen.

Eine Möglichkeit wäre auch noch, dass man das Pgm (ohne Parameter!) aufruft, dieses sollte dann ja auf einen Fehler laufen und dann mit "D" einen Dump erstellen.
In diesem sind dann ja im Klartext(!) alle Feldnamen und Feldlängen zu sehen.
Mit etwas "Glück" kann man dann die Entry-Parameter anhand der Namen "erraten" ...

Fuerchau
17-06-15, 07:42
Bei HLL-OPM-Programmen ist die Anzahl immer 0 - N, bei ILE-Programmen immer 0 - 255!
Übergibt man zu viele Parameter merkt das Programm nichts.
Meist stürzt das Programm beim Aufruf ohne Parameter ab.
Ich kenne aber auch Programme, die die Anzahl abfragen und beim Fehlen mit Defaults arbeiten.

BenderD
17-06-15, 08:47
... in einer ordentlichen Dokumentation steht sowas drin, hat man keine Dokumentation, ist es besser das Programm schmiert beim Aufruf ab anstatt Unfug zu machen, weil Parameter technisch richtig aber inhaltlich falsch bedient wurden.

D*B


Hallo Welt

Gibt es eine Möglichkeit zu ermitteln, welche Parameter (Anzahl, Art und Länge) an ein RPG-Programm übergeben werden müssen, ohne den Sourcecode dieses Programms zu haben?

Mit DSPPGM und DSPPGMREF hab ich es schon versucht, sehe dort aber leider keine Möglichkeit.
OS-Version ist V5R3M0 ... ja, ich weiß, uralt, aber ein Upgrade ist nicht möglich, weil die
Maschine Ende dieses Jahres weggeschmissen wird. :-(

Schöne Grüße aus Österreich

hel400
17-06-15, 10:06
Oh Mann ...
Das mit dem Aufruf ohne Parameter war ja nur als Beispiel gedacht.
Mit den Erklärungen, warum's nicht geht, ist dem Fragesteller ja nicht geholfen ... :-(

Also: Ist es ein RPGIII Pgm, dann kann man mit DSPPGM die Anzahl sehen (ist immer die zweite Zahl nach der "0").

Mehr Infos gibt es aber (wie gesagt) aus dem ProgrammDUMP.
Es ist nur wichtig, dass Du das Pgm so aufrufst, dass es gleich abstürzt (der Aufruf ohne Parameter war ja nur eiN Beispiel).
Es geht zB auch so, dass Du die LIBL so herrichtest, dass eine Datei nicht geöffnet werden kann. Hauptsache dass das Ding abstürzt und Du die Nachricht dann mit "D" für Dump beantwortest.

Ich habe es gerade ausprobiert. Ich meine, dass man die Parameterfelder eindeutig erkennen kann:
Ist es RPGIV, dann suche im Dump nach der Zeichenfolge "_PSTR_", damit sind anscheinend die Entry-Parameter gekennzeichnet.
Ist es RPGIII, dann sind die Feldnamen der Entryparms am Ende mit ".P " erweitert.

Jedenfalls sollten die Felder so alle zu ermitteln sein.
Lediglich die Reihenfolge ist dann noch ein Problem, weil im Dump sind die Felder in alphabetischer Reihenfolge ...

Aber evtl. kannst Du mit obigem Ablauf schon alles Notwendige herausfinden.

Daechsle
17-06-15, 13:09
Vielen Dank für eure zahl- und hilfreichen Antworten.

Debuggen kann ich das Programm mangels Sourcecode leider nicht.

DSPPGM sagt:
Anzahl der Parameter . . . . . . . . . . . . . . : 0 3

Wenn ich das Programm ohne Parameter aufrufe, stürzt es ab und im Dump steht:
Anzahl Parameter . . . . . . . . . . . : 000
Im Dump gibt es 3 Feldnamen mit ".P" am Ende, also handelt es sich offenbar um ein RPG III Programm mit 3 Parametern.
Leider gibt es bei diesen 3 Feldnamen keine Längenangabe und die Reihenfolge ist eben nicht ersichtlich.

Eine Dokumentation haben meine Vorgänger, die dieses Programm vor vielen Jahren geschrieben haben (letzte Änderung des PGM-Objekts am 11.9.2006), leider nicht überliefert.

Schlussendlich bringt mich das alles leider nicht zum gewünschten Ziel, nämlich zu wissen, mit welchen Parametern (Reihenfolge, Typ, Länge) ich das Programm aufrufen muss.

Trotzdem bedanke ich mich nochmals für euere Antworten.

hel400
17-06-15, 14:08
Hallo nochmals,
bei einer Frage ("Länge") kann ich noch helfen.

Du musst von den 3 Feldnamen nun das ".P" weglassen und im Dump nochmals suchen, dann siehst Du die 3 Felder mit den Längenangaben (das ".P" steht ja nur im Dump, gehört aber eigentlich nicht zum Feldnamen!).

Lediglich die Reihenfolge fehlt noch.
Das könntest Du evtl. in einer Testumgebung mit dem bewährten try-and-error Prinzip herausfinden ...

Daechsle
17-06-15, 14:45
Hallo nochmals,
bei einer Frage ("Länge") kann ich noch helfen.

Du musst von den 3 Feldnamen nun das ".P" weglassen und im Dump nochmals suchen, dann siehst Du die 3 Felder mit den Längenangaben (das ".P" steht ja nur im Dump, gehört aber eigentlich nicht zum Feldnamen!).


Bei allen 3 Feldern mit und ohne ".P" steht bei mir leider "NOT ADDRESSABLE" anstelle der Länge.
:-(