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

    Alternative zu *ENTRY PLIST

    Hallo zusammen,

    ich arbeite erst seit kurzem Mit richtigen ILE Programmen (vorher haben wir zwar ILE Programme gehabt, jedoch nur mit RPGIII befehlen).

    Also:

    Ich habe ein Programm welches ein Subfile anzeigt.
    Diese Informationen sollen einigen anderen Programmen zugänglich gemacht werden, sprich: Die sollen dieses Programm aufrufen.
    Das Subfileprogramm ist ein RPGLE.



    Wie übergebe ich die Paramter mit RPG/III Programmen?

    Eigentlich will ich keine *ENTRY PLIST mehr haben sondern lieber die PI Variante nutzen (Gefällt mir besser, alle Parameter lassen sich gut nachschauen).

    Solange wie das aufrufende Programm ein RPGLE Programm ist kann ich das ja entsprechend definieren, aber was mache ich mit RPG Programmen?

    Bleibt mir wirklich nur der CVTRPGSRC um dann das PI nutzen zu können, oder gibt es da einen Trick?


    Danke euch schonmal

    Rince

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    RPG kennt nur PLIST !
    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
    Oct 2003
    Beiträge
    192
    Wow, das nenn ich mal schnelle Hilfe.

    Schade irgendwie, dann muss ich weiterhin mit PLIST arbeiten..

    Rince

  4. #4
    Registriert seit
    Aug 2001
    Beiträge
    2.873

    Ersatz für *Entry PList

    Hallo Rince,

    Habe ich das richtig verstanden, Du willst in Deinen alten RPGIII Programmen die *Entry-PLIST durch Procedure Interface ersetzen.
    Wie willst Du das überhaupt machen? D-Bestimmungen gibt es in RPGIII nicht!

    Was soll das bringen? Neuprogrammierungen sollten in RPGIV gemacht werden und alte Programme sollten unverändert bleiben.

    Fazit ist:
    RPGIII ist und bleibt tot!!!
    Nur RPGIV wird weiterentwickelt.
    Du wirst also schon den Convert machen müssen.

    Wenn RPGIII-Programme aus ILE aufgerufen werden sollen,
    kannst Du für die RPGIII Programme Prototypen definieren und anschliessend über CALLP aufrufen.

    Das Schlüssel-Wort EXTPGM muss natürlich definiert werden.

    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
    Registriert seit
    Oct 2003
    Beiträge
    192
    Hy Brigitta,

    da scheinst du mich falsch verstanden zu haben.

    Ich stimme zu: RPGIII ist tot.

    Klar ist RPGIV viel toller, daher möchte ich ja ungerne in den RPG/IV Programmen wieder mit *ENTRY PLIST arbeiten, sondern die schöne Art der PI benutzen.

    Nur leider habe ich noch alte Programme die dieses Neue Programm aufrufen sollen (mit Parametern)

    Da ich die alten Programme nicht einfach umsetzen will (mit CVTRPGSRC) suche ich nach einem Weg beides zu schaffen.
    Alte RPG/III Programme behalten,
    neue RPG/IV Programme ohne PLIST schreiben (sonst muss ich ja aus anderen RPG/IV Programmen auch die PLIST nutzen *schauder*



    Ich überlege nur ob ich das vielleicht mit Hilfe eines CLLE schaffen kann, nur habe ich da noch nie eine PI definiert.

    Weiss da vielleicht jemand wie das geht?

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    In CLLE heißt das dann CALLPRC !

    Allerdings gilt das nur für gebundene Module, alles andere muss wie immer per CALL aufgerufen werden.
    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

  7. #7
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    Hallo,

    zu der Diskussion welches RPG töter ist, will ich mich mal zurückhalten, das bringt meist Ärger :-)
    Prototypen, PI, *ENTRY PLIST sind reine Compiler Anweisungen, im fertigen Programm ist das relativ schnurz. Man kann also lustig rpg4 mit PI für das Main programmieren und ohne Prototyp mit CALL PARM aufrufen, man verliert dabei lediglich die Prüfung zur Compiletime. Probleme mit der Rückwärtskompatibilität gibt es nur, wenn man für die Schnittstellen parameter Erweiterungen benutzt, wie zum Beispiel Feldtypen, die beim Altsteinzeit RPG nicht erlaubt waren.

    mfg

    Dieter Bender

  8. #8
    Registriert seit
    Oct 2003
    Beiträge
    192
    Herzlichen Dank

    Wenn ich das *NOPASS weglasse klappt es.
    und dann frage ich einfach mit QPARMS ab ob der PArameter da ist oder nicht.

    Auf CONST muss ich dann leider verzichten, aber das ist ein geringes Problem.


    Ich muss wirklich sagen, dieses Forum gefällt mir vor allem wegen der schnellen und kompetenten Antwortzeit.

    DANKE

    Rince

  9. #9
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    Hallo,

    die passing options, wie *NOPASS fallen auch unter die Inkompatibilitäten, weil neu. CONST ist immer noch verwendbar, da wird eigentlich nur im aufgerufenen programm code reingesetzt, der dafür sorgt, dass die Referenz read only ist und selbiges ist ja ILE. Im aurufenden Programm ist das eigentlich Banane, da bekommt der Programmierer nur die Sicherheit, dass zumindest bei konsistenten Prototypen, die übergebenen Parameter nicht vermüllt zurück kommen.

    mfg

    Dieter Bender

  10. #10
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Ob ein Parameter eine gültige Adresse enthält, schließlich kann man auch NULL-Adressen übergeben (z.B. optionale Parameter bei CMD's mit Rückgabefeldern e.g. RTVJOBA, und die können auch zwischndrin auftauchen), muss man explizit erfragen:

    if %addr(parmx) <> *NULL
    :
    endif

    Und da muss ich Dieter Recht geben, CONST dient nur dem Compiler.
    Wenn ich sicher sein will, dass ich meinen Übergabewert nicht geändert haben will, muss ich VALUE definieren. In diesem Fall wird dem gerufenen Programm immer eine Kopie übergeben und das kann dann tun und lassen was es will (egal ob CONST oder nicht).

    Übrigens: VALUE führt ggf. auch eine TYP-Konvertierung durch, soweit der Compiler das halt kann und ich bin nicht an gleichartige Definitionen gebunden.
    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

  11. #11
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    Hallo,

    eh' da was durchgerät einander:

    VALUE geht leider nur für gebundene Aufufe, die as400 kann auf OS Ebene nur call by Reference.

    das mit der Abfrage auf Null mit der BIF geht wie obiges nur in ILE

    CONST erzeugt bei Verwendung im aufrufenden Programm auch Code mit Zwischenvariablen und Konvertierung und ermöglicht damit Literale, geht aber auch nur in ILE im aufrufenden Programm.

    Über die Commands und deren Kontrolle über die Parameter, könnte man einen ganzen Artikel schreiben (mach' ich vielleicht mal)

    mfg

    Dieter Bender

  12. #12
    Registriert seit
    Aug 2001
    Beiträge
    2.873

    VALUE

    VALUE kann für den Aufruf zwischen Prozeduren benutzt werden, nicht für den Aufruf von Programmen.

    Bei VALUE wird der komplette String übergeben und keine Adresse.
    Im aufgerufenen Programm kann ein mit VALUE übergebener Parameter beliebig geändert werden.

    RPGIII kennt nur Parameterübergabe by Reference (Adressen).

    Die Parameter-Übergabe mit CONST erfolgt ebenfalls über Adresse. Bei abweichendem Feldtyp wird jedoch ein temporäres Feld mit der erwarteten Definition erstellt und diese Adresse an die rufende Prozedur weitergegeben.
    Deshalb kann CONST auch für den Aufruf von RPGIII-Programmen verwendet werden.

    Wird ein Prototyp mit Parametern mit CONST-Definition eingebunden, kann in der aufgerufenen Prozedur dieses Feld nicht geändert werden. (Fehler bei der Compilierung)

    Durch diese Erklärung müsste auch klar sein, dass CONST und VALUE nicht für das gleiche Parameter-Feld verwendet werden können.

    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

Similar Threads

  1. SQL Alternative Namen
    By andreas.lundschien in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 27-09-06, 10:56
  2. alternative zu Client Access ?
    By usafft in forum NEWSboard Linux
    Antworten: 6
    Letzter Beitrag: 09-12-05, 11:10
  3. Alternative zur Twinax Konsole
    By linguin in forum IBM i Hauptforum
    Antworten: 10
    Letzter Beitrag: 03-11-05, 17:20
  4. SAVSYS alternative IPL-Einheit
    By tomikra in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 10-05-04, 14:21
  5. *entry plist ersetzen in RPG/IV Free-Format
    By coolie in forum NEWSboard Programmierung
    Antworten: 6
    Letzter Beitrag: 22-04-04, 11:53

Berechtigungen

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