Hallo,

hier einige Erklärungen:

1. Wie wird ein Datums- oder Zeit-Feld definiert?
1.1. im DDS mit L für Datum, T für Zeit und Z für Zeitmarke jeweils ohne Längenangabe
1.2. in RPG mit D für Datum, T für Zeit und Z für Zeitmarke jeweils ohne Längenangabe

2. Welches Datums-Format wird in RPG verwendet?
2.1. Das Format, das in den D-Bestimmungen bei der Definition des Datums- oder Zeitfeldes im Schlüssel-Wort DATFMT angegeben wurde.
2.2. Wurde in den D-Bestimmungen das Schlüssel-Wort DATFMT nicht angegeben, gilt das Datumsformat, das im Schlüssel-Wort DATFMT in den H-Bestimmungen angegeben wurde.
2.3. Wurde das Schlüssel-Wort DATFMT weder in den D- noch in den H-Bestimmungen angegeben, wird das Datums-Format *ISO verwendet.

Für die Zeit gilt das Ganze analog nur mit dem Schlüssel-Wort TIMFMT.

Für Zeitmarken gibt es im Moment nur das ISO-Format.

3. Wie wird ein Datums-Feld initialisiert?
Im Gegensatz zu SQL kann RPG eine alphanumerische Repräsentation eines Datums oder einer Zeit als Datum oder Zeit erkennen und verwenden.

Aber es ist nicht notwendig Built-in-Funktionen zu benutzen.
Bei Datums-Feldern genügt ein D vor das Literal zu stellen. Der String muss allerdings das Format, das in den H-Bestimmungen angegeben wurde oder ,sofern das Schlüssel-Wort DATFMT nicht in den H-Bestimmungen angegeben wurde, im Format *ISO aufbereitet sein.

Beispiel:
PHP-Code:
H DATEDIT(*DMYDatFmt(*Eur)             
 *--------------------------------------------------------
D DateIso         S               D   DatFmt(*Isoinz(D'30.10.2004')  
D DateDMY         S               D   DatFmt(*DMY-)
 *--------------------------------------------------------
  /
Free                                            
     
If DateIso >= D'15.10.2004';                 
        
Dsply DateIso;                            
     EndIf;    
                                   
     
DateDMY D'30.10.2004';    
                 
     If 
DateDMY DateIso;                        
        
Dsply DateDMY;                            
     EndIf;
                                       
     *
InLR = *On;                                 
 /
End-Free 
Das gilt analog auch für die Zeit-Felder. Bei Zeit-Literalen muss ein T vorangestellt werden.

PHP-Code:
 /Free
     MyTime 
T'23:47:17';
 /
End-Free 
Werden Zeitmarken-Literale verwendet, muss ein Z vorangestellt werden:
PHP-Code:
 /Free
    MyTimeStamp 
Z'2004-10-30-11.33.44.000000';
 /
End-Free 
Birgitta