[NEWSboard IBMi Forum]
  1. #1
    dino is offline [professional_User]
    Registriert seit
    May 2006
    Beiträge
    341

    Parameterübergabe an ei RPG-Programm

    Ich rufe per CL ein RPG-Programm mit 15 Parametern auf. Alles OK soweit.
    Rufe ich das Programm über die Befehlszeile (ohne Parameter) auf, gibts einen Stop.
    Ich möchte aber das Programm flexibel gestalten: Parametereingabe möglich oder auch nicht.

  2. #2
    Registriert seit
    Nov 2003
    Beiträge
    2.307
    Wie sieht denn der Stop aus? Gibt's 'ne Verwarnung (Meldung) oder sowas? OPM oder ILE? Du könntest die Anzahl der übergebenen Parameter abfragen (mittels SDS *PARMS) oder einen Befehl zum Aufrufen des Programms schreiben, der für alle Parameter Standardwerte mitgibt.

  3. #3
    Registriert seit
    Aug 2004
    Beiträge
    923
    Hallo,

    ohne nun die genaue Umgebung und sämtliche Anforderungen zu kennen....

    würde ich es über 2 "Zwischenprogramme" lösen denke ich. (Meinetwegen als CL)
    Eins wird mit Parameter aufgerufen, eins ohne.
    Beide rufen dann das RPG mit Parameter auf.

    Just my 2 cent

    k.

  4. #4
    Registriert seit
    Aug 2001
    Beiträge
    2.873
    1. RPG-Programm mit Prototyp und Procedure Interface. Alle Parameter werden mit Options(*NOPASS) definiert.
    Die Built-In-Funktion %PARMS bringt die Anzahl der übergebenen Parameter mit. Nicht übergebene Parameter dürfen im Programm nicht angesprochen werden (Fehler MCH3601).

    2. Bei Verwendung einer *ENTRY-PList, die Anzahl der Parameter über die Programm-Status-Datenstruktur prüfen Position 37 - 39 im Format 3S 0. Auch hier gilt nicht übergebene Parameter dürfen nicht angesprochen werden.

    Du wolltest doch das RPG Programm direkt aufrufen?

    Ansonsten würde ich vorschlagen, mach einen Befehl mit den 15 Parametern, die entweder gefüllt oder mit Default-Werten an das CL übergeben werden. Anstatt des CL-Programms, rufst Du den Befehl auf.

    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 4. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  5. #5
    dino is offline [professional_User]
    Registriert seit
    May 2006
    Beiträge
    341
    Danke für die Tipps.
    Habe einfach ein 2. CL geschrieben: CL 1 übergibt gefüllte Parameterwerte, CL 2 übergibt Dummy-Parameterwerte.
    Das ist die einfacheste und sauberste Variante

  6. #6
    cbe is offline [professional_User]
    Registriert seit
    May 2005
    Beiträge
    392
    Zitat Zitat von dino Beitrag anzeigen
    Habe einfach ein 2. CL geschrieben: CL 1 übergibt gefüllte Parameterwerte, CL 2 übergibt Dummy-Parameterwerte.
    ... ist auch geschickt bezüglich Erweiterbarkeit. Stell Dir vor, Du rufst dieses Programm von 100 Stellen aus auf, und willst nun 1 Parameter zufügen, der nur in einem Spezialfall nötig ist.
    Dann kannst Du den Parameter im RPG zufügen und brauchst nur noch die paar aufrufenden CLs ändern, und natürlich ein neues CL für diesen Spezialfall schreiben. Die 100 sonstigen Stellen bleiben unverändert.


    Zitat Zitat von Pikachu Beitrag anzeigen
    ... oder einen Befehl zum Aufrufen des Programms schreiben, der für alle Parameter Standardwerte mitgibt.
    CMDs sind in CL sehr flexibel, aber ich finde sie aus RPG recht lästig aufzurufen.

    Aber vielleicht kann man auch beide Techniken kombinieren?
    Die 100 Anwendungsprogramme rufen eine Hand voll CL-Programme auf,
    und die verwenden 1 CMD, welches das RPG aufruft.


    Auf jeden Fall war ich schon so manches Mal froh, eine CL-Zwischenebene zu haben, hat mir einiges an Ändern+Testen erspart.

    Gruß, Christian

  7. #7
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    Zitat Zitat von cbe Beitrag anzeigen
    ... ist auch geschickt bezüglich Erweiterbarkeit. Stell Dir vor, Du rufst dieses Programm von 100 Stellen aus auf, und willst nun 1 Parameter zufügen, der nur in einem Spezialfall nötig ist.
    Dann kannst Du den Parameter im RPG zufügen und brauchst nur noch die paar aufrufenden CLs ändern, und natürlich ein neues CL für diesen Spezialfall schreiben. Die 100 sonstigen Stellen bleiben unverändert.
    Deshalb wäre die schönste und nachhaltigste Lösung die, die Birgitta schon beschrieben hat.
    Du definierst EIN mal den Prototyp und die Sache hat sich. Du willst irgendwann einen oder mehrere Parameter zusätzlich, dann erweiterst du den Prototyp einfach um die Felder (mit *NOPASS) und das wars. Und du brauchst keine neue CLs.

    Die Version mit den CLs, kann man zwar auch machen, ist aber wie man so schön sagt quick-and-dirty.

Similar Threads

  1. Rückgabewert vom RPG Programm
    By mk in forum NEWSboard Java
    Antworten: 8
    Letzter Beitrag: 21-04-11, 21:51
  2. MI Source aus einem RPG Programm erstellen
    By ExAzubi in forum IBM i Hauptforum
    Antworten: 5
    Letzter Beitrag: 13-07-06, 10:51
  3. Java Programm aus ILE RPG aufrufen
    By PGMR in forum NEWSboard Java
    Antworten: 10
    Letzter Beitrag: 10-02-05, 10:33
  4. Java Programm aus ILE RPG aufrufen
    By PGMR in forum NEWSboard Programmierung
    Antworten: 0
    Letzter Beitrag: 02-02-05, 13:10

Berechtigungen

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