-
CHAR in Zoned umsetzen RPG
Hallo,
ich habe ein Datum mit %Subst zusammengesetzt und muss es nun in ein Feld (8S 0) bringen. Wie konvertiere ich es??? Bin über jeden Tip dankbar.
-
Tja, leider etwas vernachlässigt, aber so gehts:
mynum = %subdt(mydate:*Y) * 10000 + %subdt(mydate:*M) * 100 + %subdt(mydate:*D);
-
*DMY MOVE Datumsfeld NumerischFeld
Statt *DMY einfach dein Datumsformat
*DMY
*YMD
*ISO
*EUR
etc.
angeben.
-
VORSICHT bei MOVE !
DATEDIT muss in den H-Bestimmungen gesetzt sein um ein Datum korrekt zu übersetzen.
Ggf. kommt es zu Fehlern wenn das Datum < 1.1.1940 bzw. > 31.12.2039 ist und das Zieldatum ist dann ggf. nur 6-stellig.
Da ist es mit den Extract-Funktionen %subdt auf jeden Fall sicherer.
-
Zitat von Wissbegierig
Hallo,
ich habe ein Datum mit %Subst zusammengesetzt und muss es nun in ein Feld (8S 0) bringen. Wie konvertiere ich es??? Bin über jeden Tip dankbar.
Hallo,
zunächst einmal eine Frage, wie sieht das zusammengepuzzelte Datum aus?
'JJJJ-MM-DD' oder JJJMMDD oder ....
Abhängig vom Format kann das Datum in ein numerisches Feld konvertiert werden. Die eine Variante sind 2 aufeinanderfolgende MOVE-Befehle, wobei beim ersten MOVE das alphanumerische Feld in ein echtes Datum konvertiert wird.
Beim 2. MOVE wird das Datum in ein numerisches Feld konvertiert. In Faktor 1 wird zunächst das Format des alphanumerischen Feldes (1.MOVE) angegeben. Beim 2. MOVE wird in Faktor2 das Ausgabe-Format in das numerische Feld angegeben. Datums-Werte sind immer als 4Byte Binär-Wert gespeichert und werden nur in RPG konvertiert. Für Berechnungen wird jedoch immer der Binär-Wert herangezogen.
Ansonsten hat man die Möglichkeit mehrere Built-in-Funktionen ineinander zu schachteln. Ab Release V5R3M0 können Datums-Werte direkt über die Funktion %DEC in numerische Felder konvertiert werden.
Anbei einige Beispiele:
PHP-Code:
D MyDate S D
D MyDate10A S 10A inz('2005-11-29')
D MyDate8A S 8A inz('29112005')
D MyDate6A S 6A inz('112905')
D MyDate8N S 8S 0
*--------------------------------------------------------
C Move MyDate10A MyDate
C Move MyDate MyDate8N
C MyDate8N Dsply
C clear MyDate8N
C *Eur0 Move MyDate8A MyDate
C Move MyDate MyDate8N
C MyDate8N Dsply
C clear MyDate8N
C movel '29-11-05' MyDate8A
C *DMY- Move MyDate8A MyDate
C Move MyDate MyDate8N
C MyDate8N Dsply
C clear MyDate8N
C *MDY0 Move MyDate6A MyDate
C Move MyDate MyDate8N
C MyDate8N Dsply
*--------------------------------------------------------
/Free
/If DEFINED (*V5R3M0)
Clear MyDate8N;
MyDate8N = %Dec(%Date(MyDate10A: *ISO));
Dsply MyDate8N;
Clear MyDate8N;
MyDate8A = '29112005';
MyDate8N = %Dec(%Date(MyDate8A: *Eur0));
Dsply MyDate8N;
Clear MyDate8N;
MyDate8A = '29-11-05';
MyDate8N = %Dec(%Date(MyDate8A: *DMY-));
Dsply MyDate8N;
Clear MyDate8N;
MyDate8N = %Dec(%Date(MyDate6A: *MDY0));
Dsply MyDate8N;
//-------------------------------------------------------
/ELSE
Clear MyDate8N;
MyDate8N = %Dec(%Char(%Date(MyDate10A: *ISO): *ISO0): 8: 0);
Dsply MyDate8N;
Clear MyDate8N;
MyDate8A = '29112005';
MyDate8N = %Dec(%Char(%Date(MyDate8A: *Eur0): *ISO0): 8: 0);
Dsply MyDate8N;
Clear MyDate8N;
MyDate8A = '29-11-05';
MyDate8N = %Dec(%Char(%Date(MyDate8A: *DMY-): *ISO0): 8: 0);
Dsply MyDate8N;
Clear MyDate8N;
MyDate8N = %Dec(%Char(%Date(MyDate6A: *MDY0): *ISO0): 8: 0);
Dsply MyDate8N;
/EndIf
*InLR = *ON;
/End-Free
Nähere Informationen zur Datums- und Zeitrechnung findest Du u.a. in folgendem Redbook Kapitel 9.3:
Modernizing IBM eServer iSeries Application Data Access - A Roadmap Cornerstone
Similar Threads
-
By mk in forum NEWSboard Java
Antworten: 8
Letzter Beitrag: 21-04-11, 21:51
-
By robertki in forum NEWSboard Programmierung
Antworten: 25
Letzter Beitrag: 19-01-07, 08:42
-
By timeless in forum IBM i Hauptforum
Antworten: 5
Letzter Beitrag: 11-01-07, 12:04
-
By Stoeberl in forum NEWSboard Programmierung
Antworten: 8
Letzter Beitrag: 10-01-07, 10:58
-
By jth in forum NEWSboard Programmierung
Antworten: 1
Letzter Beitrag: 21-12-06, 11:13
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