Anwendungsgebiet: PROCEDURE
Kommandobeschreibung
Das Kommando SORT-VARIABLE sortiert die Elemente einer Listenvariablen nach ihrem Inhalt in aufsteigender oder absteigender Reihenfolge. Es können nur Listenvariablen sortiert werden, deren Elemente einfache Variablen gleichen Typs (STRING, INTEGER, BOOLEAN oder ANY) sind.
Format
SORT-VARIABLE |
VARIABLE-NAME = list-poss(2000): <composed-name 1..255> ,SORTING-ORDER = *ASCENDING / *DESCENDING |
Operandenbeschreibung
VARIABLE-NAME = list-poss(2000): <composed-name 1..255>
Bezeichnet die zu sortierende Variable. Bei Angabe in Listenform können mehrere Variablennamen angegeben werden.
SORTING-ORDER = *ASCENDING / *DESCENDING
Bestimmt die Sortierreihenfolge.
SORTING-ORDER = *ASCENDING
Sortiert die Elemente in die Reihenfolge niedrigster bis zum höchster Wert. Abhängig vom Typ der zu vergleichenden Elemente wird der Größenvergleich wie folgt durchgeführt:
Elemente vom Typ STRING
Bei einer Liste mit Elementen vom Typ STRING werden die Elemente aufsteigend nach Größe der String-Werte sortiert. Verglichen wird pro Byte der Wert der Hexadezimal-Codierung (siehe auch „String-Vergleich“ (Vergleichsoperatoren )). Durch diese Art des Vergleiches können auch X-Literale sortiert werden.Es gilt:
Von zwei Strings, die mit den selben Werten beginnen, aber unterschiedliche Länge haben, besitzt der kürzere String den kleineren Wert.
Ein leerer String besitzt immer den kleinstmöglichen Wert.
Beispiel:
Bei den Strings
BC
,ABC
undBCD
ergibt sich folgende Größenrelation:ABC
<BC
undABC
<BCD
undBC
<BCD
Die aufsteigende Sortierung ergibt die Reihenfolge
ABC
,BC
undBCD
.
Elemente vom Typ INTEGER
Bei einer Liste mit Elementen vom Typ INTEGER werden die Elemente aufsteigend nach Größe der Integer-Werte sortiert (numerischer Vergleich).Elemente vom Typ BOOLEAN
Bei einer Liste mit Elementen vom Typ BOOLEAN werden die Elemente aufsteigend nach Größe der Boolean-Werte sortiert. Es gilt: der Wert „FALSE“ kleiner als „TRUE“.Elemente vom Typ ANY
Bei einer Liste mit Elementen vom Typ ANY werden die Element aufsteigend gemäß dem Typ des aktuellen Wertes sortiert (aufsteigende Reihenfolge von String-, Integer- oder Boolean-Werte, wie oben beschrieben).
Falls die Elemente der Liste Werte unterschiedlichen Typs besitzen, kann die Liste nicht sortiert werden.
SORTING-ORDER = *DESCENDING
Sortiert die Elemente in die Reihenfolge höchster bis zum niedrigster Wert. Die Art des Größenvergleichs ist abhängig vom Typ der zu vergleichenden Elemente (siehe SORTING-ORDER=*ASCENDING).
Kommando-Returncode
Während der Sortierung von Listen ist es möglich, dass ein Teil des Kommandos abgearbeitet und ausgeführt wurde, bevor ein Fehler auftrat. In diesem Fall ist das Resultat des Kommandos nicht garantiert.
(SC2) | SC1 | Maincode | Bedeutung |
0 | CMD0001 | Ohne Fehler | |
1 | 0 | SDP2000 | Warnung; einige Elemente konnten nicht sortiert werden |
64 | SDP2001 | Keines der Elemente konnte sortiert werden |
Beispiel
/DECLARE-VARIABLE LANGUAGE-LIST (TYPE = *STRING), - / MULTIPLE-ELEMENTS = *LIST / LANGUAGE-LIST = 'GERMAN', WRITE-MODE=*EXTEND / LANGUAGE-LIST = 'ENGLISH', WRITE-MODE=*EXTEND / LANGUAGE-LIST = 'FRENCH', WRITE-MODE=*EXTEND / LANGUAGE-LIST = 'ITALIAN', WRITE-MODE=*EXTEND / LANGUAGE-LIST = 'GREEK', WRITE-MODE=*EXTEND / /SORT-VARIABLE VARIABLE-NAME=LANGUAGE-LIST, SORTING-ORDER=*ASCENDING /SHOW-VARIABLE VARIABLE-NAME=LANGUAGE-LIST LANGUAGE-LIST(*LIST) = ENGLISH LANGUAGE-LIST(*LIST) = FRENCH LANGUAGE-LIST(*LIST) = GERMAN LANGUAGE-LIST(*LIST) = GREEK LANGUAGE-LIST(*LIST) = ITALIAN