[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Jan 2006
    Beiträge
    25

    Parameteruebergabe von RPG an RPG-Pgm

    Hallo ans Forum,

    In einem RPG-Pgm rufe ich ein anderes RPG-Pgm (mit Parametern) auf.

    Das aufzurufende PGM wurde mittels Prototyp u. EXTPGM definiert.

    Dem aufzufenden Pgm werden zwischen 2 und 4 Parameter (Option(*NOPASS)) mitgegeben. Neben einen 10A Parameter handelt es bei den anderen um 100A-definierte Parameter.

    Nun endlich zu meinem Problem:
    Der (debug)Aufruf des
    CALL PGM('PARM1' 'PARM2')
    zeigte im Inhalt des/der 100A-definierten Parameter neben dem "normalen" Inhalt 'PARM2' auch irgendwelche anderen Daten!

    Ich kann im aufrufenden PGM aber die Parametervariablen der PLIST nicht initialisieren um dies zu verhindern.

    Hat jemand einen Rat für mich?

    Danke schon mal vorab für die Mühen

    GraueEminenz

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Da beim Call nur Adressen übergeben werden hängt die Verarbeitung bzw. Anzeige der Daten von der jeweiligen Definition ab.
    Erwarte ich ein 10-Stelliges Feld, übergebe aber weniger, so habe ich automatisch Zugriff auf die "dahinterliegenden" Informationen. Übergebe ich längere Daten, habe ich keinen Zugriff darauf.

    Die Anzahl der übergebenen Parameter kann ich irgendwo in der SDS erfragen. Dies funktioniert aber nur bei der Einstiegsprozedur.
    Alle anderen Prozeduren müssen die Adresse des Parameters prüfen:
    if %addr(parm) = *null // Parameter nicht übergeben
    Ansonsten kommt es zu MCH-Fehlern beim Zugriff.

    Nun zu deinem CALL:
    Das CALL-CMD hat eine eifache Regel bei der Übergabe von Werten:
    Ist die Zeichenkette kürzer als 32, werden 32 Stellen mit Leerzeichen gefüllt übergeben
    Ist die Zeichenkette länger als 32, werden genauso viele Zeichen übergeben
    Zahlen werden immer im gepackten Format dec(15, 5) übergeben.

    Da du nun 100 Zeichen erwartest, aber nur 32 übergibst, hast du halt 68 Zeichen Schrott.
    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

  3. #3
    Registriert seit
    Jan 2006
    Beiträge
    25
    Danke für die schnelle Antwort.

    Dann werde ich dafür sorgen, immer 100 Zeichen zu übergeben.

    GraueEminenz

  4. #4
    Registriert seit
    Apr 2002
    Beiträge
    792
    Wenn du in der Prozedur die Felder als VALUE kennzeichnest, dann sollte es eigentlich doch auf funktionieren. Es werden dann die keine Referenzen(Adressen) übergeben, sondern die eigentlichen Werte.

    Gruß

    Sascha

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Das CALL-CMD kennt keine Parameter "by value", was hier zu Testzwecken verwendet wird. Ausserdem ist aus Performance-Gründen ein Call by Reference immer schneller als ein Call by Value.
    Die Ausnahmen hängen jedoch von der Programmiersprache ab. In RPGLE ist Value jedoch ein Konstrukt. Intern wird immer eine Kopie erstellt und dann doch nur die Adresse der Kopie übergeben.
    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

Similar Threads

  1. Rückgabewert vom RPG Programm
    By mk in forum NEWSboard Java
    Antworten: 8
    Letzter Beitrag: 21-04-11, 21:51
  2. RPG: Client Infos lesen?
    By robertki in forum NEWSboard Programmierung
    Antworten: 25
    Letzter Beitrag: 19-01-07, 08:42
  3. Bibliotheksliste in RPG IV abfragen
    By timeless in forum IBM i Hauptforum
    Antworten: 5
    Letzter Beitrag: 11-01-07, 12:04
  4. Problem mit Java-Methoden Aufruf aus ILE RPG?
    By Stoeberl in forum NEWSboard Programmierung
    Antworten: 8
    Letzter Beitrag: 10-01-07, 10:58
  5. RPG goes Web
    By jth in forum NEWSboard Programmierung
    Antworten: 1
    Letzter Beitrag: 21-12-06, 11:13

Berechtigungen

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