-
RPGLE konvertieren Alpha nach Dezimal
Hallo Allerseits,
ich glaube, ich stehe gerade auf dem Schlauch..... Bitte um Hilfe!!!
Ich habe ein Feld, definiert als 10A.
Der Inhalt ist z.b. ' 4951,00'
Dann habe ich ein Feld, definiert als 15P 2
und möchte, dass im Feld 2 dann der numerische Wert 4951,00 drinsteht.
Ich krieg es gerade nicht hin.....
Kann mir jemand helfen?
Vielen Dank schonmal.....
MfG
Alexander May
-
%dec(Alpha:Länge:NK)
z.B. %DEC(FELD:15:2)
Ob Komma oder Punkt entscheidet die H-Bestimmung DECEDIT.
-
[QUOTE=Fuerchau;61695Ob Komma oder Punkt entscheidet die H-Bestimmung DECEDIT.[/QUOTE]
Ob Komma oder Punkt ist völlig egal. (Der String darf nur keine zusätzlichen Tausender-Punkte oder Kommata enthalten).
Unabhängig von der Einstellung in den H-Bestimmungen kann beides konvertiert werden.
Birgitta
-
Hallo Ihr beiden,
Danke für die Beiträge, hab es hinbekommen.
Manchmal steht man echt auf der Leitung oder der Tag is einfach zu lang.
Schönen Abend noch....
-
@Birgitta
Ich habe das aber ausprobiert.
Wenn ich DECEDIT nicht korrekt angebe, gibts beim %DEC einen MCH-Fehler.
-
Also beim mir läuft das folgende Programm ohne Probleme und soweit ich mich erinnern kann hat %DEC auch immer korrekt funktioniert.
PHP-Code:
H DEBUG DECEDIT('0,') DATEDIT(*DMY.) DATFMT(*ISO)
*****************************************************************
D Alpha S 15A
D Numer S 11P 2
D Index S 3U 0
D PGMSDS SDS
D SDSMsgTxt 91 120
*****************************************************************
/Free
For Index = 1 to 7;
Select;
When Index = 1;
Alpha = '11111';
When Index = 2;
Alpha = '22222,22';
When Index = 3;
Alpha = '3333.333';
When Index = 4;
Alpha = ' 4 4 4, 44';
When Index = 5;
Alpha = ' 55 5.5 5';
When Index = 6;
Alpha = '-66 6.66';
When Index = 7;
Alpha = '77777, 77-';
EndSl;
Monitor;
Numer = %Dec(Alpha: 11: 2);
Dsply ('Numer: ' + %Char(Numer));
On-Error;
Dsply (%Trim(Alpha) + SDSMsgTxt);
EndMon;
EndFor;
*InLR = *On;
/End-Free
MCH-Fehler bedeuten, dass eigentlich ein Parameter/Wert fehlt und nicht, dass ein falscher Wert eingegeben wurde.
-
... dann kann das zaubern, oder rät und macht dann bei %dec(100.000) mal hundert und mal hunderttausend draus und hat damit immerhin eine Trefferquote von 50%, was für RPG garnicht mal so schlecht ist.
D*B
 Zitat von B.Hauser
Unabhängig von der Einstellung in den H-Bestimmungen kann beides konvertiert werden.
Birgitta
-
@Dieter
wie zuvor bereits erwähnt, Tausender Punkte werden ignoriert, d.h. er rät nicht, sondern 100.000 wird nach den Regeln in 100 konvertiert!!!
Birgitta
-
heißt jetzt ohne Probleme, dass 1 und 2 funzt und der Rest auf den Hammer läuft, sprich durch den error Block des monitor läuft?
Alles andere verursacht ja im Zweifel Probleme!!!
D*B
 Zitat von B.Hauser
Also beim mir läuft das folgende Programm ohne Probleme und soweit ich mich erinnern kann hat %DEC auch immer korrekt funktioniert.
PHP-Code:
H DEBUG DECEDIT('0,') DATEDIT(*DMY.) DATFMT(*ISO)
*****************************************************************
D Alpha S 15A
D Numer S 11P 2
D Index S 3U 0
D PGMSDS SDS
D SDSMsgTxt 91 120
*****************************************************************
/Free
For Index = 1 to 7;
Select;
When Index = 1;
Alpha = '11111';
When Index = 2;
Alpha = '22222,22';
When Index = 3;
Alpha = '3333.333';
When Index = 4;
Alpha = ' 4 4 4, 44';
When Index = 5;
Alpha = ' 55 5.5 5';
When Index = 6;
Alpha = '-66 6.66';
When Index = 7;
Alpha = '77777, 77-';
EndSl;
Monitor;
Numer = %Dec(Alpha: 11: 2);
Dsply ('Numer: ' + %Char(Numer));
On-Error;
Dsply (%Trim(Alpha) + SDSMsgTxt);
EndMon;
EndFor;
*InLR = *On;
/End-Free
MCH-Fehler bedeuten, dass eigentlich ein Parameter/Wert fehlt und nicht, dass ein falscher Wert eingegeben wurde.
-
???
solll das jetzt heißen, das sowohl Punkt als auch Komma immer Dezimalzeichen sind
???
das wäre ja noch schlimmer als raten
 Zitat von B.Hauser
@Dieter
wie zuvor bereits erwähnt, Tausender Punkte werden ignoriert, d.h. er rät nicht, sondern 100.000 wird nach den Regeln in 100 konvertiert!!!
Birgitta
-
 Zitat von BenderD
heißt jetzt ohne Probleme, dass 1 und 2 funzt und der Rest auf den Hammer läuft, sprich durch den error Block des monitor läuft?
Alles andere verursacht ja im Zweifel Probleme!!!
D*B
Die alphanumerischen Werte werden auch dann, wenn der Monitor-Block fehlt konvertiert!
PHP-Code:
Job 029946/HAUSER/HS_S01A im Subsystem QINTER
DSPLY Numer: 11111,00
DSPLY Numer: 22222,22
DSPLY Numer: 3333,33
DSPLY Numer: 444,44
DSPLY Numer: 555,55
DSPLY Numer: -666,66
DSPLY Numer: -77777,77
Similar Threads
-
By Mr.iSeries in forum IBM i Hauptforum
Antworten: 6
Letzter Beitrag: 17-01-07, 10:57
-
By Xanas in forum NEWSboard Programmierung
Antworten: 1
Letzter Beitrag: 13-12-06, 13:38
-
By christian_lettner in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 16-11-06, 10:15
-
By edig in forum NEWSboard Programmierung
Antworten: 1
Letzter Beitrag: 27-07-06, 08:20
-
By TomWaf in forum NEWSboard Programmierung
Antworten: 4
Letzter Beitrag: 12-05-06, 09:07
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