-
Datumsfunktion
Hallo zusammen!
Da mein erstes Problem hier so gut gelöst wurde, habe ich auch gleich die nächste Frage.
Ich habe ein Datum als String in einer Datei (Bsp: 6012011).
Jetzt möchte ich das in eine weitere Datei schreiben, in der das Feld allerdings als L (Datum) definiert ist.
Gibt es da eine Convert-Funktion?
Vielen Dank schonmal!
-
Ich denke
%date(%editw(%dec(MyStrDate:8:0):'0__.__.____'))
Die "_" müssen mit Blank ersetzt werden.
Die "0" am Anfang erzwingt die Vornull.
-
... da gibt es auch was komfortableres und besseres:
http://think400.dk/files/idate.zip
D*B
-
 Zitat von Fuerchau
Ich denke
%date(%editw(%dec(MyStrDate:8:0):'0__.__.____'))
Die "_" müssen mit Blank ersetzt werden.
Die "0" am Anfang erzwingt die Vornull.
Danke für den Tipp. Allerdings bekomme ich die Fehlermeldung:
Datums-, Zeit- oder Zeitmarkenwert ist ungültig.
Protokoll:
Datums-, Zeit- oder Zeitmarkenwert ist ungültig
Funktionsprüfung. RNX0112 nicht überwacht durch...
-
Wie wäre es damit:
Code:
/Free
Monitor;
RealDate = %Date(AlphaDate: *EUR0);
On-Error;
//Ungültiges Datum
EndMon;
/End-Free
Birgitta
-
 Zitat von B.Hauser
Wie wäre es damit:
Code:
/Free
Monitor;
RealDate = %Date(AlphaDate: *EUR0);
On-Error;
//Ungültiges Datum
EndMon;
/End-Free
Birgitta
Such hier tritt der gleiche Fehler, wie oben beschrieben, auf
-
... um es vielleicht mal zu verdeutlichen:
- die (korrekte) RPG Konvertierung geht nur im Programm
- die SQL Konvertierung kann man auch in einem Bulk Statement verwenden (schmiert aber bein ersten fehlerhaften Datum ab)
- iDate macht das als UDF und hat entsprechendes Error Handling, kann also sogar in eine View eingebaut werden
Die ersten beiden Varianten arbeiten nach dem MIC Printzip (Mist in Crash), die letztere nach dem MINO Prinzip (Mist in, Null out). Das ist auch die Ecke, an der du wahrscheinlich klebst (siehe dein Beispiel!!!)
D*B
-
Könnte es sein, dass der Feld-Inhalt linksbündig ausgerichtet ist und sofern der Tag nur 1-stellig ist (z.B. 1.12.2011) keine führende 0 enthält?
Könnte es auch weiter sein, dass einstellige Monate ohne führende 0 dargestellt sind?
Wenn nur ersteres zutrifft, könnte iDate noch funktionieren. Wenn beides zutrifft, wird es schwierig.
Wenn nur das erste zutrifft, musst Du halt die fehlende 0 davor setzen:
Code:
/Free
Monitor;
EvalR AlphaDate = '0' + %Trim(AlphaDate);
RealDate = %Date(AlphaDate: *EUR0);
On-Error;
//Ungültiges Datum
EndMon;
/End-Free
... das alphanumerische Datum sollte mit 8A definiert sein:
-
Das Problem mit der fehlenden Vornull lässt sich so lösen:
%date(%editc(%dec(DatNum:8:0):'X'):eur0)
Der Compiler ist da wohl irgendwie doof. H-Bestimmung wird ignoriert und der default für die %date-Funktion ist *ISO.
Also:
In Dezimal (8,0) konvertieren, per %editc(...:'X') in Zeichenkette umwandeln und mit explizitem *EUR0 in Datum umwandeln.
Mit Monitor solltest du das abfangen, falls kein gültiges Datum drinsteht.
-
Danke für die Hilfe!
Ich habe das mir jetzt so zusammengebastelt (es funktioniert sogar!)
%trim(%editw(myDat:'0 . . .'));
Und in der Datei hat das Feld ein Datumsformat mit (*EUR)
-
Mit %trim hatte ich das dann auch probiert, aber wenn man eine Funktion sparen kann .... .
-
 Zitat von philsturm
Und in der Datei hat das Feld ein Datumsformat mit (*EUR)
Das Datumsformat in der Datei ist uninteressant!
Das Datum wird als Binär-Wert gespeichert.
Das Datumsformat in der Datei wird nur dazu verwendet um den Binär-Wert mit (alten) Tools wie WRKF oder UPDDTA sichtbar zu machen.
... und wenn's schon darum geht eine Funktion zu sparen, warum nicht so:
Code:
/Free
RealDate = %Date(%Dec(AlphaDate: 8: 0): *EUR);
/End-Free
Birgitta
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks