Anmelden

View Full Version : Aktuelles Tagesdatum / Uhrzeit konvertieren



olbe
22-07-08, 11:36
Hi,

ich benötige in einem RPG-Programm das aktuelle Tagesdatum und die aktuelle Uhrzeit im Format CCJJMMTT bzw. HHMMSS.

Diese Werte über die TIME-Funktion zu erhalten, ist jetzt nicht das Problem. Aber der entsprechende Wert ist dann logischerweise erst einmal mit Trennzeichen versehen.

Wie bekomme ich möglichst einfach / elegant diesen aktuellen Wert in ein alphanumerisches Feld ohne Trennzeichen?

Danke!

Fuerchau
22-07-08, 11:50
%date(mydate:*CYMD0)
%time(mytime:*HMS0)

olbe
22-07-08, 12:14
Danke für die schnelle Antwort Fürchau!

Leider klappt es aber trotzdem nicht.
%date ist Free-Format oder? Damit hab ich bisher leider noch nichts zu tun gehabt.

Nachfolgend ein Programmausschnitt, wie ich es versucht habe:

*
D $datum_iso S D DATFMT(*ISO)
D $datum_alpha S 8A INZ(*BLANK)
*
C TIME $datum_iso
*
/free
$datum_alpha = %date($datum_iso:*CYMD0);
/end-free
*
C EVAL *inLR = *ON
C RETURN
*


Beim übersetzen des Programmes meldet der Compiler:
*RNF0605 20 1 der erste Parameter für %DATE ist ungültig.
*RNF7416 30 1 Die Arten der Operanden auf der rechten und linken Seite des
Ausdrucks in der Operation EVAL stimmen nicht überein.

B.Hauser
22-07-08, 12:39
Hallo,

%Date() ist eine Built-In-Funktion, die sowohl in der klassischen Schreibweise als auch im Free-Format eingesetzt werden kann.

Das Ergebnis aus einer %Date-Funktion ist ein echtes Datum. Wenn das Tagesdatum alphanumerisch ohne Trennzeichen ausgegeben werden soll, ist außerdem eine Konvertierung mit der Built-In-Funktion %Char erforderlich. Und das Datums-Format *CYMD hat das folgende Format XJJMMDD (wobei X das Jahrhundert ist, d.h.0 = 1900, 1 = 2000, ...)

Um das Tagesdatum alphanumerisch ohne Trennzeichen im Format JJJJMMTT aufzubereiten ist lediglich das folgende Statement erforderlich:


/Free
DatumA = %Char(%Date(): *ISO0);
/End-Free
Birgitta

RobertMack
22-07-08, 13:00
... das geht auch Un-Free ;-))



C Eval DatumA = %Char(%Date(): *ISO0)

olbe
22-07-08, 13:07
Danke Birgitta!

Hab ich dann jetzt auch verstanden und es klappt auch.

Kurze Nebenfrage:
Hat jemand einen Link zu einer aktuellen ILE RPG / Free-Format Reference?
Ich darf mich nämlich noch an der Version 3 aus Mai 1999 fortbilden:)

Pikachu
22-07-08, 13:44
So müßte es auch klappen:
D DATETIME S Z
D DATE1 S D DATFMT(*ISO)
D TIME1 S T TIMFMT(*HMS)
D DATETIME2 DS
D DATE2 8A
D TIME2 6A
D************************************************* *********************
C TIME DATETIME
C MOVE DATETIME DATE1
C MOVEL DATETIME TIME1
C *ISO0 MOVE DATE1 DATE2
C *HMS0 MOVE TIME1 TIME2
C************************************************* *********************
C MOVE *ON *INLR

Hier gibt es eine aktuelle ILE RPG Referenz (http://publib.boulder.ibm.com/infocenter/iadthelp/v7r0/topic/com.ibm.etools.iseries.langref.doc/c092508602.htm).

plinzen
22-07-08, 13:44
http://publib.boulder.ibm.com/iseries/v5r2/ic2924/books/c0925084.pdf

Bitte sehr.

Edit: Der Link von Pikachu ist besser!

B.Hauser
22-07-08, 14:01
Die aktuelle (sprich Release 6.1) ist hier:
ILE RPG Language Reference (http://publib.boulder.ibm.com/infocenter/systems/scope/i5os/topic/rzasd/sc092508.pdf)