Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

TODR-Epoche

&pagelevel(4)&pagelevel

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=00EPOCH=08
00000000 0000000001.01.1900 00:00:00,00000017.09.2042 23:53:47,370496
7FFFFFFF FFFFF00011.05.1971 11:56:53,68524726.01.2114 11:50:41,055743
80000000 0000000011.05.1971 11:56:53,68524811.05.1971 11:56:53,685248
FFFFFFFF FFFFF00017.09.2042 23:53:47,37049517.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

vonbis

00

01.01.1900 00:00:00,000000

17.09.2042 23:53:47,370495

01

02.12.1908 19:29:36,710656

19.08.2051 19:23:24,081151

02

03.11.1917 14:59:13,421312

20.07.2060 14:53:00,791807

03

05.10.1926 10:28:50,131968

21.06.2069 10:22:37,502463

04

06.09.1935 05:58:26,842624

23.05.2078 05:52:14,213119

05

07.08.1944 01:28:03,553280

24.04.2087 01:21:50,923775

06

08.07.1953 20:57:40,263936

24.03.2096 20:51:27,634431

07

09.06.1962 16:27:16,974592

24.02.2105 16:21:04,345087

08

11.05.1971 11:56:53,685248

26.01.2114 11:50:41,055743

09

11.04.1980 07:26:30,395904

28.12.2122 07:20:17,766399

0A

13.03.1989 02:56:07,106560

29.11.2131 02:49:54,477055

0B

11.02.1998 22.25:43,817216

29.10.2140 22:19:31,187711

0C

13.01.2007 17:55:20,527872

30.09.2149 17:49:07,898367

0D

15.12.2015 13:24:57,238528

01.09.2158 13:18:44,609023

0E

15.11.2024 08:54:33,949184

03.08.2167 08:48:21,319679

0F

17.10.2033 04:24:10,659840

04.07.2176 04:17:58,030335