11.47 sort()

Diese Funktion liefert eine sortierte Kopie des angegebenen Listenwertes zurück. Es erfolgt nur eine Sortierung der Werte, nicht der Indizes. Insofern ist auch eine Wertesortierung bei assoziativen Feldern (hash-Datentyp) möglich.

Die Sortierung erfolgt gruppiert in den Datentypen der Werteelemente, aufsteigend nach dem Ordnungswert des Datentyps und des Wertes. Bei der Sortierung von Texten bzw. Strings erfolgt immer ein Vergleich im für eine Sortierung besser geeigneten Datentyp string.

Die Sortierung kann wie folgt gesteuert werden:

  • Mit dem Reverse-Parameter kann die Sortierreihenfolge umgedreht werden.
  • Über den SortType-Parameter kann die Sortierordnung von Strings und Texten beeinflusst werden

Definition

anyvalue sort
(
      anyvalue ListValue input
  { , boolean  Reverse  := false       input }
  { , enum     SortType := sort_binary input }
)

Parameter

anyvalue ListValue input
In diesem Parameter wird der Listenwert angegeben, der sortiert werden soll.
boolean Reverse := false input
Steht dieser optionale Parameter auf true, erfolgt die Sortierung in absteigender Reihenfolge. Der Standardwert ist false, was einer aufsteigenden Sortierung entspricht.
enum SortType := sort_binary input

Dieser optionale Parameter findet nur Anwendung bei Elementwerten, die vom Datentyp string sind bzw. zur Sortierung temporär in einen String gewandelt werden.

Wertebereich

sort_binary (Standard)

Sortierung entsprechend dem Unicode-Zeichencode.

sort_linguistic

Sortierung entsprechend der Sprach- und Regionseinstellungen (locale) des Systems.

Abhängig von den Systemeinstellungen und der eingestellten Codepage werden Groß- und Kleinschreibung sowie Umlaute berücksichtigt.

Da bei dieser Sortierung Codepage-Konvertierungen notwendig sind, ist sie langsamer als sort_binary.

Für Unix bzw. Linux empfehlen wir die Verwendung des UTF8-Locales.

Siehe auch

Dokumentation von locale, LC_CTYPE, LC_COLLATE, strcoll ihres Betriebssystems.

Rückgabewert

Sortierte Sammlung mit demselben Datentyp wie die übergebene Sammlung.

Fehlerverhalten

Der Aufruf der Funktion schlägt fehl, wenn der ListValue-Parameter keine Sammlung ist oder ein anderer Parameter einen unerlaubten Wert aufweist.

Beispiel

// UTF8
dialog D

on dialog start
{
  variable list List := [ "Äcker", "Bande", "Bäcker", "binden",
                          "Bund", "Aachen", "an" ];
  variable string S;

  foreach S in sort(List, sort_linguistic) do
    print S;
  endfor
  exit();
}

/* liefert: Aachen Äcker an Bäcker Bande binden Bund */

Siehe auch

Eingebaute Funktionen find(), keys(), values()