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).

Zeitvariable 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-Statements, 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 Null zurückgesetzt, wenn ein END TRANSACTION- oder BACKOUT TRANSACTION-Statement ausgeführt wird.

*TIMESTMP B8

Hardware-interner Zeitzähler (Store Clock).

Unter BS2000 ist dieser Wert als Ortszeit oder als GMT-Zeit verfügbar. Um die Konsistenz in allen Umgebungen sicherzustellen, enthält die Systemvariable *TIMESTMP unter BS2000 die GMT-Zeit.

*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 /        
*                                                
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   11.01.2005                        
DATE IN FORMAT DD/MM/YYYY   11/01/2005                        
DATE IN FORMAT DD-MON-YYYY  11-Jan-2005                       
DATE IN FORMAT DDMONYYYY    11Jan2005                         
DATE IN GREGORIAN FORM      11January  2005                   
DATE IN FORMAT YYYY-MM-DD   2005-01-11                        
DATE IN FORMAT YYYYDDD      2005011                           
DATE IN FORMAT YYYYMMDD     20050111                          
DATE IN FORMAT MM/DD/YYYY   01/11/2005                        
DATE IN INTERNAL FORMAT     2005-01-11                        
                                                              
                                                              
TIME IN FORMAT HH:II:SS.T   14:42:05.4                        
TIME IN FORMAT HHIISST      1442054                           
TIME IN INTERNAL FORMAT     14:42:05                          
                                                              
CURRENT DATE 2005-01-11   CURRENT DATE + 14 DAYS    2005-01-25
CURRENT TIME 14:42:05     CURRENT TIME + 10 SECONDS 14:42:15