Datums- und Zeit-Systemvariablen

Dieses Dokument behandelt folgende Themen:


Verwendung

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

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