-
Wenn ich das richtig verstehe, konvertierst Du die dezimalen Kunden-Nr. in Integer-Werte und speichest den HEX-Wert des Integers in einer Umsetzungstabelle.
Soweit so einfach! Aber es gibt keinen direkten Weg (zumindest ist mir keiner bekannt) aus dem Hex-Wert wieder einen Integer-Wert zu machen.
... allerdings was man nicht hat, schreibt man sich einfach.
Hier eine kleine Funktion (Hex-Konverter für Integer), die den bereits nach Hex konvertierten Integer-Wert empfängt und in einen numerischen Wert konvertiert.
Code:
Create or Replace Function YourSchema.ConvertHexToInt
( ParHexInteger VarChar(11) Default '0' )
Returns Integer
Language SQL
Modifies SQL Data
Deterministic
Specific CvtHex2Int
Called on NULL Input
Set Option
DATFMT = *ISO,
DBGVIEW = *SOURCE,
DECMPT = *COMMA,
TIMFMT = *ISO
Begin
Declare LocPower Integer Not NULL Default 0;
Declare LocCounter Integer Not NULL Default 0;
Declare RtnValue Integer Not NULL Default 0;
Set ParHexInteger = Trim(Leading '0' from Trim(ParHexInteger));
If Length(ParHexInteger) = 0 Then Return 0;
End If;
If Translate(Upper(ParHexInteger), ' ', '0123456789ABCDEF') > ''
Then Signal SQLSTATE 'XER01' Set Message_Text = 'Invalid characters';
End If;
Set LocPower = Length(ParHexInteger);
BegLoop: Loop
Set LocPower = LocPower - 1;
If LocPower < 0 Then Leave BegLoop;
End If;
Set LocCounter = LocCounter + 1;
Set RtnValue = RtnValue +
Case Upper(Substr(ParHexInteger, LocCounter, 1))
When 'A' Then 10
When 'B' Then 11
When 'C' Then 12
When 'D' Then 13
When 'E' Then 14
When 'F' Then 15
Else Substr(ParHexInteger, LocCounter, 1)
End * 16 ** LocPower;
End Loop;
Return RtnValue;
End;
SQL-Funktionen und Stored Procedures kann man im übrigen mit dem in Client Access oder Access Client Solutions (ACS) integrierten Debugger debuggen.
Um den SQL-Code debuggen zu können, muss ein SET OPTION Statement mit DBGVIEW = *SOURCE (s. mein Beispiel) integriert werden.
Über STRSQL zu debuggen ist schwierig und wenn kann man lediglich den generierten C-Code debuggen.
Ansonsten dürftest Du mit Deiner Funktion Probleme bekommen, wenn Du versuchst den alphanumerischen HEX-Wert in eine numerische/Integer Variable auszugeben. Spätestens beim 1. A wird ein NULL-Wert ausgegeben.
Birgitta
Similar Threads
-
By KingofKning in forum NEWSboard Programmierung
Antworten: 4
Letzter Beitrag: 05-04-17, 11:36
-
By KingofKning in forum NEWSboard Programmierung
Antworten: 4
Letzter Beitrag: 27-01-16, 10:59
-
By KingofKning in forum IBM i Hauptforum
Antworten: 12
Letzter Beitrag: 11-11-15, 11:40
-
By KingofKning in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 29-10-15, 09:32
-
By KingofKning in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 16-09-15, 19:21
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