Can't find the information you are looking for here? Then leave a message over on our WinBatch Tech Support Forum.
Keywords: bcd conversion bcdtodec
If itemlocate("udfbcdtodec_", IntControl(77,103,0,0,0), @tab) then goto skip_udfbcdtodec_ #DefineFunction udfBcdToDec_ (bb) ; the number is presented in a binary buffer ; The String Version numstr = "" icount = BinaryEodGet(bb)-2 For i=0 to icount byte = BinaryPeek(bb,i) numstr = StrCat(numstr,byte>>4) ; high nibble numstr = StrCat(numstr,byte&15) ; low nibble Next byte = BinaryPeek(bb,icount+1) numstr = StrCat(numstr,byte>>4) If ((byte&15)==13) then return (0-numstr) Return (0+numstr) ; this udf returns an integer value ; DD.20020131 #EndFunction :skip_udfbcdtodec_ If itemlocate("udfbcdtodec", IntControl(77,103,0,0,0), @tab) then goto skip_udfbcdtodec #DefineFunction udfBcdToDec (bb) ; the number is presented in a binary buffer ; The Number Version num = 0 icount = BinaryEodGet(bb)-2 For i=0 to icount byte = BinaryPeek(bb,i) num = 10*num + (byte>>4) ; high nibble num = 10*num + (byte&15) ; low nibble Next byte = BinaryPeek(bb,icount+1) num = 10*num + (byte>>4) If ((byte&15)==13) then return (-num) Return (num) ; this udf returns an integer value ; DD.20020131 #EndFunction :skip_udfbcdtodec ;--- test --- :test1 ; poke decimal number -7 into buffer bb = BinaryAlloc(1) numstr = "-7" BinaryPoke(bb,0,125) message("Demo udfBcdToDec(bb) The String Version",StrCat(numstr," = ",udfBcdToDec_(bb))) message("Demo udfBcdToDec(bb) The Number Version",StrCat(numstr," = ",udfBcdToDec(bb))) BinaryFree(bb) :test2 ; poke decimal number -4321 into buffer bb = BinaryAlloc(3) numstr = "-4321" BinaryPoke(bb,0,4) BinaryPoke(bb,1,50) BinaryPoke(bb,2,29) message("Demo udfBcdToDec(bb) The String Version",StrCat(numstr," = ",udfBcdToDec_(bb))) message("Demo udfBcdToDec(bb) The Number Version",StrCat(numstr," = ",udfBcdToDec(bb))) BinaryFree(bb) :test3 ; poke decimal number +000050 into buffer bb = BinaryAlloc(4) numstr = "+000050" BinaryPoke(bb,0,0) BinaryPoke(bb,1,0) BinaryPoke(bb,2,5) BinaryPoke(bb,3,12) message("Demo udfBcdToDec(bb) The String Version",StrCat(numstr," = ",udfBcdToDec_(bb))) message("Demo udfBcdToDec(bb) The Number Version",StrCat(numstr," = ",udfBcdToDec(bb))) BinaryFree(bb) Exit
Article ID: W15330
File Created: 2002:09:05:13:51:20
Last Updated: 2002:09:05:13:51:20