BS2000 erweitert das TODR um eine TODR-Epoche. Damit kann eine Systemzeit dargestellt werden, die nicht in dem bisherigen Standardbereich (von 01.01.1900 00:00:00.000000 bis 17.09.2042 23:53:47.370495) liegt, welcher der Standard-Epoche 00 entspricht.
Die TODR-Epoche für den aktuellen Systemlauf wird im Startup-Parameterservice, Parametersatz GTIME, Parameter EPOCH eingestellt, siehe Abschnitt „Steuerung der Systemzeit (GTIME)" . Sie kann während des Systemlaufs nicht verändert werden.
Die Epocheneinstellung wird in den Benutzer-Makros CTIME (Rechnen mit Zeitstempeln) und GTIME (Datum und Uhrzeit anfordern) automatisch berücksichtigt, siehe Handbuch „Makroaufrufe an den Ablaufteil [30]. Der Wert der aktuellen Epocheneinstellung kann mit dem Benutzermakro GTIME und mit Kommando SHOW-SYSTEM-INFORMATION ermittelt werden.
Damit die Funktionen GTIME und CTIME das TODR auch nach dessen Überlauf im Jahr 2042 korrekt interpretieren, wird rechtzeitig vor diesem Zeitpunkt die Standard-Epoche von 00 auf 08 geändert werden. Damit wird die Darstellung eines Datumsbereiches von 1971 bis 2114 ermöglicht (siehe Tabelle unten).
Für Applikationen, welche Zeitstempel im TODR-Format benutzen, kann das zu Inkompatibilitäten führen, und sie müssen angepasst werden, bevor die Epoche geändert wird. Deswegen wird dringend empfohlen, in Applikationen auf das Speichern von Zeitstempeln im TODR-Format zu verzichten, um problemlose Wechsel der TODR-Epoche zu ermöglichen.
Interpretation von TODR-Zeistempeln mit den TODR-Epochen 00 und 08
TODR-Zeitstempel (hex) | Interpretation als Datum und Uhrzeit | |
---|---|---|
EPOCH=00 | EPOCH=08 | |
00000000 00000000 | 01.01.1900 00:00:00,000000 | 17.09.2042 23:53:47,370496 |
7FFFFFFF FFFFF000 | 11.05.1971 11:56:53,685247 | 26.01.2114 11:50:41,055743 |
80000000 00000000 | 11.05.1971 11:56:53,685248 | 11.05.1971 11:56:53,685248 |
FFFFFFFF FFFFF000 | 17.09.2042 23:53:47,370495 | 17.09.2042 23:53:47,370495 |
Tabelle 49: Vergleich der derzeitigen Standard-Epoche 00 mit der zukünftigen Standard-Epoche 08
Zeitstempelformat TODX
Als Alternative zum TODR-Format gibt es im BS2000 das Zeitstempelformat TODX. TODX besteht aus einem Doppelwort und enthält die Anzahl der Mikrosekunden seit 01.01.1900 00:00:00,000000 Uhr. Anders als das TODR-Format kann das TODX-Format eine viel größere Zeitspanne abdecken (vom Jahr 1900 bis zum Jahr 4317).
Das Format TODX wird in den Benutzer-Makros CTIME (Rechnen mit Zeitstempeln) und GTIME (Datum und Uhrzeit anfordern) verwendet bzw. geliefert, siehe Handbuch "Makroaufrufe an den Ablaufteil" [30]. Es ist vorteilhaft bei der Epochen-unabhängigen Darstellung eines Zeitstempels und beim Rechnen mit Zeitstempeln aus unterschiedlichen Epochen.
Innerhalb der derzeitigen Standard-Epoche 00 entspricht ein TODX-Zeitstempel einem TODR-Zeitstempel, dessen Inhalt um 12 Bit nach rechts geschoben ist.
Programme, die selbst mit dem TODR rechnen, können den Algorithmus verwenden, der im Abschnitt "Umwandlung von TODR-Zeitstempeln in TODX-Zeitstempeln" beschriebenen wird.
Umwandlung von TODR-Zeitstempeln in TODX-Zeitstempel
Die folgenden Algorithmen verwenden einen TODR-Wert und den zugehörigen Epochen-Wert zur Berechnung der Anzahl der Mikrosekunden seit 01.01.1900 00:00:00,000000, also den TODX-Wert.
Verwendete Variablen und Operatoren:
TODX : TODX-Wert, d.h. Anzahl der Mikrosesekunden seit 01.01.1900 00:00:00,000000 TODR : TODR-Wert EPD : Wert der Epocheneinstellung (1 Byte) EPC : Epoch-Counter (erste Sedezimalziffer des EPD) EPO : Epoch-Offset (zweite Sedezimalziffer des EPD) x >> n : Verschiebe den Wert x um n Bits nach rechtes x & y : UND-Operation (bitweise)
Algorithmus für die derzeitige Standard-Epoche 00:
TODX := TODR >> 12;
Algorithmus für die zukünftige Standard-Epoche 08:
TODX := TODR >> 12; if ((TODX >> 48) < 8) TODX := TODX + x'0010000000000000';
Algorithmus für eine beliebige Epocheneinstellung:
TODX := TODR >> 12; EPC := EPD >> 4; EPO := EPD & x'0F'; if ((TODX >> 48) < EPO) EPC := EPC + 1; TODX := TODX + EPC * x'0010000000000000';
Wertebereiche weiterer TODR-Epochen
EPOCH | Datum und Uhrzeit | |
von | bis | |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|