PDA

View Full Version : Timestamp im CL generieren



Seiten : [1] 2 3

K_Tippi
29-10-25, 07:51
Hallo zusammen
ich benötige eine möglicht "Einfache" Lösung einen Timestamp in eine CL Variable zu bringen.
Ich soll beim cpytoimpf einen Timestamp in den Dateinamen einbauen.
also etw so 'timestamp_Dtei.csv"

Ein externes PGM was mir den Timestamp zurückliefert wollte ich möglichst nicht verwenden.

Klaus


Lösung gefunden rtvsysval qdatetime in 20 Stellen char

B.Hauser
29-10-25, 08:30
Ich nehme an, es geht um die aktuelle Zeitmarke?

Wenn ja: Die Zeitmarke aus dem System-Wert QDATTIM (mit RTVSYSVAL) ermitteln und dann entsprechend mit %SUBSTRING und *CAT auseinander dröseln und wie gewünscht wieder zusammensetzen.

Fuerchau
29-10-25, 13:06
Die einfachste Lösung ist ein Mini-RPGLE, vielseitg einsetzbar:

*entry plist
ptimestamp 26
ptimestamp = %char( %timstamp(*iso));
return;

Das Format ist automatisch mit yyyy-MM-dd HH:mm:ss.fffff
Mittles %scanrepl kannst du die ':' noch in '_' ersetzen oder entfernen und ggf per %subst die Millisekunden dann abschneiden.

Aber es gibt immer mehrere Lösungen.

PS:
Mit *ISO0 gibts keine Trennzeichen, also yyyyMMddHHmmssfff

Pikachu
29-10-25, 18:33
Der Trend geht wohl zum Rucksackprogramm.
Vielleicht geht ja auch noch was mit SQL in RPG...

Die Frage ist aber auch wie genau die Zeitmarke sein soll.
Darf sie immer 000 in den letzten Stellen stehen haben?


Die einfachste Lösung ist ein Mini-RPGLE, vielseitg einsetzbar:

*entry plist
ptimestamp 26
ptimestamp = %char( %timstamp(*iso));
return;

Das Format ist automatisch mit yyyy-MM-dd HH:mm:ss.fffff
Mittles %scanrepl kannst du die ':' noch in '_' ersetzen oder entfernen und ggf per %subst die Millisekunden dann abschneiden.

Aber es gibt immer mehrere Lösungen.

PS:
Mit *ISO0 gibts keine Trennzeichen, also yyyyMMddHHmmssfff

Fuerchau
29-10-25, 19:46
SQL kann da nicht mehr, als native RPGLE.
Modern heißt das i.Ü. nicht mehr Rucksackprogramm sondern Funktionsbaustein.
Es heißt ja auch nicht mehr objektorientierte sondern funktionsorientierte Programmierung.

Pikachu
30-10-25, 14:00
Vielleicht kann SQL genauere Zeitmarken?

Fuerchau
30-10-25, 15:07
Ja früher konnte SQL bereits mit 6 Microsekunden, die kann RPGLE jetzt aber auch (Seit 7.3):
https://www.ibm.com/docs/en/i/7.3.0?topic=functions-timestamp-convert-timestamp
Irgendwann davor waren es nur Millisekunden, also 3 Stellen, der Rest war 0.
Aber warum SQL-Overhead, wenn native auch klappt?

Pikachu
30-10-25, 17:26
Seit wann gibt’s Systemwert QDATETIME ?

Fuerchau
30-10-25, 17:31
Ich glaube auch erst seit V7.
Vorher war es halt immer sehr mühsam, da die Systemwerte auch noch vom Datumformat abhängig sind.
Oder man konnte RPG, RPGLE, COBOL und ggf. auch SQL.

Pikachu
30-10-25, 17:40
Also hier geht’s unter V5R4 aber vielleicht ging’s schon vorher!?