Datums- und Zeit-Systemvariablen

#### Search Results

Search

# Datums- und Zeit-Systemvariablen

Dieses Dokument behandelt folgende Themen:

- Verwendung

- *DAT* - Datums-Systemvariablen

- *TIM* - Zeit-Systemvariablen

- Beispiel für Datums- und Zeit-Systemvariablen

## Verwendung

Die unten aufgeführten Datums- und Zeit-Systemvariablen können an den folgenden Stellen angegeben werden:

- Statements:

  - `COMPUTE`

  - `DISPLAY`

  - `MOVE`

  - `PRINT`

  - `WRITE`

- Logische Bedingungen

Der von Natural generierte Inhalt der Datums- und Zeit-Systemvariablen kann nicht verändert werden, d.h. Sie können keiner dieser Variablen in einem Natural-Programm einen anderen Wert zuweisen.

## *DAT* - Datums-Systemvariablen

Alle Datumsvariablen enthalten das aktuelle Datum. Das Format des Datums ist bei jeder Variablen anders, wie die folgende Tabelle zeigt.

Datumsvariable | Format/Länge | Datumsformat *
--- | --- | ---
`*DATD` | A8 | `DD.MM.YY`
`*DAT4D` | A10 | `DD.MM.YYYY`
`*DATE` | A8 | `DD/MM/YY`
`*DAT4E` | A10 | `DD/MM/YYYY`
`*DATG` | A15 | `DDmonthnameYYYY` (Gregorianisch)
`*DATI` | A8 | `YY-MM-DD`
`*DAT4I` | A10 | `YYYY-MM-DD`
`*DATJ` | A5 | `YYJJJ` (Julianisch)
`*DAT4J` | A7 | `YYYYJJJ` (Julianisch)
`*DATN` | N8 | `YYYYMMDD`
`*DATU` | A8 | `MM/DD/YY`
`*DAT4U` | A10 | `MM/DD/YYYY`
`*DATV` | A11 | `DD-MON-YYYY`
`*DATVS` | A9 | `DDMONYYYY`
`*DATX` | D | Internes Datumsformat

* `D` = Day (Tag), `J` = Jualianischer Kalendertag, `M` = Monat, Y = Year (Jahr), `MON` = führende drei Bytes des Monatsnamens wie in `*DATG`.

## *TIM* - Zeit-Systemvariablen

Zur Laufzeit wird der Inhalt einer Zeit-Systemvariablen jedes Mal von neuem ausgewertet, wenn die Variable in einem Natural-Programm referenziert wird. Das Format der Zeit ist für jede Zeit-Variable unterschiedlich (siehe unten).

Zeit-Variable | Format/Länge | Erklärung
--- | --- | ---
`*TIMD` (r) | N7 | Kann nur in Verbindung mit einem vorangegangenen `SETTIME`-Statement verwendet werden. Enthält die Zeit, die seit der Ausführung des `SETTIME`-Statements verstrichen ist. Format: `HHIISST` (*). `(r)` steht für das Statement-Label bzw. die Sourcecode-Zeilennummer des `SETTIME`-Statement, das als Basis für `*TIMD` verwendet wird. Wenn `*TIMD` benutzt wird, ohne zuvor ein `SETTIME`-Statement auszuführen, dann wird als Wert Null zurückgegeben.
`*TIME` | A10 | Enthält die aktuelle Uhrzeit im Format `HH:II:SS.T` (*).
`*TIME-OUT` | N5 | `*TIME-OUT` enthält die Anzahl der verbleibenden Sekunden, bevor die aktuelle Transaktion wegen Zeitüberschreitung abgebrochen wird (nur verfügbar unter Natural Security). `*TIME-OUT` ist `0`, wenn kein datenverändernder Datenbankzugriff erfolgt. `*TIME-OUT` kommt nur zum Tragen, wenn ein `FIND`-, `READ`- oder `GET`-Statement einen Datensatz zum Zwecke des Änderns oder Löschens liest. `*TIME-OUT` wird auf `0` zurückgesetzt, wenn ein `END TRANSACTION`- oder `BACKOUT TRANSACTION`-Statement ausgeführt wird.
`*TIMESTMP` | B8 | Hardware-interner Zeitzähler (Store Clock), dessen Wert von der Großrechner-Maschineninstruktion `STCK` (im Store Clock-Format) zur Verfügung gestellt wird. Weitere Informationen zur Bedeutung siehe IBM-Dokumentation. Die Verarbeitung von Store Clock-Werten wird im Leitfaden zur Programmierung > Weitere Programmieraspekte > Verarbeitung von Store Clock-Werten beschrieben.
`*TIMESTMPX` | B16 | Hardware-interner Zeitzähler (Store Clock), dessen Wert von der Großrechner-Maschineninstruktion `STCK` (im Store Clock Extended-Format) zur Verfügung gestellt wird. Weitere Informationen zur Bedeutung siehe IBM-Dokumentation. Die Verarbeitung von erweiterten Store Clock-Werten wird im Leitfaden zur Programmierung > Weitere Programmieraspekte > Verarbeitung von Store Clock-Werten beschrieben.
`*TIMN` | N7 | Enthält die aktuelle Uhrzeit im Format `HHIISST` (*).
`*TIMX` | T | Enthält die aktuelle Uhrzeit im internen Zeitformat.

* `H` = Hour (Stunde), `I` = Minute, `S` = Sekunde, `T` = Tenth of a second (Zehntelsekunde).

## Beispiel für Datums- und Zeit-Systemvariablen

    ** Example 'DATIVAR': Date and time system variables
    ************************************************************************
    DEFINE DATA LOCAL
    1 #DATE (D)
    1 #TIME (T)
    END-DEFINE
    *
    WRITE NOTITLE
      'DATE IN FORMAT DD.MM.YYYY  '   *DAT4D /
      'DATE IN FORMAT DD/MM/YYYY  '   *DAT4E /
      'DATE IN FORMAT DD-MON-YYYY '   *DATV  /
      'DATE IN FORMAT DDMONYYYY   '   *DATVS /
      'DATE IN GREGORIAN FORM     '   *DATG  /
      'DATE IN FORMAT YYYY-MM-DD  '   *DAT4I /
      'DATE IN FORMAT YYYYDDD     '   *DAT4J /
      'DATE IN FORMAT YYYYMMDD    '   *DATN (AD=L) /
      'DATE IN FORMAT MM/DD/YYYY  '   *DAT4U /
      'DATE IN INTERNAL FORMAT    '   *DATX (DF=L) ///
      'TIME IN FORMAT HH:II:SS.T  '   *TIME /
      'TIME IN FORMAT HHIISST     '   *TIMN (AD=L) /
      'TIME IN INTERNAL FORMAT    '   *TIMX /
      'TIME IN STORE CLOCK FORMAT '   *TIMESTMP /
      'TIME IN EXT. STCK FORMAT   '   *TIMESTMPX /
    *
    MOVE *DATX TO #DATE
    ADD 14 TO #DATE
    WRITE 'CURRENT DATE'              *DATX (DF=L) 3X
          'CURRENT DATE + 14 DAYS   ' #DATE (DF=L)
    *
    MOVE *TIMX TO #TIME
    ADD 100 TO #TIME
    WRITE 'CURRENT TIME'              *TIMX 5X
          'CURRENT TIME + 10 SECONDS' #TIME
    *
    END

Ausgabe des Programms `DATIVAR`:

    DATE IN FORMAT DD.MM.YYYY   02.12.2021
    DATE IN FORMAT DD/MM/YYYY   02/12/2021
    DATE IN FORMAT DD-MON-YYYY  02-Dec-2021
    DATE IN FORMAT DDMONYYYY    02Dec2021
    DATE IN GREGORIAN FORM      02December  2021
    DATE IN FORMAT YYYY-MM-DD   2021-12-02
    DATE IN FORMAT YYYYDDD      2021336
    DATE IN FORMAT YYYYMMDD     20211202
    DATE IN FORMAT MM/DD/YYYY   12/02/2021
    DATE IN INTERNAL FORMAT     2021-12-02

    TIME IN FORMAT HH:II:SS.T   14:12:43.2
    TIME IN FORMAT HHIISST      1412432
    TIME IN INTERNAL FORMAT     14:12:43
    TIME IN STORE CLOCK FORMAT  DAB39D476A7E3405
    TIME IN EXT. STCK FORMAT    00DAB39D476A7E340500000008150001

    CURRENT DATE 2021-12-02   CURRENT DATE + 14 DAYS    2021-12-16
    CURRENT TIME 14:12:43     CURRENT TIME + 10 SECONDS 14:12:53

### On this page

- Verwendung
- *DAT* - Datums-Systemvariablen
- *TIM* - Zeit-Systemvariablen
- Beispiel für Datums- und Zeit-Systemvariablen