Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

CTIME - Mit Zeitstempeln rechnen

&pagelevel(3)&pagelevel

Allgemeines

Anwendungsgebiet:

Abfragen und Zugriff zu Listen und Tabellen; siehe "Abfragen und Zugriff zu Listen und Tabellen"

Makrotyp:

S-Typ, MF-Format 3: C-/D-/E-/L-/M-Form;

siehe "S-Typ-Makroaufrufe"


Makrobeschreibung

Der Makro CTIME bietet folgende Funktionen:

  • die Änderung der Darstellung von Zeitstempeln (FUNCT=*CONV)

  • die Addition und Subtraktion einer Zeitspanne von einem Zeitstempel (FUNCT=*ADD)

  • die Ermittlung der Zeitspanne zwischen zwei Zeitstempeln (FUNCT=*DIFF)

CTIME stellt die Ergebnisse im Datenbereich wahlweise in abdruckbarer, binärer oder TODR/TODX-Form zur Verfügung.

Hinweise

  • Der Makro CTIME benutzt keinen SVC.

  • Da die Funktionen des Makros CTIME nicht über einen SVC, sondern über eine Unterprogrammschnittstelle ausgelöst werden, muss ein Programm, das CTIME aufruft, einen 18 Worte langen Sicherstellungsbereich zur Verfügung stellen. Vor dem Makroaufruf ist die Adresse dieses Sicherstellungsbereiches in Register R13 zu laden.

Der Datenbereich enthält Speicherbereiche für:

1. Eingabezeitstempel

NTICS1I

Länge: 48 Byte

2. Eingabezeitstempel

NTICS2I

Länge: 48 Byte

Eingabezeitspanne

NTICD1I

Länge: 32 Byte

Ausgabezeitstempel

NTICS1O

Länge: 48 Byte

Ausgabezeitspanne

NTICD1O

Länge: 32 Byte

wobei die Feldnamen für PREFIX=N und MACID=TIC gelten.

Über Zeitstempel und Zeitspannen lassen sich die DSECTs NTICS (für Zeitstempel) und NTICD (für Zeitspannen) legen, um die Datenfelder mit den Zeitangaben anzusprechen.

Ein Zeitstempel besteht aus Datum (Jahr, Monat, Tag, Wochentag) und Uhrzeit (Stunde, Minute, Sekunde, Millisekunde, Mikrosekunde). Er bezieht sich immer auf eine bestimmte Zeitbasis und kann in verschiedenen Formaten angegeben werden. Zeitspannen bestehen aus Angaben von Tagen und Uhrzeit und können ebenfalls in verschiedenen Formaten angegeben werden.

Mögliche Zeitbasen sind:

UTC: Universal Time Coordinate entspricht Greenwich Time (Weltzeit)

LTI: Local Time (lokale Zeit im aufrufenden System)

FZ: Foreign Zone („fremde“, beliebige Zeitbasis)

Bei Angabe der beliebigen Zeitbasis ist der Zeitstempel nur dann eindeutig, wenn Zonen-Informationen mitgegeben werden. Diese Informationen geben Auskunft darüber, welche Weltzeit-Zonen-Differenz und/oder welche Sommer-Winterzeit-Umstellungsdifferenz beachtet werden muss und ob der Zeitstempel in Sommer- oder Winterzeit angegeben wurde.

Die Darstellung eines Zeitstempels ist in folgenden Formaten möglich:

ISO4

abdruckbares Format in Dezimalzahlen mit dem Aufbau

yyyy-mm-ddjjj wwhh:mm:ssvhz:mz-hs:ms-smlsmcs

Es bedeutet in folgender Reihenfolge:

yyyy

Jahr

(4 Byte)

mm

Monat des Jahres

(2 Byte)

dd

Tag des Monats

(2 Byte)

jjj

julianischer Tag des Jahres

(3 Byte)

ww

Wochentag

(2 Byte)

hh

Stunde

(2 Byte)

mm

Minute

(2 Byte)

ss

Sekunde

(2 Byte)

v

Vorzeichen zur Zonen-Differenz

(1 Byte)

hz

Stunde der Zonen-Differenz

(2 Byte)

mz

Minute der Zonen-Differenz

(2 Byte)

hs

Stunde der Sommer-Winterzeit-Differenz

(2 Byte)

ms

Minute der Sommer-Winterzeit-Differenz

(2 Byte)

s

Sommer-Winterzeit-Angabe

(1 Byte)

mls

Millisekunde

(3 Byte)

mcs

Mikrosekunde

(3 Byte)


Der Datenbereich zur Aufnahme des Zeitstempels hat folgenden Aufbau (Makroauflösung mit MF=D und PREFIX=N):

NTICSISO4       DS    0XL48        timestamp in iso4
NTICSDATE_U     DS    0XL10        date union
*
NTICSMD         DS    0XL10        date
NTICSIDY        DS    CL4          year
NTICSID1        DS    CL1          hyphen1
NTICSIDM        DS    CL2          month
NTICSID2        DS    CL1          hyphen2
NTICSIDD        DS    CL2          day
*
                ORG   NTICSDATE_U
NTICSDATE_CHAR  DS    CL10         date_char
                ORG   NTICSDATE_U+10
NTICSIDJ        DS    CL3          julian 
NTICSIDB        DS    CL1          blank
*
NTICSMW         DS    0CL2         begin of weekday
NTICSIWD        DS    CL2          weekday
*
NTICSMT         DS    0CL8         time: "hh:mm:ss"
NTICSITH        DS    CL2          hour
NTICSIT1        DS    CL1          colon1
NTICSITM        DS    CL2          minute
NTICSIT2        DS    CL1          colon2
NTICSITS        DS    CL2          second
*
NTICSMZ         DS    0CL14        zone: "shh:mm-hh:mm-a"
NTICSIZS        DS    CL1          zonesign
NTICSIZH        DS    CL2          zonehour
NTICSIZ1        DS    CL1          colon3
NTICSIZM        DS    CL2          zoneminute
NTICSIZ2        DS    CL1          hyphen3
NTICSISH        DS    CL2          seasonhour
NTICSIS1        DS    CL1          colon4
NTICSISM        DS    CL2          seasonminute
NTICSIS2        DS    CL1          hyphen4
NTICSISA        DS    FL1          actualseason
*
NTICSMF         DS    0XL6         begin of fraction of second
NTICSIF         DS    0CL6         fraction of second : "mmmuuu"
NTICSIFM        DS    CL3          millisecond
NTICSIFN        DS    CL3          microsecond
NTICSILE        EQU   *-NTICSISO4  LENGTH OF ISO4 TIMESTAMP
*                                  (without address of CHDATE List)
NTICSCDL        DS    A            chdates_addr

BINAR

Die numerischen Werte werden binär in Halbworten angegeben.

Der Datenbereich zur Aufnahme des Zeitstempels hat folgenden Aufbau
(Makroauflösung mit MF=D und PREFIX=N):

NTICSBINAR      DS    0XL42        timestamp in binar
NTICSBDY        DS    H            year
NTICSBDM        DS    H            month
NTICSBDD        DS    H            day
NTICSBDJ        DS    H            julian
NTICSFILL1      DS    CL6          fill1
NTICSBWD        DS    H            weekday
*
NTICSBTH        DS    H            hour
NTICSBTM        DS    H            minute
NTICSBTS        DS    H            second
NTICSBL1        EQU   *-NTICSBINAR LENGTH OF BINARY TIMESTAMP
*                                     PART1 (date & time)
NTICSFILL2      DS    CL2          fill2
NTICSBZH        DS    H            zonehour
NTICSBZM        DS    H            zoneminute
NTICSBSH        DS    H            seasonhour
NTICSBSM        DS    H            seasonminute
NTICSBSA        DS    FL1          actualseason
NTICSFILL3      DS    CL5          fill3
*                                  fraction of second
NTICSBFM        DS    H            millisecond
NTICSBFN        DS    H            microsecond
NTICSBL2        EQU   *-NTICSBFM   LENGTH OF BINARY TIMESTAMP
*                                     PART2 (fraction of second)
NTICSBLE        EQU   *-NTICSBINAR LENGTH OF BINARY TIMESTAMP

TODR


Time-Of-Day-Register-Format: Das TOD-Register hat die Länge eines Doppelwortes
und enthält z.B. für Epoche 00:
((Anzahl der Mikrosekunden seit 1.1.1900) * 4096) modulo 2 64

Es wird durch die Hardware laufend hochgezählt. Mit dem STCK-Befehl kann
das TOD-Register abgefragt werden. Die Interpretation des TODR-Inhaltes
hängt von der für den Systemlauf eingestellten Epoche ab, siehe Handbuch
„Systembetreuung“ [10]).

Der Datenbereich zur Aufnahme des Zeitstempels hat folgenden Aufbau
(Makroauflösung mit MF=D und PREFIX=N):

NTICST          DS    0XL8         timestamp in TODR
NTICSTMS        DS    F            most significant word:
*                                     approx sec
NTICSTLS        DS    F            least significant word:
*                                     micro_sec * 2**12
TODX

Erweitertes Time-Of-Day-Register-Format: es hat die Länge eines Doppelwortes und enthält die Anzahl der Mikrosekunden seit dem
1. Januar 1900 0 Uhr.

Der Datenbereich zur Aufnahme des Zeitstempels hat folgenden Aufbau (Makroauflösung mit MF=D und PREFIX=N):

NTICSX          DS    0XL8         timestamp in TODX
NTICSTHW        DS    F            high word
NTICSTLW        DS    F            low word

Die Darstellung von Zeitspannen ist in folgenden Formaten möglich:

ISO4 /
ISO4MIC


abdruckbares Format in Dezimalzahlen
Der Datenbereich zur Aufnahme der Zeitspanne hat folgenden Aufbau (Makroauflösung mit MF=D und PREFIX=N):

NTICDI        DS    0XL32        tdiff in iso4
NTICDIS       DS    CL1          sign
NTICDIDD      DS    CL10         day
NTICDID1      DS    CL1          hyphen
NTICDITH      DS    CL2          hour
NTICDIT1      DS    CL1          colon1
NTICDITM      DS    CL2          minute
NTICDIT2      DS    CL1          colon2
NTICDITS      DS    CL2          second
NTICDIFP      DS    CL1          point
NTICDIFM      DS    CL3          millisecond
NTICDIFN      DS    CL3          microsecond
NTICDILE      EQU   *-NTICDI     LENGTH OF ISO4 TIMEDIFFERENCE
*                                (without unused field)
              DS    CL5          unused
BINAR /
BINARMIC


binäre Angabe.
Der Datenbereich zur Aufnahme der Zeitspanne hat folgenden Aufbau (Makroauflösung mit MF=D und PREFIX=N):

NTICDB        DS    0XL16        tdiff in binar
NTICDBDD      DS    F            day
NTICDBTH      DS    H            hour
NTICDBTM      DS    H            minute
NTICDBTS      DS    H            second
NTICDBFM      DS    H            millisecond
NTICDBFN      DS    H            microsecond
NTICDBLE      EQU   *-NTICDB     LENGTH OF BINARY TIMESTAMP
*                                (without the fill field)
              DS    H            to fill the gap

TODR



Time-Of-Day-Register-Format.
Der Datenbereich zur Aufnahme der Zeitspanne hat folgenden Aufbau
(Makroauflösung mit MF=D und PREFIX=N):

NTICDT        DS    0XL8         tdiff in TODR (for C)
NTICDTMS      DS    F            most significant word:
*                                   approx. sec
NTICDTLS      DS    F            least significant word:
*                                   micro_sec * 2**12

TODX



Erweitertes Time-Of-Day-Register-Format.
Der Datenbereich zur Aufnahme der Zeitspanne hat folgenden Aufbau
(Makroauflösung mit MF=D und PREFIX=N):

NTICDX        DS    0XL8         tdiff in TODX (for C)
NTICDTHW      DS    F            high word
NTICDTLW      DS    F            low word

Wertebereiche

Es gelten die folgenden Wertebereiche für die Arbeit mit dem CTIME-Makro. Zu beachten ist die Unterscheidung in der Format-Darstellung bei den Ein- und Ausgabe-Zeitstempeln und Zeitspannen.

BINAR- oder ISO4-Format:

01.01.1900 00:00:00,000000  <  Zeitstempel  <  31.12.9999 23:59:59,999999

erlaubte Zeitdifferenz: ± 2147483647 Tage

TODR-Format:

t0   <  Zeitstempel  <  t1

erlaubte Zeitdifferenz: ± 26062 Tage

t0 und t1 sind dabei abhängig von der festgelegten Epoche für das TOD-Register. Für die Standardepoche (GTIME-Parameter EPOCH=00) beträgt der Wertebereich for das TODR-Format:

01.01.1900 00:00:00,000000 < Zeitstempel < 17.09.2042 23:53:47,370495

TODX-Format:

01.01.1900 00:00:00,000000  <=  Zeitstempel  <=  18.03.4317 02:44:48,587775

erlaubte Zeitdifferenz: ± 882867 Tage

Makroaufrufformat und Operandenbeschreibung

CTIME

FUNCT=*CONV / *ADD / *ADDLL / *DIFF / adr / (r)

,BASE1IN=*UTC / *LTI / *FZ / adr / (r)

,FRM1IN=*ISO4 / *ISO4MIC / *BINAR / *BINARMIC / *TODR / *TODX / adr / (r)

,INF1IN=*CALEND / *JULIAN / adr / (r)

,FRM1ZIN=*NONE / *ISO4 / *ISO4LST / *BINAR / *BINARLST / adr / (r)

,CHDL1IN=*NONE / adr / (r)

,BASE2IN=*UTC / *LTI / *FZ / adr / (r)

,FRM2IN=*ISO4 / *ISO4MIC / *BINAR / *BINARMIC / *TODR / *TODX / adr / (r)

,INF2IN=*CALEND / *JULIAN / adr / (r)

,FRM2ZIN=*NONE / *ISO4 / *ISO4LST / *BINAR / *BINARLST / adr / (r)

,CHDL2IN=*NONE / adr / (r)

,BASEOUT=*LTI / *UTC / *FZ / adr / (r)

,FRMOUT=*ISO4 / *ISO4MIC / *BINAR / *BINARMIC / *TODR / *TODX / adr / (r)

,FRMZOUT=*NONE / *ISO4 / *ISO4LST / *BINAR / *BINARLST / adr / (r)

,CHDLOUT=*NONE / adr / (r)

,FRMDIN=*ISO4 / *ISO4MIC / *BINAR / *BINARMIC / *TODR / *TODX / adr / (r)

,FRMDOUT=*ISO4 / *ISO4MIC / *BINAR / *BINARMIC / *TODR / *TODX / adr / (r)

,LINKADR=*NONE / linkadr

,MF=D / C / L / M / E

[,PARAM=adr / (r)]

,PREFIX=N / p

,MACID=TIC / macid

In der nachfolgenden Operandenbeschreibung sind die Operanden alphabetisch geordnet.

BASE1IN=

BASE2IN=

BASEOUT=

gibt die Zeitbasis an, die für den 1. oder 2. Eingabe-Zeitstempel (bei BASE1IN bzw. BASE2IN) oder für den Ausgabe-Zeitstempel (bei BASEOUT) gültig ist.

*UTC
Der Zeitstempel wird in der Zeitbasis der Weltzeit UTC (Universal Time Coordinate, entspricht der Greenwich-Zeit) angegeben.
Dieser Wert ist Voreinstellung bei BASE2IN.

*LTI
Der Zeitstempel wird in der im Aufrufer-System gültigen lokalen Zeitbasis LTI (Local TIme) angegeben.
Dieser Wert ist Voreinstellung bei BASEOUT.

*FZ
Der Zeitstempel wird in einer fremden bzw. beliebigen Zeitbasis (Foreign Zone) angegeben. Die diese Zeitbasis charakterisierenden Informationen müssen in der Zonen-Information des betreffenden Zeitstempels mitgegeben und mit den jeweiligen Operanden spezifiziert werden (Angabe des Operanden FRMxZIN bzw. FRMZOUT erforderlich).

adr
symbolische Adresse (Name) eines Feldes, das zuvor mit dem entsprechenden Equate geladen werden muss. Länge = 1 Byte.

(r)
r= Register mit dem Wert des entsprechenden Equates.

CHDL1IN=

CHDL2IN=

CHDLOUT=

gibt für FZ-Zeitstempel eine Tabelle (Liste) von Umstellungszeitpunkten mit, mit deren Hilfe die Einordnung der Zeitstempel in Sommer- oder Winterzeit erfolgt.
Eine Angabe ungleich *NONE ist nur bei MF=M und bei „FZ“-Zeitstempeln erlaubt.

*NONE
Es wird keine Tabelle mitgegeben.

adr
symbolische Adresse (Name) eines Feldes, das die Tabelle von Umstellungszeitpunkten enthält. Dieser Operandenwert ist nur mit bei MF=M erlaubt und darf nur in Verbindung mit BASExxx=*FZ angegeben werden. Die gewünschte Verarbeitung dieser Tabelle muss mit den Werten FRMxZIN=*ISO4LST/*BINARLST bzw. FRMZOUT=*ISO4LST/*BINARLST eingestellt werden. Zur eindeutigen Darstellung eines Zeitstempels gehört auch, dass die Felder Zonendifferenz und Umstellungsdifferenz der Zoneninformation belegt sind.
Die Tabelle muss auf Wortgrenze ausgerichtet und in folgender Form aufgebaut sein: Es werden aufeinander folgend Doppelworte erwartet, die die Informationen über die Umstellungszeitpunkte enthalten. Die CHDATE-Informationen liegen als STCK-Werte auf UTC-Basis vor, die um 8 Bits logisch nach rechts verschoben wurden (SRL-Befehl). Das niederwertigste Bit zeigt dabei die Art der Umstellung an:
Ist das Bit 0, wird von Winter- auf Sommerzeit umgestellt, bzw. umgekehrt, wenn das Bit 1 ist.
Die Erstellung der Tabelle sollte mit GTIME CHDATE=... erfolgen. Die Werte in diesen Doppelworten müssen aufsteigend sein.
Die Tabelle muss mit einem Doppelwort D'0' beendet werden.
Zur Arbeitsweise siehe Beispiel auf "CTIME - Mit Zeitstempeln rechnen".

(r)
r = Register mit dem Adresswert von adr.

FRMDIN=

FRMDOUT

gibt an, welches Format der Eingabe-Zeitspanne vorliegt (bei FRMDIN als Eingabe-Zeitspanne) oder gewünscht wird (bei FRMDOUT als Ausgabe-Zeitspanne).

*ISO4
Die Zeitspanne wird im abdruckbaren Format dargestellt.
Bei FRMDOUT werden auch die Felder für Milli- und Mikrosekunden versorgt.

*ISO4MIC
Die Zeitspanne wird im abdruckbaren Format dargestellt. Bei FRMDIN wird die erhöhte Auflösung mit Milli- und Mikrosekunden erwartet.

*BINAR
Die Zeitspanne wird binär mit Festpunktzahlen dargestellt. Dabei werden die Tage mit 4 Byte, die Stunden, Minuten und Sekunden mit je 2 Byte dargestellt. Bei FRMDOUT werden auch die Felder für Milli- und Mikrosekunden versorgt.

*BINARMIC
Die Zeitspanne wird binär mit Festpunktzahlen dargestellt. Bei FRMDIN wird die erhöhte Auflösung mit Milli- und Mikrosekunden erwartet.

*TODR
Die Zeitspanne wird im Time-Of-Day-Register-Format dargestellt.

*TODX
Die Zeitspanne wird im erweiterten Time-Of-Day-Register-Format dargestellt.

adr

symbolische Adresse (Name) eines Feldes, das zuvor mit dem entsprechenden Equate geladen werden muss. Länge = 1 Byte.

(r)
r= Register mit dem Wert des entsprechenden Equates.

FRM1IN=

FRM2IN=

FRMOUT=

gibt an, welches Zeitstempel-Format vorliegt (bei FRM1IN, FRM2IN als Eingabe-Zeitstempel) oder gewünscht wird (bei FRMOUT als Ausgabe-Zeitstempel).

*ISO4
Der Zeitstempel wird im abdruckbaren Format dargestellt. Dieser Wert ist Voreinstellung bei FRM2IN und FRMOUT. Bei FRMOUT werden auch die Felder für Milli- und Mikrosekunden versorgt.

*ISO4MIC
Der Zeitstempel wird im abdruckbaren Format dargestellt. Bei den Eingabe-Zeitstempeln wird die erhöhte Auflösung mit Milli- und Mikrosekunden erwartet.

*BINAR
Der Zeitstempel wird binär mit Halbwort-Festpunktzahlen dargestellt. Bei FRMOUT werden auch die Felder für Milli- und Mikrosekunden versorgt.

*BINARMIC
Der Zeitstempel wird binär mit Halbwort-Festpunktzahlen dargestellt. Bei den Eingabe-Zeitstempeln wird die erhöhte Auflösung mit Milli- und Mikrosekunden erwartet.

*TODR
Der Zeitstempel wird im Time-Of-Day-Register-Format dargestellt.

*TODX
Die Zeitspanne wird im erweiterten Time-Of-Day-Register-Format dargestellt.

adr
symbolische Adresse (Name) eines Feldes, das zuvor mit dem entsprechenden Equate geladen werden muss. Länge = 1 Byte.

(r)
r= Register mit dem Wert des entsprechenden Equates.

FRM1ZIN=

FRM2ZIN=

FRMZOUT=

gibt das Format der mitgegebenen (bei FRMxZIN) bzw. der gewünschten (bei FRMZOUT) zusätzlichen Zonen-Information an, die die Zeitbasis des spezifizierten Zeitstempels charakterisiert.
Die Angabe des Operanden ist zwingend, wenn für den betreffenden Zeitstempel die Zeitbasis „FZ“ angegeben wurde.

Für einen LTI-Eingabe-Zeitstempel kann vorgegeben werden, ob die für den Zeitstempel mitgegebene Information Sommer- oder Winterzeit ausgewertet werden soll. „*NONE“ bedeutet dabei keine Auswertung, andere Werte verlangen, dass das entsprechende Feld der Zonen-Information mit einem gültigen Wert gefüllt ist.

Im Falle des Ausgabe-Zeitstempels gibt der Operand FRMZOUT an, in welchem Format die Ausgabe der Zonen-Information erfolgt. Bei „*NONE“ wird das Format des Zeitstempels selbst übernommen (liegt das Format „*TODR“ vor, wird die Zonen-Information binär ausgegeben).

*NONE
Es wird keine Information mitgegeben.

*ISO4
Die Zonen-Information wird im abdruckbaren Format angegeben.

*ISO4LST
Die Zonen-Information wird im abdruckbaren Format angegeben. Die Adresse der CHDATE-Tabelle muss durch den Operanden CHDLxIN bzw. CHDLOUT bekanntgegeben werden.
Die Angabe in der Zonen-Information, ob es sich um einen Zeitstempel für Sommer- oder Winterzeit handelt, wird dabei nicht berücksichtigt. Der FZ-Zeitstempel wird mit dieser Tabelle verglichen und daraus die Sommer-/Winterzeit-Information gewonnen (siehe auch Beispiel auf "CTIME - Mit Zeitstempeln rechnen").

*BINAR
Die Zonen-Information wird binär als Halbwort-Festpunktzahl angegeben.

*BINARLST
Die Zonen-Information wird binär als Halbwort-Festpunktzahl angegeben. Die Adresse der CHDATE-Tabelle muss durch den Operanden CHDLxIN bzw. CHDLOUT bekanntgegeben werden.
Die Angabe in der Zonen-Information, ob es sich um einen Zeitstempel für Sommer- oder Winterzeit handelt, wird dabei nicht berücksichtigt. Der FZ-Zeitstempel wird mit dieser Tabelle verglichen und daraus die Sommer-/Winterzeit-Information gewonnen (siehe auch Beispiel auf "CTIME - Mit Zeitstempeln rechnen").

adr

symbolische Adresse (Name) eines Feldes, das zuvor mit dem entsprechenden Equate geladen werden muss. Länge = 1 Byte.

(r)
r= Register mit dem Wert des entsprechenden Equates.

FUNCT=

gibt an, welche Funktion des CTIME-Makros ausgeführt werden soll.

*CONV
Der 1. Eingabe-Zeitstempel wird in eine andere Darstellung konvertiert. Das Ergebnis wird in den Ausgabezeitstempel geschrieben.

*ADD
Die Eingabezeitspanne wird zum 1. Eingabe-Zeitstempel addiert. Das Ergebnis steht im Ausgabe-Zeitstempel. Die Eingabe-Zeitspanne kann auch negativ sein. Das Format der Eingabe-Zeitspanne wird mit dem Operanden FRMDIN angegeben.

*ADDLL
Wie bei *ADD wird die Eingabezeitspanne zum 1. Eingabe-Zeitstempel addiert.
Es wird jedoch berücksichtigt, dass zwischen dem Eingabe-Zeitstempel und dem Ausgabe-Zeitstempel ein Sommer-Winterzeit-Umstellungszeitpunkt ist. (Solche Umstellungstage sind nicht wie üblich 24 Stunden lang, sondern um die Umstellungsdifferenz verlängert oder verkürzt. Bei der Addition werden sie im Gegensatz zu *ADD trotzdem als 24-Stunden-Tage betrachtet.) Das Ergebnis steht im Ausgabe-Zeitstempel. Die Eingabe-Zeitspanne kann auch negativ sein.

Beispiel
Die Umstellung von Winter- auf Sommerzeit fand am 30.03.2008 um 02:00:00 statt.


Eingabe-Zeitstempel    2008-03-29,23:00:00
Eingabe-Zeitspanne         +00001-00:00:00 (1 Tag)
Ergebnis von *ADD      2008-03-31,00:00:00
Ergebnis von *ADDLL    2008-03-30,23:00:00


*DIFF
Es wird die Zeitdifferenz vom 2. Eingabe-Zeitstempel zum 1. Eingabe-Zeitstempel berechnet. Das Ergebnis steht in der Ausgabe-Zeitspanne.

adr
symbolische Adresse (Name) eines Feldes, das zuvor mit dem entsprechenden Equate geladen werden muss. Länge = 1 Byte.

(r)
r= Register mit dem Wert des entsprechenden Equates.

INF1IN=

INF2IN=

gibt an, wie bei dem jeweiligen Eingabe-Zeitstempel der Tag des Jahres angegeben ist.

*CALEND
Die Angabe erfolgt in der üblichen Darstellung von Monat und Tag des Monats.

*JULIAN
Die Angabe des Tages erfolgt in der julianischen Schreibweise: die Tage des Jahres werden, beginnend mit dem 1. Januar, fortlaufend durchgezählt.

adr
symbolische Adresse (Name) eines Feldes, das zuvor mit dem entsprechenden Equate geladen werden muss. Länge = 1 Byte.

(r)
r= Register mit dem Wert des entsprechenden Equates.

LINKADR=
gibt an, auf welche Weise dem Anwenderprogramm die Adresse des Einsprungpunktes IGTCTI für die CTIME-Routine im Subsystem GET-TIME zur Verfügung gestellt wird. Bei MF=E muss LINKADR angegeben werden, in allen anderen Fällen ist die Angabe von LINKADR wirkungslos.

*NONE
Bei der Übersetzung generiert der Assembler einen Externverweis für die Einsprungstelle IGTCTI, der beim Binden über die Autolink-Funktion des BLS aufgelöst wird.
Dieser Wert kann verwendet werden, wenn das Modul, das den CTIME-Aufruf enthält,

  • immer mit dem Dynamischen Bindelader DBL gebunden und geladen wird (in diesem Fall lässt man den CTIME in der E-Form eine V-Konstante absetzen, welche beim Ladevorgang durch das BLS versorgt wird) oder

  • mit dem BINDER (siehe Handbuch „BINDER“ [5]) unter der BINDER-Anweisung SET-EXTERN-RESOLUTION RESOLUTION=*STD gebunden wird.

linkadr
symbolische Adresse (Name) eines Wortes, in dem der Anwender vor dem CTIME-Aufruf die Adresse der Einsprungstelle IGTCTI bereitgestellt hat.
Das folgende Beispiel zeigt, wie dem Programm die Adresse der Einsprungstelle IGTCTI zunächst durch einen geeigneten BIND-Aufruf zur Verfügung gestellt und anschließend für den CTIME-Aufruf in das mit linkadr bezeichnete Wort übertragen werden kann:


         BIND   MF=E,PARAM=BINDPL
         :
         CTIME  MF=E,PARAM=OPLIST,LINKADR=AENTRY
         :
AENTRY   DS     F
OPLIST   CTIME  MF=L,...
BINDPL   BIND   MF=L,SYMBOL=IGTCTI,SYMBLAD=AENTRY


Auf diese Weise muss dem Anwenderprogramm die Einsprungadresse der CTIME-Routine immer dann mitgeteilt werden, wenn keiner der unter LINKADR=*NONE erwähnten Fälle vorliegt, z.B. also insbesondere dann, wenn das Modul mit dem CTIME-Aufruf z.B. mit dem BINDER unter der BINDER-Anweisung SET-EXTERN-RESOLUTION RESOLUTION=MANDATORY gebunden wird.

MF=
Zur allgemeinen Beschreibung des Operanden MF, der dazugehörenden Operandenwerte und der evtl. nachfolgenden Operanden (z.B. PREFIX, MACID und PARAM) siehe Abschnitt „S-Typ-Makroaufrufe“. Die gültigen MF-Werte sind zu Beginn der Makrobeschreibung bei „Makrotyp“ angegeben und aus dem Aufrufformat ersichtlich.

Bei der C-Form, D-Form oder M-Form des Makroaufrufs kann ein Präfix PREFIX und bei der C-Form oder M-Form zusätzlich eine Macid MACID angegeben werden (siehe AAbschnitt „S-Typ-Makroaufrufe“).

Bei der E-Form und der M-Form des Makroaufrufs wird das Label des Datenbereichs im Operanden PARAM angegeben. Der Datenbereich muss auf Doppelwort ausgerichtet sein. Voreinstellung: NTICPA
Beim Aufruf des Makros mit MF=L muss der Anwender dieses Label explizit angeben, sonst wird eine MNOTE ausgegeben.

Registerverwendung

Beim Aufruf des Makros CTIME werden folgende Register benötigt:

R1

wird vom Makro mit der Adresse des Datenbereichs geladen.

R13

ist vor dem Makroaufruf mit der Adresse eines 18 Worte langen Sicherstellungsbereiches
zu laden, den das aufrufende Programm zur Verfügung stellen muss.

R14

wird vom Makro mit der Rückkehradresse des Anwenderprogramms geladen.

R15

wird von der (über CTIME) gerufenen Routine überschrieben.

Rückinformation und Fehleranzeigen

Standardheader:

+---------------+
|   |   |   |   |
|c|c|b|b|a|a|a|a|
+---------------+

Über die Ausführung des Makros CTIME wird im Standardheader folgender Returncode übergeben (cc=Subcode2, bb=Subcode1, aaaa=Maincode):

cc

bb

aaaa

Erläuterung

00

00

0000

Funktion erfolgreich ausgeführt.


01

0001

Die Funktion wurde abgebrochen: Ein angegebener Zeitstempel im
Datenbereich ist fehlerhaft.
Maßnahme: Zeitstempel korrigieren.


01

0002

Die Funktion wurde abgebrochen: Die Zoneninformation zu einem angegebenen
Zeitstempel ist fehlerhaft.
Maßnahme: Zonen-Information korrigieren.


01

0003

Die Funktion wurde abgebrochen: Die Angabe einer Zeitspanne ist fehlerhaft.

Maßnahme: Zeitspannen-Angabe korrigieren.


01

0006

Die Funktion wurde abgebrochen: Die Spezifikation der Ein- oder Ausgabedaten
durch die Operanden im Datenbereich ist fehlerhaft.
Maßnahme: Spezifikation korrigieren.


01

000D

Die Funktion wurde abgebrochen: Die Adresse der CHDATEs-Tabelle wurde
nicht auf Wortgrenze ausgerichtet oder das Adressfeld ist leer.
Maßnahme: Programmkorrektur.


01

000E

Die Funktion wurde abgebrochen: Der Aufbau der CHDATEs-Tabelle ist
fehlerhaft. Die gewünschte Verarbeitung der Daten ist nicht möglich. Mögliche
Fehler sind:

  1. Das erste Byte jedes Eintrags ist nicht X'00' .

  2. Das letzte Byte jedes Eintrags ist nicht alternierend
    X'00' und X'01' .

  3. Die Einträge sind nicht monoton aufsteigend in Bezug auf den einzuordnenden
    Zeitstempel. Das kann daran liegen, dass

    • der Tabellenaufbau mit GTIME fehlerhaft erfolgte

    • z.B. nur CHDATEs für die kommenden zwei Jahre eingetragen
      wurden, aber ein Zeitstempel in drei Jahren eingeordnet werden soll;
      die der Tabelle folgenden Daten werden dann als Fortsetzung der
      Tabelle betrachtet.

  4. Die zeitliche Differenz zwischen zwei Einträgen (die ersten beiden
    Einträge ausgenommen) liegt nicht im Bereich von 4 bis 8 Monaten

Maßnahme:
Korrektur der Tabelle oder des tabellenaufbauenden Programms.

00

04

FFFF

Die Funktion wurde abgebrochen: Der Datenbereich ist nicht auf
Doppelwortgrenze ausgerichtet.
Maßnahme: Programmkorrektur.

02

00

0007

Warnung: Die Funktion wurde ausgeführt, der Ausgabe-Zeitstempel liegt
jedoch vor oder nach den Umstellungszeitpunkten. Es kann nicht entschieden
werden, ob es sich um einen Sommer- oder Winter-Zeitstempel handelt.
Es wird angenommen, dass ein Winterzeitstempel gewünscht wurde. Um die
Eindeutigkeit des Ausgabe-Zeitstempels zu erhalten, muss die Zoneninformation
mit abgespeichert werden. Diese Warnung kann nur bei einem LTI-
Zeitstempel auftreten oder bei einen FZ-Zeitstempel, dem eine CHDATE-Tabelle
mitgegeben wurde.

02


0008

Warnung: Die Funktion wurde ausgeführt, die Darstellung des angegebenen
Zeitstempels liegt jedoch in einem Umstellungszeitintervall, das eigentlich
nicht vorkommen kann. Es wird ein Winter-Zeitstempel angenommen. Wenn
bekannt ist, ob es sich um einen Sommer- oder Winter-Zeitstempel handelt,
kann diese Information mitgegeben werden (siehe Operand FRMnZIN). Diese
Warnung kann nur bei einem LTI-Eingabe-Zeitstempel auftreten oder bei
einem FZ-Zeitstempel, dem eine CHDATE-Tabelle mitgegeben wurde.
Maßnahme:
Wenn die Information vorhanden ist, ob es sich um einen Sommer- oder Win-
ter-Zeitstempel handelt, kann sie mitgegeben werden. Zur Verarbeitung dieser
Information muss der Operand FRMxZIN entsprechend gesetzt werden.

02


0009

Warnung: Eingabe-Zeitstempel nicht eindeutig.
Die Funktion wurde ausgeführt, die Darstellung des angebenen Zeitstempels
liegt jedoch in einem Umstellungsintervall, in dem die Darstellung doppelt
vorkommt.
Es wird ein Sommer-Zeitstempel angenommen.
Wenn bekannt ist, ob es sich um einen Sommer- oder Winter-Zeitstempel
handelt, kann diese Information mitgegeben werden (siehe Operand FRMn-
ZIN). Diese Warnung kann nur bei einem LTI-Eingabe-Zeitstempel auftreten
oder bei einem FZ-Zeitstempel, dem eine CHDATE-Tabelle mitgegeben wurde.


Maßnahme:
Wenn die Information vorhanden ist, ob es sich um einen Sommer- oder Win-
ter-Zeitstempel handelt, kann sie mitgegeben werden. Zur Verarbeitung dieser
Information muss der Operand FRMxZIN entsprechend gesetzt werden.

02


000A

Warnung: Ausgabe-Zeitstempel nicht eindeutig.
Die Funktion wurde ausgeführt, der Ausgabe-Zeitstempel liegt jedoch in
einem Zeitintervall am Umstellungszeitpunkt Sommer- auf Winterzeit, der
doppelt vorkommt.
Um die Eindeutigkeit des Ausgabe-Zeitstempels zu erhalten, muss die
Zoneninformation mit abgespeichert werden. Diese Warnung kann nur bei
einem LTI-Ausgabe-Zeitstempel auftreten oder bei einem FZ-Zeitstempel,
dem eine CHDATE-Tabelle mitgegeben wurde.

02


000B

Warnung: Die Funktion wurde ausgeführt, bei der Addition von einer
Zeitspanne zu einem Zeitstempel ist jedoch die obere Bereichsgrenze (s.
Wertebereiche) überschritten worden. Das Ausgabedatum erhält als Wert die
obere Bereichsgrenze.

02


000C

Warnung: Die Funktion wurde ausgeführt, bei der Subtraktion von einer
Zeitspanne von einem Zeitstempel ist jedoch die untere Bereichsgrenze (s.
Wertebereiche) unterschritten worden. Das Ausgabedatum erhält als Wert die
untere Bereichsgrenze.

02


000F

Warnung: Die Funktion wurde ausgeführt, der Ausgabe-Zeistempel liegt
jedoch in einem Umstellungszeitintervall, das eigentlich nicht vorkommen darf.
Diese Warnung kann nur bei Ausgabe-Zeitstempeln der *ADDLL-Funktion
vorkommen.

Weitere Returncodes, deren Bedeutung durch Konvention makroübergreifend festgelegt ist, können der Tabelle „Standard-Returncodes“ (Standardheader) entnommen werden.

Wenn Subcode1 ungleich Null ist, wird nur der Returncode im Standardheader gesetzt und keine weiteren Daten übertragen.

Das aufrufende Programm wird beendet, wenn folgende Fehler auftreten:

  • Der Datenbereich ist dem Aufrufer nicht zugewiesen.

  • Der Datenbereich ist nicht auf Doppelwortgrenze ausgerichtet.

  • Der Datenbereich ist gegen Schreibzugriff geschützt.

Beispiel für die Nutzung einer anwenderspezifischen Tabelle von CHDATEs

         TITLE 'GTIME and CTIME'
*
         PRINT NOGEN,BASE
         GPARMOD 31
*
CGTIME   @ENTR TYP=M
         BIND MF=E,PARAM=BINDPLG
         BIND MF=E,PARAM=BINDPLC
*
         LA    R1,GTPAR1
         USING NTIGPL,R1
         MVC   NTIGCHD(NTIGCHDL),=A(0,128) ----------------------------- (1)
         LA    R3,CHDATES ---------------------------------------------- (2)
*
         @CYCL ,
         GTIME MF=E,PARAM=(R1),LINKADR=AENTRYG ------------------------- (3)
         MVC   0(NTIGCHDL,R3),NTIGCHD ---------------------------------- (4)
         LA    R3,NTIGCHDL(R3) ----------------------------------------- (5)
*
         @WHEN NE
         CLC NTIGRET,=A(0)
         @BREA , ------------------------------------------------------- (6)
*
         @BEND ,
*
**********************************************************************
* Following this part of the program, the system's CHDATES are       *
* already stored in the CHDATES memory area.                         *
**********************************************************************
*
DTH1     LA    R1,CTPAR2
         USING NTICPL,R1
         CTIME MF=M,CHDLOUT=CHDATES
*
         RDATA MF=(E,READDATE) ----------------------------------------- (7)
         LA    R1,CTPAR2
         USING NTICPL,R1
         MVC   NTIC1MD(L'DATEDATE),DATEDATE ---------------------------- (8)
         MVC   NTIC1MT(L'DATETIME),DATETIME
         MVC   NTIC3MZ(14),=C'+01:00:-01:00-'
         CTIME MF=E,PARAM=(R1),LINKADR=AENTRYC ------------------------- (9)
*
END      @EXIT
*
**********************************************************************
* With the above section of the program, RDATA is used to read in a  *
* date in the format "yyyy mm dd hh mm ss" from the terminal and to  *
* convert it using the CTIME from UTC to FZ, taking into account the *
* CHDATEs table. The event is shown in ISO4 format in the parameter  *
* list in the output time stamp.                                     *
**********************************************************************
*
READDATE RDATA INDATE,0,MF=L ------------------------------------------- (10)
*
INDATE   DS    0CL30
DATELEN  DS    CL2
DATERES  DS    CL2
DATEDATE DS    CL10
DATESPAC DS    CL1
DATETIME DS    CL8
*
GTPAR1   GTIME MF=L,CHDATE=NEXT -----------------------------------------(3)
*
CTPAR2   CTIME MF=L,FUNCT=*CONV,BASE1IN=*UTC,FRM1IN=*ISO4,           C
               BASEOUT=*LTI,FRMOUT=*ISO4 ------------------------------- (9)
*
CHDATES  DS    100D ---------------------------------------------------- (11)
*
BINDPLG  BIND MF=L,SYMBOL=I@GTIME,SYMBLAD=AENTRYG
BINDPLC  BIND MF=L,SYMBOL=IGTCTI,SYMBLAD=AENTRYC
*
AENTRYG  DS    A
AENTRYC  DS    A
*
         @END   ,
**********************************************************************
* DSECTs                                                             *
**********************************************************************
*
NTICPL   CTIME MF=D
NTIGPL   GTIME MF=D
         END



(1)

Vorbelegung der GTIME-Parameterliste mit einem Wert, der sichert, dass die folgenden CHDATEs in chronologischer Reihenfolge geliefert werden.

(2)

In Register R3 wird die Speicheradresse des CHDATEs geladen.

(3)

Mit dem GTIME-Aufruf wird das erste bzw. nächstes CHDATE geholt.

(4)

Es wird im Speicherbereich gesichert.

(5)

Der Zeiger auf die CHDATEs-Tabelle wird um X'08' hochgezählt.

(6)

Die Schleife soll verlassen werden, wenn es kein nächstes CHDATE mehr gibt (oder im Fehlerfall).

(7)

Der RDATA fordert die Eingabe eines Datums über Datensichtstation an. Das Datum muss im Format yyyy-mm-dd hh:mm:ss eingegeben werden. Die Eingabe der Trennzeichen ist nicht erforderlich, es genügt jeweils ein Leerzeichen.

(8)

Der CTIME-Datenbereich wird mit Datum und Zone versorgt.

(9)

Der Eingabezeitstempel wird von UTC in LTI konvertiert. Der Ausgabezeitstempel soll - ebenso wie der Eingabezeitstempel - im ISO4-Format vorliegen.

(10)

RDATA-Datenbereich mit Definition des Eingabefeldes INDATE.

(11)

Bereichsdefinition für maximal 100 CHDATEs.


Ablaufprotokoll

/start-assembh
%  BLS0500 PROGRAM 'ASSEMBH', VERSION '<ver>' OF '<date>' LOADED
%  ASS6010 <ver> OF BS2000 ASSEMBH  READY 
//compile source=*library-element(macexmp.lib,cgtime), -
//        compiler-action=module-generation(module-format=llm), -
//        macro-library=$tsos.syslib.assembh.012, -  ------------------- (12)
//        module-library=macexmp.lib, -
//        listing=parameters(output=*library-element(macexmp.lib,cgtime)), -
//        test-support=*aid
%  ASS6011 ASSEMBLY TIME: 1605 MSEC
%  ASS6018 0 FLAGS, 0 PRIVILEGED FLAGS, 0 MNOTES
%  ASS6019 HIGHEST ERROR-WEIGHT: NO ERRORS
%  ASS6006 LISTING GENERATOR TIME: 101 MSEC
//end
%  ASS6012 END OF ASSEMBH
/add-file-link link-name=blslib00,file-name=$tsos.syslib.assembh.012 --- (13)
/load-executable-program library=macexmp.lib,element-or-symbol=cgtime, -
/     dbl-parameters=*par(resolution=*par(alternate-libraries=*yes))
%  BLS0523 ELEMENT 'CGTIME', VERSION '@' FROM LIBRARY
   ':2OSG:$QM212.MACEXMP.LIB' IN PROCESS
%  BLS0524 LLM 'CGTIME', VERSION ' ' OF '<date> <time>' LOADED
/%in dth1 <%d %@(chdates) -> %xl96>  ----------------------------------- (14)
/%in end <%d indate,%1 -> %xl232> -------------------------------------- (15)
/%r
*** TID: 005000D8 *** TSN: 2QSE ********************************************
CURRENT PC: 0000006A    CSECT: CGTIME  *************************************
V'00000208' = CGTIME   + #'00000208'  ---------------------------------- (16)
00000208 (00000208) 008FF960 489C4000 0090D566 AC464001    ..9-.. ...N... .
00000218 (00000218) 0091BA3A 1E2A4000 00929F0D 900E4001    .j.... ..k.... .
00000228 (00000228) 009383E1 01F24000 009468B4 73D64001    .lc..2 ..m...O .
00000238 (00000238) 00954D87 E5BA4000 0096325B 579E4001    .n(gV. ..o.$.. .
00000248 (00000248) 0097172E C9824000 009804CF 49A04001    .p..Ib ..q.... .
00000258 (00000258) 00FFFFFF FFFFFF00 0099CE76 2D684001    .~~~~~~..r.... .
*2012-01-20 14:36:35 --------------------------------------------------- (17)
SRC_REF:   230 SOURCE: CGTIME  PROC: CGTIME  *******************************
INDATE          = |....2012-01-20 14:36:35.......|
CURRENT PC: 00000098    CSECT: CGTIME  *************************************
V'00000120' = CGTIME   + #'00000120' ----------------------------------- (18)
00000120 (00000120) 00050702 00000000 01010001 01010001    ................
00000130 (00000130) 02010000 01010100 F2F0F1F2 60F0F160    ........2012-01-
00000140 (00000140) F2F0F0F0 F0404040 F1F47AF3 F67AF3F5    20000   14:36:35
00000150 (00000150) 00000000 00000000 00000000 00000000    ................
00000160 (00000160) 00000000 00000000 F0F0F0F0 60F0F060    ........0000-00-
00000170 (00000170) F0F0F0F0 F0404040 F0F07AF0 F07AF0F0    00000   00:00:00
00000180 (00000180) 00000000 00000000 00000000 00000000    ................
00000190 (00000190) 00000000 00000000 4EF0F0F0 F0F0F0F0    ........+0000000
000001A0 (000001A0) F0F0F060 F0F07AF0 F07AF0F0 00000000    000-00:00:00....
000001B0 (000001B0) 00000000 00000000 F2F0F1F2 60F0F160    ........2012-01-
000001C0 (000001C0) F2F0F0F2 F040C6D9 F1F57AF3 F67AF3F5    20020 FR15:36:35
000001D0 (000001D0) 4EF0F17A F0F060F0 F17AF0F0 60E6F0F0    +01:00-01:00-W00
000001E0 (000001E0) F0F0F0F0 00000208 00000000 0000016C    0000...........%
000001F0 (000001F0) 00000000 00000000 00000000 00000000    ................
00000200 (00000200) 00000000 00F8C180                      .....8A.



(12)

Bei der Assemblierung wird die Bibliothek angegeben, die die für strukturierte Programme benötigten @-Makros enthält.

(13)

Für den Ablauf von strukturierten Programmen wird ebenfalls die Bibliothek mit den @-Makros benötigt. Sie wird hier mit dem Linknamen BLSLIB00 und die Angabe ALTERNATE-LIBRARIES=*YES im Ladeaufruf zugewiesen.

(14)

An der symbolischen Adresse DTH1 soll die Tabelle der CHKDATEs ausgegeben werden.

(15)

An der symbolischen Adresse END sollen das Feld INDATE und die Operandenliste ausgegeben werden. Die Anfangsadresse der Operandenliste steht nach einem erfolgreichen CTIME-Aufruf im Register R1. Die Länge der Operandenliste beträgt 232 Byte (diese Information erhält man durch die Auflösung der DSECT mit CTIME MF=D).

(16)

Die symbolische Adresse DTH1 wurde erreicht. Die Tabelle der CHDATEs wird ausgegeben. Im System sind z.Zt. 10 CHDATEs bekannt. Sie liegen im TODR-Format vor, um 1 Byte nach rechts verschoben. Das Ende der CHDATEs-Tabelle markiert das System mit X'00FFFFFF FFFFFF00'.

(17)

Die Eingabe eines Zeitstempels wird angefordert (Prompt „*“).

(18)

Die symbolische Adresse END wurde erreicht. Der Inhalt des Feldes INDATE wird ausgegeben: Der eingegebene Zeitstempel wurde von RDATA korrekt eingelesen.

Ausgabe der Operandenliste:

  • Der 1. Eingabezeitstempel der Operandenliste entspricht dem von RDATA eingelesenen Zeitstempel „2012-01-20 14:36:35“. Die Zeitbasis ist UTC. Der Zeitstempel liegt im ISO4-Format vor.

  • Ein 2. Eingabezeitstempel wurde - ebenso wie die Eingabezeitspanne - nicht angegeben.

  • Der Ausgabezeitstempel (Zeitbasis LTI) liegt im ISO4-Format vor und enthält folgende Informationen:Der angegebene Tag ist der 20 Tag des Jahres und ein Freitag.Die aktuelle Zeit wurde neu berechnet. Die LTI-Zeit lautet „15:36:35“.Die Zonen-Information „+01:00-01:00-W“ gibt darüber Auskunft, dass die Zonen-Differenz zwischen UTC und LTI eine Stunde und die Differenz zwischen Sommer- und Normalzeit ebenfalls eine Stunde beträgt, und dass Winterzeit eingestellt ist („W“ wie Winter, Normalzeit; Sommerzeit würde mit „S“ wie „Sommer“ angezeigt werden).

  • Es wurde keine Ausgabezeitspanne berechnet.