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) |
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
Funktionen zur Bearbeitung von Listenobjekten: