Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

Lokale Uhrzeit in POSIX

&pagelevel(3)&pagelevel

Die von POSIX-Schnittstellen gelieferte Information über die lokale Uhrzeit kann unter bestimmten Umständen von der von den entsprechenden BS2000-Schnittstellen gelieferten Information abweichen. Das betrifft jedoch nicht die Information über die universelle Uhrzeit (UTC).

Der Grund für diese Abweichung ist, dass BS2000-Schnittstellen und POSIX-Schnittstellen separate Mechanismen zur "Lokalisierung" der Uhrzeit verwenden.


Im BS2000 gelten für die lokale Uhrzeit die Einstellungen, die in der Datei PARAMS.GTIME beim Systemstart festgelegt sind.

Beispiel:

/BS2000 PARAMS
/BEGIN GTIME
ZONE=+01:00
DIFF=1:00
SEASON=S
CHDATE=1900-01-01/00:00
CHDATE=1980-04-06/02:00
CHDATE=1980-09-28/03:00
...
CHDATE=2020-03-29/02:00
CHDATE=2020-10-25/03:00
CHDATE=2021-03-28/02:00
CHDATE=2021-10-31/03:00
CHDATE=2022-03-27/02:00
CHDATE=2022-10-30/03:00
CHDATE=2023-03-26/02:00
CHDATE=2023-10-29/03:00
CHDATE=2024-03-31/02:00
CHDATE=2024-10-27/03:00
NEXTZONE
...
/EOF
/END-PARAMS


In POSIX gelten für die lokale Uhrzeit die Einstellungen, die beim Aufruf der betreffenden CRTE-Schnittstellen in der Umgebungsvariablen TZ festgelegt sind.

Beispiel (Standard-Einstellung = Mitteleuropa):

$ echo $TZ
MEZ-1MSZ-2,M3.5.0/02:00:00,M10.5.0/03:00:00
$ 

Der Inhalt der Variablen TZ ist in diesem Beispiel folgendermaßen zu interpretieren:

MEZ-1  Standard-Zeitzone

NameMEZ
DifferenzMEZ - 01:00:00 = UTC

MSZ-2  alternative Zeitzone

NameMSZ
DifferenzMSZ - 02:00:00 = UTC

M3.5.0/02:00:00  Umschaltzeitpunkt zur alternativen Zeitzone

Monat3 = März
Woche5 (oder 4, falls der Monat nicht 5 Wochen hat)
Wochentag0 = Sonntag
Uhrzeit02:00:00

M10.5.0/03:00:00  Rückschaltzeitpunkt zur Standard-Zeitzone

Monat10 = Oktober
Woche5 (oder 4, falls der Monat nicht 5 Wochen hat)
Wochentag0 = Sonntag
Uhrzeit03:00:00

Versorgung der Variablen TZ in POSIX

Bei der Installation von POSIX-BC wird die Datei /etc/TIMEZONE mit folgendem Inhalt installiert:

TZ=MEZ-1MSZ-2,M3.5.0/02:00:00,M10.5.0/03:00:00

Hierbei handelt es sich um ein Shell-Skript, das die Variable TZ in der aufrufenden Shell setzt, wenn es per Punkt-Kommando ( . /etc/TIMEZONE ) aufgerufen wird. Die Variable TZ ist automatisch exportiert, d.h. sie wird automatisch an Kindprozesse vererbt.

Das Skript /etc/TIMEZONE wird bei jeder Art von POSIX-Login ausgeführt, also bei der Eröffnung einer Dialog- oder Batch-Session mit /START-POSIX-SHELL, bei rlogin, telnet, rsh und ssh. Außerdem wird es vor dem Starten von Dämonen durch die so genannten RC-Skripts ausgeführt.

Damit ist die Variable TZ in allen Dämonen und Login-Shells sowie in allen von diesen mit fork() erzeugten Prozessen versorgt und steuert damit die CRTE-Funktionen zur Ermittlung der lokalen Uhrzeit.

Die Datei /etc/TIMEZONE wird auch bei einer Upgrade-Installation von POSIX-BC neu installiert. Eventuell durch den Administrator vorgenommene Änderungen werden dadurch überschrieben.

Einschränkungen für den POSIX-Mechanismus mit der TZ-Variablen

Der POSIX-Mechanismus erlaubt nur eine feste Regel für die Umschaltzeitpunkte zwischen Standard- und alternativer Zeitzone und keine Variationen von Jahr zu Jahr. Das entspricht den heute geltenden EU-Regelungen.

Daher werden Zeitstempel, die vor 1996 liegen, d.h. vor der Einführung einer festen Regel für die Umstellzeitpunkte, unter Umständen fehlerhaft "lokalisiert".