View Full Version : Felder in mehreren DS verwenden
Hallo
ich habe eine Datei die u.a. 5 TextbausteinNr. enthällt.
Diese Datei ist auch als externe DS am Pgm, (z.B. für Clear Satzformat)
Meine 'Feldgruppendefinition'
D tbds ds
D abtb01
D abtb02
D abtb03
D abtb04
D abtb05
D abt dim(5) like(abtb01) overlay(tbds)läuft un auf einen Umwandlungsfehler weil ABTB01 schon definiert ist.
Hab ich was übersehen?
Wieso kann ich nicht die Dateifelder als Feldgruppe definieren?
(Ein BASE ON ...also eine Pointerlösung geht nicht, das ist hier nicht erlaubt)
der ILEMax
Diese Definition ist direkt hinter der externen DS anzugeben wobei die Positionen der redefinierten Felder zu beachten sind:
D MYTABLE E DS
D MYREDEF 100 119 <=== Positionen der Ursprungsfelder
D MYAB LIKE(ABTB01) DIM (5) OVERLAY(MYREDEF)
RPG erlaubt eben eindeutige Namen nur 1 x über alle Grenzen.
Mittels qualified kann man ja Eindeutigkeit schaffen, dann kommt man aber um den Move hin und zurück nicht herum.
Diese Felder werden vermutlich schon durch die externe Datenstruktur definiert.
Danke euch Beiden,
ja, die Definition ist durch die E DS schon da.
RPG erlaubt eben eindeutige Namen nur 1 x über alle Grenzen.Das ist (meiner Meinung nach) Mist
Man braucht doch immer wieder ein und das selbe Feld in zig zusammenhängen.
Also werd ich nochmal nach der Erlaubnis für Pointer fragen und dann das ganze mit 5 eval's lösen..
Das Leben könnte so schön sein ...
Der ILEMax
andreaspr@aon.at
21-01-13, 13:54
ja, die Definition ist durch die E DS schon da.
Das ist (meiner Meinung nach) Mist
Man braucht doch immer wieder ein und das selbe Feld in zig zusammenhängen.
Das ist schon richtig so, sonst würde ja keiner wissen ob du das Feld von der externen Definition meinst oder irgendein anderes.
Du kannst ja mit Qualified arbeiten. Dann kann es das Feld öfters geben.
(Natürlich immer nur mit einer DS mit Qualified)
lg Andreas
Auch wenn das deiner Meinung nach Mist ist, das war bei RPG schon immer so.
Wenn du dir die Auflösung deiner externen DS im Spool anschaust, kannst du doch locker eigene D-Zeilen hinter die DS stellen, die Redefinitionen vornimmt!
Schließlich generiert der Compiler die D-Zeilen der Struktur auf die man dann Bezug nehmen kann.
Warum ist das so schwer?
das war bei RPG schon immer so.
:D Das macht es nicht besser! :D
kannst du doch locker eigene D-Zeilen hinter die DS stellen, die Redefinitionen vornimmt!
Schließlich generiert der Compiler die D-Zeilen der Struktur auf die man dann Bezug nehmen kann.
Warum ist das so schwer?
Oh man, ich steh auf'm Schlauch!
Ich verstehe überhaubt nicht, was du meinst.
Doch sicher NICHT das ich mit FESTEN Positionsangaben die DateiDS überlagere?
(geht hier gar nicht, da sich alle paar Tage die Dateistrukturen 'wild' ändern, aber nur Pgmme angefasst werden, die die neuen Felder auch brauchen. Der Rest wird bei Projektaktivierung nur umgewandelt )
Det ILEMax
Aber genau das meine ich.
Wenn sich die Dateistrukturen laufend ändern und dann nicht alle Programme gewandelt werden müsst ihr ja mit Levelcheck *NO arbeiten, sonst knallts ja fürchterlich.
Damit aber bestehende Programme weiter arbeiten können, können neue Felder ja nur am Ende dazukommen.
Somit bleiben die absoluten Positionen der Felder immer gleich.
Was spricht also dagegen?
Nunja, mit Pointern ist das auch sehr einfach (ohne eval's):
d MyDsPtr S * inz(%addr(abtb01))
d MyDs ds based(MyDsPtr)
d abtb like(abtb01) dim(5)
ne ne, levelcheck *yes ist an.
und gewandelt wird 'alles' bei aktivierung in der Echtumgebung.
Nur werden leider die Felder da zwischen geschoben, wo es der Chef haben will. Und das ist NIE am Ende.
leider
also fixe Pos. Angaben geht auf keine Fall
also muß der alte Ewald ran..