[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Jul 2007
    Beiträge
    25

    Call ILERPG mit Parameterübergabe aus OPM-Programm heraus

    Liebe Community,

    ich möchte aus einem OPM RPG-Programm heraus ein neues ILERPG-Programm aufrufen und Parameter übergeben. Komischerweise werden die Werte im aufzurufenden Programm nicht empfangen. Wenn ich im Debugger schaue, dann haben die Parameter-Werte nur ein "?". Wenn ich das Programm aber von der Befehlszeile aufrufe, dann funktioniert es.

    Das aufzurufende Programm ist komplett in *FREE geschrieben.
    Hier einige Statements des Programmes:
    Code:
    Ctl-Opt
           Actgrp(*new)
           BndDir('*LIBL/MYBNDD')
           DftActGrp(*no)
           Main(Main);
       .
       .
       .
         Dcl-PR Main Extpgm;
           Parameter1 zoned(1);
           Parameter2 zoned(5);
           Parameter3 zoned(3);
         End-PR;
    
    Dcl-Proc Main;
    
         // Programm-Interface
         Dcl-PI Main;
           Parameter1 zoned(1);
           Parameter2 zoned(5);
           Parameter3 zoned(3);
         End-PI;
       .
       .
       .
    End-Proc;

    Und das OPM-Programm, welches das andere PGM aufruft, sieht so aus:
    Code:
         .
         .
         .
    
         d myNewPgm        pr                  extpgm('MYNEWPGM')
         d  parameter1                    1  0
         d  parameter2                    5  0
         d  parameter3                    3  0
    
         .
         .
         .
    
         parameter1 = 1;
         parameter2 = 1304;
         parameter3 = 0;
    
         myNewPgm(parameter1:parameter2:parameter3);
    
         .
         .
         .

    Beim Aufruf des neuen Programms über die Befehlszeile, muss ich auch unbedingt diese Schreibweise einhalten, damit es funktioniert:
    Code:
         call mynewpgm parm('1' '01304' '000')
    Ich bin Neuling auf dem ILE-Gebiet. Das ist mein erstes ILE-Programm an das ich Parameter übergeben möchte. Habe zwar schon Prozeduren mit Parameterübergabe geschrieben - das funktioniert auch wunderbar.

    Was mache ich falsch?

    Schöne Grüße
    Artur Janzen

  2. #2
    Registriert seit
    May 2007
    Beiträge
    262
    Hallo und schönen nachmittag
    Versuche mal anstatt ZONED die Felder PACKED zu definieren.
    Greets
    Christian
    Anwendungsentwickler und ein bissal Systemoperator
    https://github.com/prsbrc
    LinkedIn

  3. #3
    Registriert seit
    Feb 2001
    Beiträge
    18.984
    Ob zoned oder gepackt macht dafür erstmal keinen Unterscheid, aber wichtig zu wissen:

    Der Command CALL interpretiert Zahlenargumente grundsätzlich als 15p 5 also packed(15:5).
    Zoned sind Zeichenfelder, die auf Ziffern beschränkt sind, daher der CMD Call mit Hochkomma.

    Für Programmaufrufe kann man i.Ü. auch eigene CMD's schreiben.
    Dabei werden dann die Übergabewerte korrekt an das Programm übergeben, da die Definition die Konvertierung vorschreibt.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: http://www.fuerchau.de/software/upload400.htm
    BI? Da war doch noch was: http://www.ftsolutions.de

  4. #4
    Registriert seit
    Dec 2014
    Beiträge
    285
    Meiner Meinung nach ist der Fehler klar ersichtlich.
    Im aufrufenden Pgm sind die Parameter alle gepackt, im aufgerufenen aber explizit gezont - daher kommt dann Müll an.

  5. #5
    Registriert seit
    Jul 2007
    Beiträge
    25
    Ja, ihr hattet Recht. Das war's. Ich habe im neuen Programm die Felder als "packed" definiert und jetzt klappt es.

    Wusste gar nicht, dass die Felder im alten Programm als packed definiert werden, wenn ich nichts angebe. Habe jetzt aber ein P angegeben, damit man das auf den ersten Blick ersieht.

    Danke für eure Hilfe.

    Gruß
    Artur Janzen

  6. #6
    Registriert seit
    Jul 2007
    Beiträge
    25
    Eine Frage habe ich aber noch. Wie soll ich das neue Programm jetzt über die Befehlszeile starten? Ich würde es gerne auch so testen können und einfach mit ein paar Parametern füttern. Aber wie ich die Parameter auch eingebe, ob mit Hochkomma oder ohne, ich bekomme immer eine Fehlermeldung.

  7. #7
    Registriert seit
    Aug 2001
    Beiträge
    2.696
    Gepackte parameter müssen beim Aufruf über Befehlszeile in hex angegeben werden. x'12345F' (entspricht der Übergabe eines gepackten numerischen Wertes mit 5 Ziffern (Definition Packed(3))

    Ansonsten hilft nur der Aufruf aus einem anderen Programm.
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion 2021
    Virtuelle SQL und RPG Schulungen

  8. #8
    Registriert seit
    Jul 2007
    Beiträge
    25
    Hm, das ist mir dann aber doch zu umständlich. Wahrscheinlich werde ich dann lieber die Parameterfelder wieder auf ZONED umstellen und dann aber auch im Aufruf-Programm ZONED-Felder daraus machen.

    Danke trotzdem für den Hinweis mit den hex-Werten.

    Gruß
    Artur Janzen

  9. #9
    Registriert seit
    Feb 2001
    Beiträge
    18.984
    Packed(3) sind aber nur 3 Ziffern. Man gibt die Zffern und nicht die Bytes an;-).
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: http://www.fuerchau.de/software/upload400.htm
    BI? Da war doch noch was: http://www.ftsolutions.de

Ähnliche Themen

  1. Fehler ILERPG Runtime mit CONST-Parametern
    Von Fuerchau im Forum NEWSboard Programmierung
    Antworten: 12
    Letzter Beitrag: 17-03-20, 13:56
  2. ILERPG Debugger Screen Size ändern
    Von harkne im Forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 20-03-19, 12:35
  3. ILERPG und embedded SQL
    Von TheDevil im Forum NEWSboard Programmierung
    Antworten: 22
    Letzter Beitrag: 16-02-16, 09:11
  4. RPG Parameterübergabe von RPG an übergeordnetes CL
    Von TheDevil im Forum NEWSboard Programmierung
    Antworten: 12
    Letzter Beitrag: 12-02-15, 12:40
  5. Call Programm vs. Service-PGM
    Von malzusrex im Forum NEWSboard Programmierung
    Antworten: 17
    Letzter Beitrag: 15-11-13, 12:21

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •