B.Hauser
30-10-04, 10:35
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:
H DATEDIT(*DMY) DatFmt(*Eur)
*--------------------------------------------------------
D DateIso S D DatFmt(*Iso) inz(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.
/Free
MyTime = T'23:47:17';
/End-Free
Werden Zeitmarken-Literale verwendet, muss ein Z vorangestellt werden:
/Free
MyTimeStamp = Z'2004-10-30-11.33.44.000000';
/End-Free
Birgitta
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:
H DATEDIT(*DMY) DatFmt(*Eur)
*--------------------------------------------------------
D DateIso S D DatFmt(*Iso) inz(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.
/Free
MyTime = T'23:47:17';
/End-Free
Werden Zeitmarken-Literale verwendet, muss ein Z vorangestellt werden:
/Free
MyTimeStamp = Z'2004-10-30-11.33.44.000000';
/End-Free
Birgitta