View Full Version : Schönes, neues free RPG: DCL-PI Frage
camouflage
12-03-15, 09:22
Hallo Baldur, hallo Dieter
Zugriff qualified, das ist der Unterschied zur PLIST. Daher mach ich meinen Move, sonst muss ich das ganze Programm umstellen. Hab eh schon genug Zeit verplempert, nun ist gut.
Danke für die Zeit und Postings.
Hallo, ist es möglich eine Mehrfachdatenstruktur als Parameter zu übergeben??
dcl-pr xxx extpgm('xxx ') ;
in char(4000) const;
pakstuecke likeDs(verpackung) dim(50) ;
end-pr;
dcl-ds verpackung dim(50) qualified ;
vepart char(30) inz ;
vepmng int(3:0) inz ;
end-ds;
in = '4711';
callp xxx(in:verpackung) ;
hier müsste ich doch die Informationen in Verpackung (als mehrfachdatenstruktur) aus dem unterprogramm als Parameter bekommen. es kommt aber immer nichts :(
Gruß
LABM
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.
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
Wahrscheinlich an dieser Stelle nur ein Schreibfehler, aber dim() schreibt sich nur mit einem m.
Aber besser alles abprüfen.
Birgitta
Das ist nur ein schreib Fehler von jetzt. Rdi hätte es bemängelt.
Habe nur auf dem Handy getippt.
Gruß
labm
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;
Danke
werde ich morgen so versuchen es umzubauen.
Werde mich morgen melden.
Schönen Abend.
Prima.
Vielen Dank für die blitz Antworten.
als 1 Struktur wie bei dem Beispiel von Ihnen funktioniert es.
Danke
;)
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