[NEWSboard IBMi Forum]
Seite 1 von 2 1 2 Letzte
  1. #1
    Registriert seit
    Oct 2008
    Beiträge
    56

    Question Parameter eines Programms ermitteln

    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

  2. #2
    Registriert seit
    Sep 2005
    Beiträge
    12
    Moin,

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

    Hth

    Bernd

  3. #3
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Allerdings nur, wenn der Sourcecode eingebettet (Spool) oder eben vorhanden ist.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  4. #4
    Registriert seit
    Dec 2014
    Beiträge
    310
    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" ...

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    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.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  6. #6
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    ... 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

    Zitat Zitat von Daechsle Beitrag anzeigen
    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
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  7. #7
    Registriert seit
    Dec 2014
    Beiträge
    310
    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.

  8. #8
    Registriert seit
    Oct 2008
    Beiträge
    56

    Angry

    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.

  9. #9
    Registriert seit
    Dec 2014
    Beiträge
    310
    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 ...

  10. #10
    Registriert seit
    Oct 2008
    Beiträge
    56

    Unhappy

    Zitat Zitat von hel400 Beitrag anzeigen
    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.
    :-(

  11. #11
    Registriert seit
    Dec 2014
    Beiträge
    310
    Oje, schade ... bei meinem Test war das schön zu sehen.
    (kommt möglicherweise darauf an, auf welche Art die Felder definiert sind, direkt/like/dds ...)

    Und rein anhand der Namen dämmert auch nichts..?

  12. #12
    Registriert seit
    Oct 2008
    Beiträge
    56

    Angry

    Zitat Zitat von hel400 Beitrag anzeigen
    Und rein anhand der Namen dämmert auch nichts..?
    Bei den Namen P1PARM, P2PARM und PORTN (Letzerer geht ja noch) bricht bei mir leider eher völlige Dunkelheit als Dämmerung herein ... :-(

Similar Threads

  1. Debug eines Java Programms im Batch mit RDi
    By Etherion in forum IBM i Hauptforum
    Antworten: 5
    Letzter Beitrag: 04-03-15, 13:34
  2. Antworten: 7
    Letzter Beitrag: 13-01-15, 16:43
  3. aktuelles Statement in einem ILE-Programm eines fremden Jobs ermitteln
    By Ottersberg in forum NEWSboard Programmierung
    Antworten: 13
    Letzter Beitrag: 04-09-14, 10:31
  4. QRY und PARAMeter
    By HoScHiE in forum IBM i Hauptforum
    Antworten: 28
    Letzter Beitrag: 17-01-08, 10:35
  5. API für Informationen zu Modulen eines ILE Programms?
    By it-wolf in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 10-07-02, 13:50

Tags for this Thread

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •