Listenobjekt sortieren

Das Sortieren mehrer Felder wird nicht auf allen Plattformen unterstützt. Wenn Ihr Laufzeitsystem das Sortieren über mehrere Felder nicht unterstützt, kann diese Funktionalität für den COBOL-Preprocessor abgeschaltet werden. In diesem Fall wird nur die Angabe eines einzelnen Sortierfeldes akzeptiert.

EXEC TAA

SORT <LstObjekt> ON FIELD <Feld> [ ASCENDING | DESCENDING]

    [, <Feld> [ ASCENDING | DESCENDING]][...]

    [,ASCENDING | DESCENDING]
     
    [,OPTIONS <option1> [, <option-n> [...]]

END-EXEC

Diese Anweisung sortiert das Listenobjekt nach den angegebenen Feldern. Dabei werden die Felder in de Reihenfolge berücksichtigt, wie sie angegeben sind: Zuerst wird also Feld1 verglichen, bei Gleichheit Feld 2, usw.

Pro Feld können Sie angegeben, ob in aufsteigender (ASCENDING) oder absteigender (DESCENDING) Reihenfolge sortiert werden soll. Wenn sie nichts angegeben, wird ASCENDING angenommen.

Zusätzlich zu oder anstatt der Reihenfolge-Angabe pro Feld können Sie auch für die gesamte Sortieranweisung eine Reihenfolge festlegen. Diese kommt dann zum Zuge, wenn für ein Feld nicht ausdrücklich eine Reihenfolge angegeben ist.

Wenn ein Feld, nach dem sortiert werden soll, nicht numerisch ist, erfolgt die Sortierung für dieses Feld alphanumerisch, unter Berücksichtigung von Groß- und Kleinschreibung. Bei alphanumerischer Sortierung ist die Sortierreihenfolge abhängig von der Laufzeitumgebung und den dortigen Einstellungen.

Um die Sortierung zu beeinflussen, können zusätzliche Optionen angegeben werden[a]. Die Wirkung dieser Optionen ist abhängig von der Laufzeitumgebung. Zur Zeit bekannte Optionen:

Option Laufzeitumgebung Wirkung
DIN5007 AL MVS Bewirkt Sortierung entsprechend DIN5007(Einordnung deutscher Umlaute bei dem entsprechenden Basisbuchstaben) statt nach EBCDIC-Codepage.
STRINGSORT 1) LAN Bewirkt Berücksichtigung von Bindestrichen und Apostrophen.
WORDSORT LAN (Default) Bindestriche und Apostrophe werden ignoriert (Windows-Default).
ORDINAL2) LAN Sortierung lt. Codepage (Ascii)

Beispiele:

Die folgende Anweisung sortiert zuerst nach Feld 000-pg-kennzeichen in aufsteigenden Reihenfolge, bei Gleichheit anschließend nach Feld 000-pg-betrag in absteigender Reihenfolge:

exec taa sort mysort on field
    000-pg-kennzeichen ascending,
    000-pg-betrag descending
end-exec

Folgende Anweisungen bewirken dasselbe wie die obenstehende:

exec taa sort mysort on field
    000-pg-kennzeichen,
    000-pg-betrag descending,
end-exec
exec taa sort mysort on field
    000-pg-kennzeichen ascending,
    000-pg-betrag,
    descending
end-exec

Die folgende Anweisung sortiert nach 4 Feldern jeweils aufsteigend; die Angabe ascending könnte entfallen, da es der Default ist :

exec taa sort mysort on field
    000-pg-kennzeichen,
    000-hg-fract,
    000-hg-txt80,
    000-pg-zahl , 

    ascending
end-exec

Diese Anweisung sortiert nach 4 Feldern jeweils absteigend:

exec taa sort mysort on field
    000-pg-kennzeichen,
    000-hg-fract,
    000-hg-txt80,
    000-pg-zahl, descending
end-exec

Beispiel für eine Anweisung mit OPTIIONS-Angabe[a]:

exec taa sort mysort on field
    000-pg-kennzeichen ascending,
    000-pg-betrag,
    descending, options din5007
end-exec

a) ab TAA Version 8.05
1)
ab V9-02
2)
ab V9.12
cobref:cob:sort · Zuletzt geändert: 15.06.2021 11:48

Copyright © 1992-2024 TeamWiSE Gesellschaft für Softwaretechnik mbH         Adressen |  Kontakt |  AGB |  Datenschutzerklärung |  Impressum