Zitat 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 1;                                 
    
LenHex   Len 2;                                       
    
AlphaNum = %Subst(AlphaHexStartHexLenHex 1);        
    
Packed   = %Dec(%Trim(AlphaNum): 110);                  
    
Sign     = %Subst(AlphaHexStartHex LenHex 11);    
    If 
Sign  'D';                                           
       
Packed -= Packed;                                      
    Endif;
    
Dsply Packed;                                                    
    *
InLR    = *On;                                           
 /
End-Free 
Birgitta