PDA

View Full Version : gleiche Felder innerhalb zweier Datenstukturen kopieren



Kaufmann
26-08-10, 09:22
Ich möchte gleiche Felder, mit gleichen Namen und Feldgrößen von einer Datenstruktur auf eine ander übertragen. Dies soll aber nicht einzeln sondern mit einem Rutsch geschehen, da es sich um sehr viele Felder handelt. Die Datenstruktur in die ich kopieren will hat aber mehr Felder so das ich das Ganze nicht per MOVEA machen kann.

Geht das irgendwie?

B.Hauser
26-08-10, 09:53
Wenn die Datenstruktur-Unterfelder gleich heißen und mindestens eine der beiden Datenstrukturen qualifiziert ist (anders erhält man eh' keine doppelten Unterfelder) und Du mindestens auf Release V5R4 bist, kannst Du in RPG den OPcode EVAL-CORR verwenden.

Felder mit gleichem Namen werden übertragen, alle ungleichen Felder bleiben unverändert:


/Free
Eval-Corr DS2 = DS1;
/End-Free

Birgitta

RWehrwein
14-09-10, 11:20
Gibt es eigentlich eine Möglichkeit, eine Feldgruppe direkt aus einem Satzformat heraus zu füllen ? Ich habe ein Format mit mehreren unterschiedlichen Feldern und dann 53 Felder mit Wochenumsätzen. Diese 53 Felder möchte ich in einen Array einlesen. habs mit likeds, likerec und overlay versucht, der Compiler lässt mich aber nicht, da wohl das Satzformat nicht überlagert werden darf. Muss dann wohl doch eine neue DS mit den 53 Feldern definieren und dann mit einem Array überlagern. Oder wisst Ihr eine Lösung ???
Gruß

Roger

B.Hauser
14-09-10, 12:00
Hilft wohl nur überlagerte Datenstruktur oder mit Pointer Handling zu arbeiten, wobei ich allerdings die 1. Variante vorziehen würde.


D MyDS DS
D MyFileFld1
D MyFileFld2
D MyFileFld3
....
D MyFileFld53
D MyArr Dim(53) Like(MyFileFld1)
D Overlay(MyDS)

/Free
Chain (MyKey1: MyKey2: ... MyKeyN) MyFile;
If %Found;
For Index = 1 to 53;
Dsply MyArr(Index);
EndFor;
EndIf;
/End-Free

Birgitta

Fuerchau
14-09-10, 12:08
Und wem der Schreibaufwand zu groß ist, der kann eine DS mit externer Beschreibung definieren und nur den Array-Part anhängen.
So habe ich das schon in OPMRPG gemacht.