[NEWSboard IBMi Forum]
Seite 1 von 2 1 2 Letzte

Thema: sorta

  1. #1
    Registriert seit
    Nov 2011
    Beiträge
    91

    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!

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    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
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  3. #3
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Zitat Zitat von Fuerchau Beitrag anzeigen
    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
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 5. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Sehr schön, aber was nützt mir das jetzt auf V5 oder V6 ?
    Vor Ende 2012 habe ich da wohl keine Chance .
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  5. #5
    Registriert seit
    Nov 2011
    Beiträge
    91
    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?

  6. #6
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Zitat Zitat von philsturm Beitrag anzeigen
    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
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 5. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  7. #7
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Wie schon immer. Jedes einzelne Feld ist mit Index ansprechbar:

    D Index s 5I

    Index = 2;
    Feld1(Index) = ...
    if Feld1(Index) = ...
    endif;

    usw.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  8. #8
    Registriert seit
    Nov 2011
    Beiträge
    91
    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

  9. #9
    Registriert seit
    Apr 2012
    Beiträge
    360
    Zitat Zitat von B.Hauser Beitrag anzeigen
    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

  10. #10
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    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.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  11. #11
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Zitat Zitat von tarkusch Beitrag anzeigen
    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
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 5. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  12. #12
    Registriert seit
    Apr 2012
    Beiträge
    360
    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

  1. sorta
    By easchbac in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 01-06-11, 06:46
  2. Sortieren einer Array
    By steven_r in forum NEWSboard Programmierung
    Antworten: 6
    Letzter Beitrag: 22-09-10, 11:35
  3. Datenstruktur mit Mehrfachvorkommen
    By JP in forum NEWSboard Programmierung
    Antworten: 6
    Letzter Beitrag: 09-08-06, 08:35
  4. Wie sortiere ich ab besten ..
    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
  •