-
sorta
Hallo zusammen!
Ich habe eine kurze Frage zu einem sorta im free-Format.
Ich habe ein Array, das so aufgebaut ist:
D Array DS dim(10)
D qualified
D Feld1
D Feld2
Wie kann ich jetzt nach z.B. Feld2 sortieren lassen?
Schon jetzt: Danke!
-
So unterstützt der SORTA das leider nicht:
D MyDs DS
D MyArray 20 dim(10)
D Feld1 10 overlay(myArray:1)
D Feld2 10 overlay(MyArray:*next)
SORTA Feld1
SORTA Feld2
-
 Zitat von Fuerchau
So unterstützt der SORTA das leider nicht:
Stimmt nicht!
Ab Release 7.1 können Array-Datenstrukturen SO sortiert werden:
Code:
/Free
SortA Array(*).Feld2;
/End-Free
Birgitta
-
Sehr schön, aber was nützt mir das jetzt auf V5 oder V6 ?
Vor Ende 2012 habe ich da wohl keine Chance .
-
Danke! Das ist schonmal der erste Schritt.
Aber wie kann ich dieses Array dann füllen? In dem Array mit DS konnte ich ja sagen Feld1 = Feld1; Feld2 = Feld2.
Jetzt müsste ich die Felder ja als zusammenhängendes "Element" in das Array schreiben. Wie mache ich das bei unterschiedlichen Datentypen?
-
 Zitat von philsturm
Jetzt müsste ich die Felder ja als zusammenhängendes "Element" in das Array schreiben. Wie mache ich das bei unterschiedlichen Datentypen?
Musst Du nicht! Da Feld1 und Feld2 ebenfalls Feldgruppen sind:
Code:
D MyDS DS Qualified
D MyArray Dim(10)
D Feld1 10A Overlay(MyArray)
D Feld2 10I 0 Overlay(MyArray: *Next)
/Free
MyDS.Feld1(1) = 'XYZ';
MyDS.Feld1(2) = 'AAA';
MyDS.Feld2(1) = 'XXX';
MyDS.Feld2(2) = %Int(MyDS.Feld1(7));
/End-Free
Übrigens MyArray ist allein durch die Überlagerung definiert, d.h. es ist keine weitere Definition (wie Längenangabe oder Datentyp) notwendig
@Baldur
Glaubst Du, Du bist das einzige arme Schweinchen?
Ich muss noch alles auf V5R2 runterwandeln ... und bevor der letzte unserer Kunden nicht von V5R2 weg ist, passiert da auch nichts weiter.
Birgitta
-
Wie schon immer. Jedes einzelne Feld ist mit Index ansprechbar:
D Index s 5I
Index = 2;
Feld1(Index) = ...
if Feld1(Index) = ...
endif;
usw.
-
Das funktioniert! Danke!
Jetzt hab ich nur noch ein Problem.
Wenn ich dann an der gewünschten Stelle ein sorta feld2 mache und danach das array mittels eines schleife und eines index auslese, sind die felder alle leer und er fliegt aus dem Programm.
UPDATE: Ich korriegiere. Aus dem Programm fliegt er nicht mehr (War ein Dezimaldatenfehler). Aber die Felder die ausgegeben werden sind immer noch leer.
UPDATE2: Problem gelöst. Ich hatte Ascend oder Descend im Array vergessen
-
 Zitat von B.Hauser
Musst Du nicht! Da Feld1 und Feld2 ebenfalls Feldgruppen sind:
Code:
D MyDS DS Qualified
D MyArray Dim(10)
D Feld1 10A Overlay(MyArray)
D Feld2 10I 0 Overlay(MyArray: *Next)
/Free
MyDS.Feld1(1) = 'XYZ';
MyDS.Feld1(2) = 'AAA';
MyDS.Feld2(1) = 'XXX';
MyDS.Feld2(2) = %Int(MyDS.Feld1(7));
/End-Free
Übrigens MyArray ist allein durch die Überlagerung definiert, d.h. es ist keine weitere Definition (wie Längenangabe oder Datentyp) notwendig
@Baldur
Glaubst Du, Du bist das einzige arme Schweinchen?
Ich muss noch alles auf V5R2 runterwandeln ... und bevor der letzte unserer Kunden nicht von V5R2 weg ist, passiert da auch nichts weiter.
Birgitta
Hallo Frau Hauser,
wollte Anhand Ihren Beispiel ein Array sortieren.
Kann das Array eigentlich Felder besitzen mit Unterschiedlichen Länge, bin da beim Probieren, aber bekomme es einfach nicht gebacken(Dezimaldatenfehler).
Gruß
Tarki
-
Das ist kein Problem, allerdings musst du die Variablen initialisieren (CLEAR).
Ein automatischer Init passiert ja nur auf dem übergeordneten Feld, Overlays können nicht automatisch initialisiert werden, deshalb sind Dezimalfelder mit BLANK gefüllt.
-
 Zitat von tarkusch
Hallo Frau Hauser,
wollte Anhand Ihren Beispiel ein Array sortieren.
Kann das Array eigentlich Felder besitzen mit Unterschiedlichen Länge, bin da beim Probieren, aber bekomme es einfach nicht gebacken(Dezimaldatenfehler).
Gruß
Tarki
Sicher geht das! Wenn Du genau hinschaust haben die Felder in meinem Beispiel nicht nur unterschiedliche Datentypen sondern auch unterschiedliche Längen! (Ein Integer-Feld belegt nur 4 Byte).
Hast Du auch Deine Datenstruktur initialisiert (INZ in der DS Zeile) oder vor dem Verwenden/Fülllen explizit mit CLEAR initialisiert?
Birgitta
-
Ich habe die Felder wie folgt initialisiert:
D QQKST1 s 5 0
D QQKST2 s 4 0
D QQTEXT s 10
D QQFINR s 2 0
D QQPENR s 4 0
D MyDsSort DS qualified
D MyFldgr DIM(999)
D QQKST1 5 0 Overlay(MyFldgr)
D QQKST2 4 0 Overlay(MyFldgr: *Next)
D QQTEXT 10 Overlay(MyFldgr: *Next)
D QQFINR 2 0 Overlay(MyFldgr: *Next)
D QQPENR 4 0 Overlay(MyFldgr: *Next)
Vor dem befüllen im SFL mach ich kein Clear.
Die DatenStruktur und Feldgruppen werden korrekt befüllt, aber bei dem Befehl SortA MyDsSort.QQFINR; tritt der Fehler auf.
Gruß
Tarki
Similar Threads
-
By easchbac in forum NEWSboard Programmierung
Antworten: 4
Letzter Beitrag: 01-06-11, 06:46
-
By steven_r in forum NEWSboard Programmierung
Antworten: 6
Letzter Beitrag: 22-09-10, 11:35
-
By JP in forum NEWSboard Programmierung
Antworten: 6
Letzter Beitrag: 09-08-06, 08:35
-
By malzusrex in forum NEWSboard Programmierung
Antworten: 9
Letzter Beitrag: 05-05-04, 15:41
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