[NEWSboard IBMi Forum]
Seite 2 von 2 Erste 1 2
  1. #13
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Das hängt nun davon ab, wie du dein "dcl-pi" in dem aufgerufenen Programm deklariert hast.
    Die Definitionen sind nur für den Compiler wichtig, für sonst niemanden.

    Wenn dein aufgerufenes Programm "xxx" keine identische PI-Definition zur PR-Definition hat, weißt du halt nicht was kommt.
    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

  2. #14
    Registriert seit
    Mar 2006
    Beiträge
    98
    Danke für die Antwort.
    Das unterprpgramm verarbeitet die Informationen aus der in Parameter und gibt gibt die dann als mehrfachdatenstruktur zurück an das aufgerufene Programm.
    Wie kann ich genau sehen was da für Daten zurückgegeben werden. Irgendwo da legt das Problem.

    Dcl-pi *n
    in char(4000) ;
    pakstuecke likeds(Verpackung) dimm(50) ;
    end-pi

  3. #15
    Registriert seit
    Aug 2001
    Beiträge
    2.869
    Wahrscheinlich an dieser Stelle nur ein Schreibfehler, aber dim() schreibt sich nur mit einem m.
    Aber besser alles abprüfen.

    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

  4. #16
    Registriert seit
    Mar 2006
    Beiträge
    98
    Das ist nur ein schreib Fehler von jetzt. Rdi hätte es bemängelt.
    Habe nur auf dem Handy getippt.
    Gruß
    labm

  5. #17
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Da du ja nur "By reference", also nur Adressen austauscht, müsstest du doch die Inhalte per Debugger ansehen können.

    Aber ich denke, dass es bei externen Programmen anders läuft als bei Prozeduren und die Definition als insgesamt 1 Struktur laufen müsste:

    dcl-ds Verpackung qualified template;
    vepart char(30) ;
    vepmng int(3:0) ;
    end-ds;

    dcl-ds verpackungen qualified inz;
    packstuecke likeds(Verpackung) dim(50);
    end-ds;

    dcl-pr/pi ....
    in ...
    verpackungen likeds(verpackungen);
    end-pr/pi;
    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. #18
    Registriert seit
    Mar 2006
    Beiträge
    98
    Danke
    werde ich morgen so versuchen es umzubauen.
    Werde mich morgen melden.

    Schönen Abend.

  7. #19
    Registriert seit
    Mar 2006
    Beiträge
    98
    Prima.
    Vielen Dank für die blitz Antworten.
    als 1 Struktur wie bei dem Beispiel von Ihnen funktioniert es.

    Danke

  8. #20
    Registriert seit
    Jan 2009
    Beiträge
    67
    Zitat Zitat von camouflage Beitrag anzeigen
    Hallo Baldur,

    klar, blöd ist nur, dass der dcl-pi praktisch nochmals eine Deklaration bewirkt. Heisst, ich kann mich nicht direkt auf die dcl-ds referenzieren. Noch mehr Spass macht's, wenn die Struktur noch extern referenziert ist. :-)

    Aber passt schon...
    Ich weiss, ich bin schon etwas spät für eine Antwort, aber ich wollte dann doch noch meinen Senf dazugeben:

    Blöd ist das überhaupt nicht, dass die Parameter einer Prozedur eine neue Deklaration der Variable/DS ergeben. Das ist allerdings auch nur der Fall, wenn man die option VALUE an den Parameter anhängt. Denn Parameter werden in erster Linie (wenn man nix anderes macht) per Referenz übergeben und das heisst, dass Änderungen an der DS sich auf die übergebene DS des Aufrufers beziehen.

    Mein Senf,

    Mihael

  9. #21
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    VALUE geht nicht bei externen Aufrufen, da geht dann nur CONST, da die Aufrufart mit Value generell eine andere 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

  10. #22
    Registriert seit
    Aug 2001
    Beiträge
    2.869
    Zitat Zitat von Fuerchau Beitrag anzeigen
    VALUE geht nicht bei externen Aufrufen, da geht dann nur CONST, da die Aufrufart mit Value generell eine andere ist.
    VALUE geht sehr wohl bei externen Prozedur/Funktions-Aufrufen!
    Es geht allerdings NICHT bei Programm-Aufrufen!

    Was allerdings bei großen Parametern (Datenstruktur oder nicht) zu berücksichtigen ist, ist, dass bei VALUE immer eine Kopie des Original-Feldes/Datenstruktur übergeben wird, wärend bei CONST nur ein Pointer übergeben wird. Ein Duplikat des Original-Feldes wird nur erzeugt, wenn die Definition unterschiedliche ist. Bei großen Strukturen, kann dieser Unterschied sich bei der Performance bemerkbar machen.

    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

  11. #23
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Bei CONST wird ebenso eine Kopie erzeugt, da sonst das Aufgerufene externe Programm, dass ja von CONST nichts weiß (wie bei CLP), sonst Änderungen vornehmen könnte.
    Desweiteren wird durch die Kopie wieder sichergestellt, das die Länge der Übergabe wieder passt, wie schon gesagt. CONST heißt ja gerade, dass der Gerufene nichts ändern darf und das geht nur per Kopie.

    Der wesentliche Unterschied zwischen Value und Const/ByRef ist die Überabe-Art:
    Bei externen CALL's geht es immer per Reference, bei externen/internen CALPRC's geht Value tatsächlich in den Stack (automatic Storage), während ByRef im static Storage liegt.

    Was die Begriffe angeht so sind gebundenen externe Prozeduren dann wie interne Aufrufe zu sehen.

    Und was die Performance angeht, so sind 1000 Calls mit Const sicherlich schneller als eine I-O-Anweisung. Das gehört dann so in die Richtung Microoptimierung (von 1 Stunde Laufzeit 5 Sekunden gespart, die aber noch nicht mal gesichert sein können).
    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

  12. #24
    Registriert seit
    Mar 2002
    Beiträge
    5.286
    Zitat Zitat von Fuerchau Beitrag anzeigen
    Bei CONST wird ebenso eine Kopie erzeugt, da sonst das Aufgerufene externe Programm, dass ja von CONST nichts weiß (wie bei CLP), sonst Änderungen vornehmen könnte.
    Desweiteren wird durch die Kopie wieder sichergestellt, das die Länge der Übergabe wieder passt, wie schon gesagt. CONST heißt ja gerade, dass der Gerufene nichts ändern darf und das geht nur per Kopie.

    Der wesentliche Unterschied zwischen Value und Const/ByRef ist die Überabe-Art:
    Bei externen CALL's geht es immer per Reference, bei externen/internen CALPRC's geht Value tatsächlich in den Stack (automatic Storage), während ByRef im static Storage liegt.

    Was die Begriffe angeht so sind gebundenen externe Prozeduren dann wie interne Aufrufe zu sehen.

    Und was die Performance angeht, so sind 1000 Calls mit Const sicherlich schneller als eine I-O-Anweisung. Das gehört dann so in die Richtung Microoptimierung (von 1 Stunde Laufzeit 5 Sekunden gespart, die aber noch nicht mal gesichert sein können).
    ... so schön ist die RPG Welt nun mal nicht wirklich. CONST übergibt auch nur per reference und ist damit nur "hopefully const" und kann durchaus unterlaufen werden.

    Was die immer wieder beschworenen Performance Argumente angeht, die für Huddelprogrammierung als Argument ins Feld geführt werden, da lache ich mich schon seit Jahren schlapp, wenn was zu langsam ist, dann liegt das an fehlenden Indexen, krudem Programm Design und verquerer Logik.

    D*B
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

Similar Threads

  1. Schönes Outfit......
    By BeRe in forum Intern - Hilfe - Feedback - Tests-Forum
    Antworten: 39
    Letzter Beitrag: 27-11-13, 16:49
  2. %dec in free-rpg ??
    By Gimli in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 11-03-03, 11:16
  3. Free RPG??
    By DEVJO in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 05-03-03, 08:18
  4. Free - RPG
    By Gimli in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 04-03-03, 10:47
  5. Free-RPG
    By Gimli in forum IBM i Hauptforum
    Antworten: 6
    Letzter Beitrag: 03-03-03, 11:23

Berechtigungen

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