-
... 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