PDA

View Full Version : Datum "umdrehen"



Seiten : [1] 2

Jokersams
11-10-12, 07:10
Hallo liebes Forum,

ich habe folgendes Problem:
In der P Datei in der ich in meinem Quellcode drauf zugreife, steht das Datum im Format yyyymmdd, möchte es aber im Format ddmmyyyy ausgedruckt haben.

Also das Datum ist nichts vom System aus, sondern Manuell in dem Format yyyymmdd eingegeben worden.
Auf dieses numeric Feld greife ich zu, möchte es aber halt bevor ich es ausdrucke in das Format ddmmyyyy haben :)

Hat jemand eine konkrete Idee, wie man das bewerkstelligen könnte ?

LG

KingofKning
11-10-12, 08:12
Hallo liebes Forum,

ich habe folgendes Problem:
In der P Datei in der ich in meinem Quellcode drauf zugreife, steht das Datum im Format yyyymmdd, möchte es aber im Format ddmmyyyy ausgedruckt haben.

Hat jemand eine konkrete Idee, wie man das bewerkstelligen könnte ?

LG

Was wollen mir diese Worte sagen?

Was ist bei Dir Quellcode?

Am einfachsten kann man sowas mit SQL machen substr(digits Einfach mal im Forum nach suchen, ist oft behandelt worden

GG

Jokersams
11-10-12, 08:24
Ein einfaches Programm, welches eine Druckausgabe anhand der Daten einer P Datei erzeugen soll.

In dieser physical File stehen halt auch Daten drin, welches ein manuell eingegebenes Datum im Format yyyymmdd enthalten.

Ich rufe dieses Programm auf und im Spool wird mir das Datum dann natürlich auch in yyyymmdd ausgegeben.

Nun möchte ich im Programm selber sagen, dass bevor er diesen Satz drucken soll, zuerst das Datum irgendwie auf ddmmyyyy umstellen soll :D

Wär primär nur der schönheit halber

Danke für die Antoworten

B.Hauser
11-10-12, 08:25
Wie willst Du es denn andrucken, mit oder ohne Trennzeichen?
Ist das Feld alpha oder numerisch?


/Free
MyCharDate = %Char(%Date(NumDate: *ISO): *EUR); //TT.MM.JJJJ
MyNumDate = %Dec(%Date(NumDate: *ISO): *EUR); //TTMMJJJJ
/End-Free

MyCharDate ist 10A
MyNumDate ist 8,0

Birgitta

Jokersams
11-10-12, 08:28
Danke Birgitta.
Das Feld ist numerisch, und trennen wollte ich es per EDTCDE in der printerfile.

Probiere es jetzt mal aus

Jokersams
11-10-12, 08:37
Ich habe es jetzt mal so reingeschrieben:

ZZDATE = %dec(%Date(SKBDAT: *ISO): *EUR);

ZZDATE ist intern mit 8S 0 deklariert
SKBDAT ist das Feld in der physical file, welches die Zahlen enthält.

Fehler beim programmabruf:
Darums-, Zeit- oder Zeitmarkenwert ist ungültig.

Kann es sein, das dies nicht funktionieren kann, weil SKBDAT ein beliebiges 8S 0 num Feld ist, wo einfach Daten wie "20121011" per upddta reingeschrieben worden ?

ExAzubi
11-10-12, 09:21
Also man kann das auch anders machen

D DAT1 S D DATFMT(*ISO)
D DAT2 S D DATFMT(*EUR)

MOVEL SKBDAT DAT1
MOVEL DAT1 DAT2
MOVE DAT2 ZZDATE

Wichitg ist dafür nur das in SKBDAT gültige Werte enthält also 0 oder 20120231 wird nicht funktionieren?

Desweiteren würde ich dir empfehlen, das ZZDATE nicht num. zu definieren sondern 10A und dann DAT2 über die Funktion %CHAR.

Ganz billige Alternative über Datenstrukturen. Geht immer :)

Jokersams
11-10-12, 09:28
Das sieht schonmal gut aus, danke.

Aber du sagst das Werte wie "0" oder "20121011" nicht funktionieren würden ?

Das Problem ist ja, das SKBDAT genau diese Werte enthält :)

Also in SKBDAT stehen halt die Daten im Format 20121011, welche ich gerne in 11102012 hätte....

camouflage
11-10-12, 09:43
Versuchs mal so ...
Nimm Brigitta's Beispiel



/Free
MyCharDate = %Char(%Date(NumDate: *YYMD): *EUR); //TT.MM.JJJJ
MyNumDate = %Dec(%Date(NumDate: *YYMD): *EUR); //TTMMJJJJ
/End-Free

Anstelle der *ISO Definition schreibst Du *YYMD rein.

Jokersams
11-10-12, 09:51
Was soll das YYMD denn genau bewirken ?
Bekomm jedenfalls hier die Meldung, dass das Token ungültig ist und ein Operand erwartet, aber nicht gefunden wurde...

RPG ist schon anstrengend :>

Danke für die Antworten