Die Umgebungsvariablen - auch Shell-Variablen genannt -, die in diesem Abschnitt beschrieben werden, beeinflussen das Verhalten von Kommandos, Funktionen und Anwendungen. Es gibt Umgebungsvariablen, die nur für die Kommandos von Interesse sind (siehe Handbuch „POSIX-Kommandos“ [2] unter dem Stichwort „Shell-Variable“). Wenn ein Prozess mit der Ausführung beginnt, stellen die exec
-Funktionen einen Vektor von Zeichenketten zur Verfügung, der Umgebung genannt wird (siehe exec
). Auf diesen Vektor wird durch die folgende externe Variable gezeigt:
extern char **environ;
Entsprechend dem XPG4 Version 2-Standard haben diese Zeichenketten die Form "name=value", z.B. "PATH=/sbin:/usr/sbin"
.
Anwendungen können eigene Umgebungsvariablen definieren, wobei die Namenskonventionen eingehalten werden müssen (siehe Handbuch „POSIX-Kommandos“ [2]).
Vorbesetzung der Umgebungsvariablen vom BS2000 aus
Wird ein Programm nicht aus der Shell, sondern aus der SDF-Umgebung mit /START-EXECUTABLE-PROGRAM
gestartet, dann sind die Umgebungsvariablen standardmäßig nicht definiert.
In diesem Fall können Sie diese vom BS2000 aus vorbesetzen, indem Sie eine SDF-P-Variable mit dem Namen SYSPOSIX
als Struktur definieren (siehe Handbuch „SDF-P“ [9]). Wenn die Variable SYSPOSIX
.name den Wert value hat, wird die Zeichenkette "name=value" in den globalen Datenbereich des Programms geschrieben, wobei jedoch nur Variablen vom Typ String berücksichtigt werden.
Auf der BS2000-Kommandoebene können nur Großbuchstaben für Variablennamen verwendet werden. Bindestriche in Namen der SDF-P-Variablen werden in Unterstriche umgewandelt. Aus SYSPOSIX.LC-NAME
wird also z.B. die Zeichenkette "LC_NAME =...
".
Umgebungsvariablen für die Internationalisierung
Ein internationalisiertes Programm macht keine festen Annahmen über die Umgebung, in der es abläuft. Es ermittelt die konkrete Umgebung, in der es abläuft, aus Umgebungsvariablen.
So wird z.B. die Umgebung für die Darstellung von Ausgaben aus den Umgebungsvariablen LANG
und LC_
xxx ermittelt, während die Funktionen zur Bearbeitung von Meldungskatalogen die Umgebungsvariable NLSPATH
auswerten.
Folgende Umgebungsvariablen für die Internationalisierung werden unterstützt:
| Bestimmt die Lokalität für sprach- und kulturspezifische Eigenheiten und den kodierten Zeichensatz, wenn
Ein Benutzer aus Österreich, der Deutsch spricht und ein Terminal mit dem ISO 8859/1-Zeichensatz verwendet, stellt die Variable
Auf diese Weise sollte es einem Benutzer möglich sein, entsprechende Meldungskataloge zu finden, vorausgesetzt, sie existieren. Besondere Sprach-Operationen werden zur Laufzeit durch den Aufruf von
| ||||||||||||||
| Auf X/Open-Systemen ist diese Form eines Aufrufs von | ||||||||||||||
| Diese Kategorie gibt die verwendete Sortierfolge an. Die diesbezüglichen Informationen werden in einer Datenbank gespeichert, die von dem Kommando | ||||||||||||||
| Diese Kategorie legt die Klassifikation von Zeichen, die Umwandlung von Zeichen und die Größe von Multibyte-Zeichen fest. Die diesbezüglichen Informationen werden in einer Datenbank gespeichert, die von dem Kommando | ||||||||||||||
| Diese Kategorie gibt die Sprache an, die vom Meldungskatalog verwendet wird. Zum Beispiel kann eine Anwendung je einen Meldungskatalog mit französischen Meldungen und mit deutschen Meldungen haben. | ||||||||||||||
| Diese Kategorie spezifiziert die Währungssymbole und Trennzeichen für eine bestimmte Umgebung. Diese Umgebungsvariable wird von | ||||||||||||||
| Diese Kategorie gibt die Trennzeichen für Dezimalstellen und Tausenderstellen an. Diese Umgebungsvariable wird von | ||||||||||||||
| Diese Kategorie spezifiziert Datums- und Zeitformate. | ||||||||||||||
| Die Umgebungsvariable
Das Metazeichen
Der komplette Satz der Metazeichen umfasst folgende Symbole:
|
Das Verhalten der Sprachinformations-Funktion nl_langinfo()
wird ebenfalls durch die Belegungen dieser Umgebungsvariablen beeinflusst (siehe auch langinfo.h
).
LC_COLLATE
, LC_CTYPE
, LC_MONETARY
, LC_NUMERIC
und LC_TIME
sind so definiert, dass sie ein zusätzliches Feld @modifikator akzeptieren, welches es dem Benutzer erlaubt, einen besonderen Fall eines Umgebungsdatums innerhalb einer speziellen Kategorie auszuwählen (zum Beispiel, um das Wörterbuch entgegengesetzt zur Sortierreihenfolge der Zeichen zu definieren). Die Syntax dieser Umgebungsvariablen lautet daher:
[
sprache[
_gebiet[.
zeichensatz]][@
modifikator]]
Wenn zum Beispiel ein Benutzer mit dem System in französisch kommunizieren will, aber deutsche Textdateien sortieren muss, so könnten LANG
und LC_COLLATE
möglicherweise folgendermaßen definiert sein:
LANG=Fr_FR
LC_COLLATE=De_DE
Dies könnte noch erweitert werden, um zum Beispiel die Wörterbuch-Sortierung durch die Verwendung des Felds @modifikator auszuwählen:
LC_COLLATE=De_DE@dict
Zur Laufzeit werden diese Werte zur internationalen Umgebung des Programms gebunden, indem setlocale()
aufgerufen wird.