PDA

View Full Version : ILE RPG aktuelles Datum



thommy
23-12-09, 13:42
Hallo Kollegen,

es ist mir sehr peinlich. Trotdem muß ich Euch fragen. Ich arbeite bisher immer mit RPGIV. Von ILE habe ich rel. wenig Ahnung. Nun zu meiner Frage: Wie kann ich das aktuelle Systemdatum abrufen. *date geht nicht. *ymd bringt mir nur immer den 1.1.2000. Ist es nur das Format?
Vielen Dank im voraus.
Thommy.
Ach ja, gibt es noch einen Leitfaden ILE, um reinzukommen in prozeduren imbeded..

woodstock99
23-12-09, 13:58
hi,

es gibt keine peinlichen/dummen fragen..

nur dumme antworten..


schau dir mal diesen link an

Code400.com, iSeries, OS/400 (http://www.code400.com/funwithdates.php)


evtl beantwortet er dir alle fragen und noch mehr :)

thommy
23-12-09, 14:04
Hallo Woodstock,

vielen Dank. Zum Teil bin ich zwischenzeitlich schon weitergekommen.

Viele Grüße und frohe Weihnachten.
Thommy

woodstock99
23-12-09, 14:30
yo wünsch ich dir auch :) .
die seite hat auch noch mehr beispiele von allem möglichen...
musst dir mal in ruhe anschauen .......

Fuerchau
24-12-09, 12:33
%date() liefert das aktuelle Datum. Wenn du das dezimal brauchst geht das mit:
%dec(%char(%date():*iso0):8:0)

Bogomil
30-12-09, 09:37
Hallo thommy,

*date funktioniert auch unter ILE RPG (zumindestens bis V5R4;).
Für das Format yyyymmdd muss in den H-Bestimmungen datedit(*YMD) angegeben werden.
Besser finde ich, die Build-In-Funktion %date zu verwenden.
Mit V5R4 hat die IBM sogar %dec erweitert: %dec(%date: *iso)

Bogomil

B.Hauser
31-12-09, 15:18
Hallo,

es muss zwischen Job- und System-Datum unterschieden werden.
Der OpCode TIME bzw die Built-in-Functions %DATE(), %TIME(), %TIMESTAMP() alle ohne Parameter liefern das System-Datum.

Die Sonderwerte *DATE und UDATE liefern das Job-Datum.

Das Job-Datum ist das Datum, an dem der aktuelle Job gestartet wurde. Wenn also der Job am Montag Morgen vom ersten Arbeiter gestartet wird, dann bis Freitag durchläuft liefert *DATE am Freitag immer noch das Datum vom Montag.

Das System-Datum ist immer das aktuelle Datum.

Wenn Du nicht im RPG-Free-Format arbeitest und das numerische System-Datum brauchst, kannst Du den OpCode TIME verwenden. Das Datum wird jedoch im Job-Datums-Format (z.B. TTMMJJJJ) ausgegeben.

Wenn Du im Free-Format arbeitest, kannst Du das numerische System-Datum so wie Baldur es angegeben hat ermitteln. Es geht jedoch auch einfacher:



/Free
//System-Datum im Format JJJJMMTT
SysDate = %Dec(%Date(): *ISO);
/End-Free


Übrigens das numerische Job-Datum wird wie folgt ermittelt:


/Free
//Job-Datum im Format JJJJMMTT
JobDate = %Dec(Date(*Date): *ISO);
/End-Free


Birgitta

Robi
15-01-10, 10:04
Hi Birgitta

Das hat man nun davon wenn man abschreibt ...


/FREE
RETURN %DEC(%DATE(): *ISO);
/END-FREE



*RNF0327 30 000088 Der erste Parameter für %DEC oder %DECH ist ungültig.
*RNF0328 30 000088 Der zweite Parameter für %DEC oder %DECH ist ungültig.
*RNF0338 20 000088 Der dritte Parameter für %DEC darf nicht fehlen, wenn der
zweite Parameter angegeben wird.

oder ist die Syntax bei Return anders ?
Gruß
Robi

B.Hauser
15-01-10, 10:22
Die Syntax ist schon in Ordnung, Du solltest allerdings für Release V5R3 oder höher umwandeln.

Sofern Du auf V5R2 runterwandeln musst, musst Du das Ganze wie folgt umsetzen:


/Free
Return (%Int(%Char(%Date(): *ISO0)));
/End-Free

Birgitta

Robi
15-01-10, 10:33
Grummel

Der Umwandel-Releasestand war tatsächlich auf V5R2 zurückgesetzt.
Da soll mal einer dauf kommen
Danke
Robi