
Zitat von
Souljumper
Ich hab allerdings das Problem das ich die Information per %subst aus einer anderen Datenstruktur abgreifen muss.
Hallo,
wenn der numerische Wert immer an der gleichen Stelle steht, dann lege einfach eine Datenstruktur an, in der der numerische Wert als gepacktes Feld definiert wird:
(Du brauchst Dich nicht mit irgendwelchen SUBSTRINGS herumzuärgern)
Beispiel:
PHP-Code:
D MyDS DS
D Anfang 5A
D Packed 5P 0
D Ende 5A
D Text S 13A inz(x'E7E7E7E7E712345FE7E7E7E7E7')
*------------------------------------------------------
/Free
MyDS = Text;
Dsply Packed;
*InLR = *On;
/End-Free
Wenn die Start-Position und Länge variabel sind wird es komplizierter. Am einfachsten ist, man konvertiert den String in eine Hexadezimale Darstellung und greift dann die numerischen Werte ab. Die Konvertierung in Hex-Werte ist am einfachsten mit der SQL-Funktion HEX.
Beispiel:
PHP-Code:
D Packed S 11P 0
D Text S 13A inz(x'E7E7E7E7E712345FE7E7E7E7E7')
D AlphaHex S 26A
D AlphaNum S 26A
D Start S 3U 0
D StartHex S 3U 0
D Len S 3U 0
D LenHex S 3U 0
D Sign S 1A
*---------------------------------------------------------
C/Exec SQL
C+ Set :AlphaHex = Hex(:Text)
C/End-Exec
/Free
Start = 6;
Len = 3;
StartHex = Start * 2 - 1;
LenHex = Len * 2;
AlphaNum = %Subst(AlphaHex: StartHex: LenHex - 1);
Packed = %Dec(%Trim(AlphaNum): 11: 0);
Sign = %Subst(AlphaHex: StartHex + LenHex - 1: 1);
If Sign = 'D';
Packed -= Packed;
Endif;
Dsply Packed;
*InLR = *On;
/End-Free
Birgitta
Bookmarks