-
SORTA läuft nicht wie gewünscht
Hallo allerseits,
ich stehe momentan im wahrsten Sinne des Wortes auf dem Schlauch.
ich will ein Array sortieren
Code:
d ds03 49a DIM(10) DESCEND
d DS03ARTN 8s 0 Overlay(ds03:*next)
d DS03LINR 8s 0 Overlay(ds03:*next)
d DS03LANR 25a Overlay(ds03:*next)
d DS03AEDT 8s 0 Overlay(ds03:*next)
und zwar mit folgendem Befehl:
Code:
SORTA %SUBARR(DS03 : 1 : numDS03) %FIELDS(ds03linr : ds03aedt);
Das Feld numDS03 ist wie folgt definiert:
Die Sortierung soll nach DS03LINR und absteigend nach DS03AEDT erfolgen.
Aber, er zeigt mir schon bei der Codeingabe den folgenden Fehler:
Ende des Ausdrucks erwartet.
Was mache ich blos falsch????
Danke für eure Rückmeldungen.
-
Seit wann soll SORTA eine %Fields() verstehen?
%Fields() ist eine Feldnamenfunktion bei einem Update.
Ansonsten musst du die Felder in der benötigten Reihenfolge in die DS stellen um dann die DS zu sortieren. Wobei da dann generell nach Alpha sortiert wird.
Alternativ kannst du ein neues Feld mit Overlay definieren, dass die beiden Felder in der richtigen Folge zusammen fasst und dann darüber sortieren.
Dies impliziert einen Sort der DS durchdas Overlay-Konstrukt.
Und einen gemischten Sort gibts soweit nicht, da es ja SORTA(A/D) heißt.
Dafür könntest du ein Zonedfeld zusätzlich nehmen und per "999999 - %days(Datum)" ein absteigendes Datum berechnen.
-
Das habe ich so in der Doku zu 7.3 gelesen:
Code:
D emp DS QUALIFIED DIM(25)
D name 25A VARYING
D salary 9P 2
D numEmp S 10I 0
// Initialize the data structure
emp(1).name = 'Maria';
emp(1).salary = 1300;
emp(2).name = 'Pablo';
emp(2).salary = 1200;
emp(3).name = 'Bill';
emp(3).salary = 1100;
emp(4).name = 'Alex';
emp(4).salary = 1200;
numEmp = 4;
// Sort the EMP array using the SALARY and NAME subfields
SORTA %SUBARR(emp : 1 : numEmp) %FIELDS(salary : name);
// emp(1).name = 'Bill'
// emp(1).salary = 1100 <-----
// emp(2).name = 'Alex' <-----
// emp(2).salary = 1200 <-----
// emp(3).name = 'Pablo' <-----
// emp(3).salary = 1200 <-----
// emp(4).name = 'Maria'
// emp(4).salary = 1300 <-----
-
Mußt du ggf ein QUALIFIED verwenden?
Das Notwendige steht über dem technisch machbaren.
(klingt komisch, funktioniert aber!)
-
@Robi,
danke, das hat schon mal geholfen, hatte ich glatt übersehen. Jetzt bringt er zumindest nicht diese Fehlermeldung dafür aber
Code:
Datenstrukturfeldgruppe muss als DS_ARRAY(*).KEY_SUBF
angegeben werden.
-
Hm, vielleicht lässt du mal das Overlay weg, denn das ist ja in der DS unnötig.
Du bruchat nur ein Overlay, wenn du ein Feld innerhalb der DS redefinieren willst, was man allerdings besser mit einer geschachtelten DS machen sollte.
-
Lass mal das DESCEND weg.
-
Hast Du die Beispiele in der IBM Dok komplett durchgelesen?
SORTA(D) %subarr(emp(*).salary : 1 : numEmp);
würde einen descend Sort verursachen.
Also, Birgitta's Rat, lass den DESCEND weg.
kf
-
So, konnte es mal nachprobieren und auch anwenden:
Nicht die DS muss DIM haben, sondern ein Feld in der DS:
d ds03 DS
d DS03Sort 49a DIM(10)
d DS03ARTN 8s 0 Overlay(ds03Sort:1)
d DS03LINR 8s 0 Overlay(ds03Sort:*next)
d DS03LANR 25a Overlay(ds03Sort:*next)
d DS03AEDT 8s 0 Overlay(ds03Sort:*next)
SORTA(D) %subarr(DS03Sort : 1 : numEmp);
-
Seruvs,
danke dass Du Dir die Mühe gemacht hast. Ich werde das so implementieren.
LG
Franz-Georg
-
Nichts zu danken, ich brauchte das nun auch um eine Subfile umzusortieren.
-
Baldur, ich hätte da noch ein Aber.
Franz-Georg möchte das Ganze ja nach LINR und AEDT sortieren. Mit deiner Lösung geht das so nicht, es sei denn, die Felder werden in der DS entsprechend angeordnet.
Abgesehen davon, es geht überhaupt nicht mit %Fields, wenn nicht das entsprechende PTF für Rel. 7.3/4 geladen ist, da die %Fields Extension erst ab September 2021 implementiert wurde!
Die einzige Lösung dafür ist, wenn ein Release vor 7.3 installiert ist, über zwei SortA Statements zu gehen oder eine Neuanordnung der Felder.
kf
Similar Threads
-
By katdom in forum NEWSboard Programmierung
Antworten: 20
Letzter Beitrag: 13-09-17, 07:58
-
By Mida in forum IBM i Hauptforum
Antworten: 1
Letzter Beitrag: 25-02-17, 13:09
-
By msost in forum NEWSboard Programmierung
Antworten: 1
Letzter Beitrag: 08-09-16, 17:36
-
By tfroehlich in forum IBM i Hauptforum
Antworten: 14
Letzter Beitrag: 12-02-16, 13:51
-
By rebe in forum IBM i Hauptforum
Antworten: 0
Letzter Beitrag: 04-04-02, 08:36
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks