colltbl(1M) colltbl(1M)
NAME
colltbl - Sortierdatenbasis erzeugen
SYNTAX
colltbl [file|-]
BESCHREIBUNG
Die Eingabe für das Kommando colltbl muß eine Spezifikationsdatei
(file) sein, die die Sortierfolge für eine bestimmte Sprache angibt.
Außerdem erzeugt diese Datei eine Datenbasis, die von strxfrm(3C) und
strcoll(3C) gelesen werden kann. strxfrm(3C) wandelt sein zweites
Argument um und schreibt das Ergebnis in das erste Argument. Die umge-
wandelte Zeichenkette läßt sich mit anderen transformierten Zeichen-
ketten unter Verwendung von strcmp(3C), strncmp(3C) oder memcmp(3C)
richtig sortieren. strcoll(3C) wandelt seine Argumente um und führt
einen Vergleich durch.
Wird keine Eingabedatei angegeben, so wird aus der Standardeingabe,
stdin, gelesen.
Die erzeugte Ausgabedatei enthält die Datenbasis mit Angaben zur Sor-
tierfolge, und zwar in einer Form, daß sie von Systemkommandos und
-routinen gelesen werden können. Der Name dieser Ausgabedatei ist der
Wert, den Sie dem Schlüsselwort codeset zuordnen, das aus der Datei
file eingelesen wird. Sie können diese Datei erst dann benutzen, wenn
sie unter dem Namen LCCOLLATE in das Dateiverzeichnis
/usr/lib/locale/locale installiert wurde, und zwar entweder vom
Systemverwalter oder einem Element der Gruppe bin. locale entspricht
dem Sprachbereich, dessen Sortierfolge in der Datei file beschrieben
ist. Benutzer (user), Gruppe (group) und andere (other) müssen Lesebe-
rechtigung für diese Datei haben. Andere Zugriffsrechte sollten nicht
vergeben werden. Damit die Daten zur Sortierfolge in dieser Datei ver-
wendet werden können, muß die Umgebungsvariable LCCOLLATE entspre-
chend definiert sein [siehe environ(5) oder setlocale(3C)].
Das Kommando colltbl unterstützt Sprachen, deren Sortierfolge sich mit
den folgenden Aussagen vollständig beschreiben läßt:
- Einordnen von Einzelzeichen innerhalb eines Codesatzes. Im Schwedi-
schen wird beispielsweise der Buchstabe V zusammen mit W, d. h.
nach U und vor X einsortiert. (V und W werden bei der alphabeti-
schen Reihenfolge als identisch angesehen.)
- Einordnen von "Doppelbuchstaben" in die Sortierfolge. In Spanisch
werden beispielsweise ch bzw. ll jeweils nach c bzw. l eingeordnet.
- Einordnen eines Einzelzeichens, als ob dieses aus zwei Zeichen
bestünde. Im Deutschen wird beispielsweise das "scharfe s", ß, als
ss sortiert. Dies ist ein Sonderfall der nächsten Aussage.
- Ersetzen einer Zeichenkette durch eine andere. Im obigen Beispiel
wird ß beim Sortieren durch ss ersetzt.
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
colltbl(1M) colltbl(1M)
- Ignorieren bestimmter Zeichen im Codesatz während des Sortierens.
Wenn beispielsweise der Bindestrich "-" während des Sortierens
nicht beachtet wird, so werden die Zeichenketten re-locate und
relocate als gleich angesehen.
- Sekundärsortierfolge für die Zeichen. In Fällen, in denen zwei Zei-
chen in der Sortierfolge zusammen eingeordnet werden, d. h. die-
selbe "Primärposition" haben, ist manchmal eine Sekundärsortier-
folge sinnvoll. Diese wird benutzt, wenn zwei Zeichenketten iden-
tisch sind, abgesehen von den Zeichen mit derselben Primärposition.
Im Französischen haben beispielsweise die Buchstaben e und è die-
selbe Primärposition, aber in der Sekundärsortierfolge steht e vor
è. Somit wird also z. B. das Wort des vor dès eingeordnet.
Die Spezifikationsdatei besteht aus drei Arten von Anweisungen:
1. codeset filename
filename ist der Name der Ausgabedatei, die von colltbl erstellt
werden soll.
2. order is orderlist
orderlist ist eine Liste von Symbolen, die jeweils durch Semikolon
getrennt werden. Diese Liste definiert die Sortierfolge. Das Son-
derzeichen ". . ." gibt Symbole, die alphabetisch aufeinanderfol-
gen, in Kurzfassung an. Zum Beispiel stünde
order is a;b;c;d; . . . ;x;y;z
für die Liste der Kleinbuchstaben. Selbstverständlich ließe sich
dies weiter verkürzen auf: a; . . . ;z.
Ein Symbol kann bis zu zwei Byte lang sein und auf eine der folgen-
den Arten dargestellt werden:
- als das Symbol selbst (z. B. a für den Kleinbuchstaben a),
- als Oktalwert (z. B. \141 oder 0141 für den Buchstaben a) oder
- als Hexadezimalwert (z. B. \x61 oder 0x61 für den Buchstaben a).
Sie können auch eine beliebige Kombination dieser Darstellungstypen
angeben.
Mit dem Gegenschrägstrich (\) wird angegeben, daß die Eingabe in
der nächsten Zeile fortgesetzt wird. Nach dem Gegenschrägstrich
sind keine weiteren Zeichen erlaubt.
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98
colltbl(1M) colltbl(1M)
In Klammern angegebene Zeichen haben dieselbe Primärposition, aber
eine andere Sekundärposition. Symbole in geschweiften Klammern
haben dieselbe Primärposition, und es gilt keine Sekundärsortier-
folge. Das folgende Beispiel erläutert dies.
order is a;b;c;ch;d;(e;è);f; . . . ;z;\
{1; . . . ;9};A; . . . ;Z
In diesem Beispiel besitzen e und è dieselbe Primärposition und
unterschiedliche Sekundärpositionen; die Zahlen 1 bis 9 stehen in
der Primärsortierfolge an gleicher Stelle, für sie gilt keine
Sekundärsortierfolge. Für die restlichen Symbole gilt nur die Pri-
märsortierfolge. Beachten Sie, wie Doppelbuchstaben in der Sortier-
folge angegeben werden können (ch steht nach c und vor d).
Kommt ein Zeichen in der Anweisung order is nicht vor, so steht es
außerhalb der Sortierfolge und wird beim Sortieren ignoriert.
3. substitute string with repl
Durch die Anweisung substitute wird die Zeichenkette string durch
die Zeichenkette repl ersetzt. Damit können beispielsweise Regeln
definiert werden, um abgekürzte (englische) Monatsnamen nach der
numerischen Reihenfolge zu sortieren:
substitute "Jan" with "01"
substitute "Feb" with "02"
. . .
substitute "Dec" with "12"
Eine einfachere Verwendung der Anweisung substitute ist die bereits
erwähnte Ersetzung eines Zeichens durch zwei Zeichen, z. B. bei ß
und ss im Deutschen.
Die Anweisung substitute ist optional. Die Anweisungen order is und
codeset müssen dagegen in der Spezifikationsdatei erscheinen.
Alle Zeilen in der Spezifikationsdatei, bei denen in der ersten Spalte
ein Nummernzeichen (#) auftritt, werden als Kommentare angesehen und
ignoriert. Leerzeilen werden ebenfalls ignoriert.
BEISPIEL
Das folgende Beispiel zeigt die Sortierspezifikation, die für eine
Sortierfolge etwa für ein Telephonbuch benötigt wird.
Die Sortierfolge ist durch folgende Regeln definiert:
a) Groß- und Kleinbuchstaben müssen zusammen sortiert werden, Groß-
buchstaben haben aber Priorität vor Kleinbuchstaben.
b) Alle Sonderzeichen und Interpunktionszeichen sollen ignoriert wer-
den.
Seite 3 Reliant UNIX 5.44 Gedruckt 11/98
colltbl(1M) colltbl(1M)
c) Ziffern sind wie ihre alphabetischen (englischen) Entsprechungen
zu sortieren (z. B. 0 als zero, 1 als one).
d) Die Kombinationen Ch, ch und CH sollen zwischen C und D eingeord-
net werden.
e) V und W, v und w sind zusammen einzuordnen.
Die Spezifikationsdatei für colltbl enthält folgende Angaben:
codeset telephone
order is A;a;B;b;C;c;CH;Ch;ch;D;d;E;e;F;f;\
G;g;H;h:I;i;J;j;K;k;L;l;M;m;N;n;O;o;P;p;\
Q;q;R;r;S;s;T;t;U;u;{V;W};{v;w};X;x;Y;y;Z;z
substitute "0" with "zero"
substitute "1" with "one"
substitute "2" with "two"
substitute "3" with "three"
substitute "4" with "four"
substitute "5" with "five"
substitute "6" with "six"
substitute "7" with "seven"
substitute "8" with "eight"
substitute "9" with "nine"
INTERNATIONALE UMGEBUNG
Die Umgebungsvariable LCMESSAGES bestimmt die Sprache der Meldungs-
texte.
Die Umgebungsvariable LCCTYPE bestimmt die Zeichenklassen und Zei-
chenkonvertierung.
Wenn LCMESSAGES oder LCCTYPE nicht oder als leere Zeichenkette defi-
niert ist, wird der Wert von LANG als Standardwert für die jeweils
nicht gesetzte oder leere Variable herangezogen. Ist auch LANG nicht
oder als leere Zeichenkette definiert, verhält sich das System so, als
wäre es nicht internationalisiert.
Hat eine der Variablen für die internationale Umgebung einen ungülti-
gen Wert, verhält sich das System so, als wäre keine Variable gesetzt.
Die Umgebungsvariable LCALL bestimmt die gesamte internationale Umge-
bung. LCALL hat Vorrang vor allen anderen Umgebungsvariablen im
Bereich der Internationalisierung.
Seite 4 Reliant UNIX 5.44 Gedruckt 11/98
colltbl(1M) colltbl(1M)
DATEIEN
/lib/locale/locale/LCCOLLATE
LCCOLLATE-Datenbasis für locale
/usr/lib/locale/C/colltblC
Eingabedatei zum Aufbau von LCCOLLATE in der Standardsprachumgebung
SIEHE AUCH
memory(3C), setlocale(3C), strcoll(3C), string(3C), strxfrm(3C),
environ(5).
Seite 5 Reliant UNIX 5.44 Gedruckt 11/98