PDA

View Full Version : Sortieren einer Array



steven_r
10-01-07, 09:39
Hallo zusammen,

wie kann man eine DS Array sortieren zb.: nach dem ersten feld?

danke
steven_r

Fuerchau
10-01-07, 11:03
In RPG kann eine DS-Array (Vorkommen, Occurs) nicht sortiert werden, das geht nur mit Tabellen (E-Eintrag).

In ILERPG kann die DS mittels %sort sortiert werden (DIM nicht Occurs).

steven_r
10-01-07, 11:14
danke für die rasche info

mfg
steven_r

B.Hauser
10-01-07, 13:03
Hallo,

Array-Datenstrukturen können ebenso wenig wie Mehrfach-Datenstrukturen sortiert werden.

Eine Sortierung, kann nur über den OPCode SORTA erfolgen (eine Built-in-Funktion %Sort() gibt es nicht!).

Möglich ist jedoch Feldgruppen, die als Datenstruktur-Unterfelder definiert sind und die durch andere Felder überlagert sind zu sortierten. Dadurch, das Felder eine Feldgruppe überlagern, sind sie ebenfalls als Feldgruppen definert. Jede einzelne dieser Feldgruppen kann sortiert werden. (Die Inhalte der überigen Feldgruppen werden richtig mit sortiert)

Beispiel:

D DS
D Adresse Dim(5)
D Name 15A Overlay(Adresse)
D Strasse 15A Overlay(Adresse: *Next)
D Land 3A Overlay(Adresse: *Next)
D PLZ 5A Overlay(Adresse: *Next)
D Ort 10A Overlay(Adresse: *Next)

/Free
SortA Adresse;
SortA Ort;
SortA PLZ;
/End-Free

Birgitta

steven_r
11-01-07, 07:34
Danke Birgitta du hast mir sehr geholfen.

lg
steven_r

Klabautermann
22-09-10, 11:13
Hi,

ich weiß, dass das Thema schon etwas älter ist. Allerdings habe ich hierzu eine Frage.

Besteht die möglichkeit hier nach 2 Feldern zu sortieren? Oder macht er das Automatisch?

Ich möchte jetzt also die Datenstruktur Adresse nach Land und anschließend nach Ort sortieren.

Soll also so aussehen

Land(1) = Deutschland
Land(2) = Deutschland
Land(3) = Schweiz

Ort(1) = Berlin
Ort(2) = Düsseldorf
Ort(3) = Basel

B.Hauser
22-09-10, 11:35
Man kann ein überlagertes Sub-Field definieren, das z.B. von Land und Ort überlagert wird und danach sortieren:


D DS
D Adresse Dim(5)
D Name 15A Overlay(Adresse)
D Strasse 15A Overlay(Adresse: *Next)
D LandOrt Overlay(Adresse: *Next)
D Land 3A Overlay(LandOrt)
D Ort 10A Overlay(LandOrt: *Next)
D PLZ 5A Overlay(Adresse: *Next)


/Free
SortA Adresse;
SortA LandOrt;
SortA Ort;
SortA PLZ;
/End-Free


Übrigens ab 7.1 können auch Array-Datenstrukturen nach Sub-Feldern sortiert werden.

Birgitta