Copies a one-byte unsigned character into a data structure at a specified position. You must declare a BDL string before using this function; see Data Structure Functions for further information.
This function can also be used to convert an ASCII representation of a hexadecimal string to a hexadecimal string by using a custom function. See the example below.
Kernel.bdh
SetUChar( inout sString : string, in nPos : number, in nChar : number ) : boolean;
true if successful
false otherwise
| Parameter | Description | 
|---|---|
| sString | BDL string corresponding to the data structure | 
| nPos | Insert position in the BDL string, where the first position is 1 (not 0) | 
| nChar | Unsigned character | 
dcltrans transaction TSetUChar const SIZE_STRUCT := 32; var myBDLstring : string(SIZE_STRUCT); bOk : boolean; begin // Set a one-byte unsigned character at position 32 // in the BDL string myBDLstring and thereby (through mapping) set // the element myUChar in Struct1 bOk := SetUChar(myBDLstring, 32, 255); if bOk then write("myUChar successfully set to 255"); writeln; else write("error setting myUChar"); writeln; end; end TSetUChar;
myUChar successfully set to 255
benchmark MyBenchmarkName
use "Kernel.bdh" 
dcluser  
  user
    VUser
  transactions
    TMain        : 1;
//converts each char to decimal value
dclfunc
  function GetDecFromAsciiHexStr(sAsciiHex: string): number
  var
    nDecPart : number;
    sTemp    : string;
    i, j     : number;
    nDec     : number;
    nFactor  : number;
  begin
   
    nDec := 0;
    for i:=1 to 2 do         
      sTemp[1]:=sAsciiHex[i];    
      
      if sTemp="0" then
        nDecPart := 0;
      elseif sTemp="1" then
        nDecPart := 1;
      elseif sTemp="2" then
        nDecPart := 2;
      elseif sTemp="3" then
        nDecPart := 3;
      elseif sTemp="4" then
        nDecPart := 4;
      elseif sTemp="5" then
        nDecPart := 5;
      elseif sTemp="6" then
        nDecPart := 6;
      elseif sTemp="7" then
        nDecPart := 7;
      elseif sTemp="8" then
        nDecPart := 8;
      elseif sTemp="9" then
        nDecPart := 9;
      elseif sTemp="A" then
        nDecPart := 10;
      elseif sTemp="B" then
        nDecPart := 11;
      elseif sTemp="C" then
        nDecPart := 12;
      elseif sTemp="D" then
        nDecPart := 13;
      elseif sTemp="E" then
        nDecPart := 14;
      elseif sTemp="F" then
        nDecPart := 15;
      end;       
      
      if i=1 then
        nDecPart := nDecPart*16;
      end;
      nDec := nDec + nDecPart;            
    end;
    
    GetDecFromAsciiHexStr := nDec;       
  end GetDecFromAsciiHexStr;
    
  
dcltrans
  transaction TMain
  var
    sStringWithHexVal: string;
    nLengthS         : number;
    sAsciiHex        : string;
    sHex             : string;
    nDec             : number;
    i, j             : number;
  begin
    
    //example of string to convert
    sStringWithHexVal := "03CA00000041";
    
    print("sStringWithHexVal: "+ sStringWithHexVal);    
    
    nLengthS := strlen(sStringWithHexVal);
    print("nLengthS: "+string(nLengthS));
    
    i := 1;
    j := 1;
    while i < nLengthS do   //rebuild string in hex using decimal values       
      sAsciiHex := sStringWithHexVal[i]+sStringWithHexVal[i+1];      
      nDec := GetDecFromAsciiHexStr(sAsciiHex);
      print(string(i)+": " + sAsciiHex + " -> " + string(nDec));
      SetUChar(sHex, j, nDec); 
      j:= j + 1;
      i:= i + 2;
    end;  
    
    writedata(sHex, BinLen(sHex), OPT_WRITEDATA_HEX); //result string
      
    
  end TMain;