1. Reading VB data
- Posted by Irv Mullins <irv at ELLIJAY.COM> May 24, 1999
- 340 views
I have some accounting data written with Visual Basic. The numbers are 8 bytes (reals, I guess). Can anyone tell me how to read these with Euphoria? Thanks, Irv
2. Re: Reading VB data
- Posted by "Boehme, Gabriel" <gboehme at POBOXB1.HQ.MSMAIL.MUSICLAND.COM> May 24, 1999
- 337 views
Irv Mullins wrote: >I have some accounting data written with Visual Basic. >The numbers are 8 bytes (reals, I guess). >Can anyone tell me how to read these with Euphoria? With 8 bytes, my guess would be that they're float64 values. If that's the case, read those 8 bytes into a sequence and use float64_to_atom() to convert them into Euphoria values. Be seeing you, Gabriel Boehme
3. Re: Reading VB data
- Posted by Irv <irv at ELLIJAY.COM> May 24, 1999
- 327 views
On Mon, 24 May 1999, Boehme, Gabriel wrote: > Irv Mullins wrote: > > >I have some accounting data written with Visual Basic. > >The numbers are 8 bytes (reals, I guess). > >Can anyone tell me how to read these with Euphoria? > > With 8 bytes, my guess would be that they're float64 values. If that's the > case, read those 8 bytes into a sequence and use float64_to_atom() to > convert them into Euphoria values. > Sounds like it would work, but all I got was 0.00 and -nan 's. Also tried reversing the sequence first, with worse results. Here's a snippet of the extracted data, along with the actual numbers typed in for comparison: Act.$ What Euphria reads: JRUBBERCO 04/01/99 117329 1 21.84 {32,85,3,0,0,0,0,0} JRUBBERCO 04/01/99 117329 0 1.32 {144,51,0,0,0,0,0,0} CASH 04/01/99 117330 1 4.31 {92,168,0,0,0,0,0,0} CASH 04/01/99 117330 0 0.26 {40,10,0,0,0,0,0,0} CASH 04/01/99 117331 4 (56.66) {184,90,247,255,255,255,255,255} CASH 04/01/99 117331 0 (3.40) {48,123,255,255,255,255,255,255} JOHNSONEA 04/01/99 117332 1 40.38 {88,41,6,0,0,0,0,0} JOHNSONEA 04/01/99 117332 0 2.43 {236,94,0,0,0,0,0,0} CASH 04/01/99 117333 99 0.00 {0,0,0,0,0,0,0,0} BENTTREEC 04/01/99 117334 1 16.17 {164,119,2,0,0,0,0,0} BENTTREEC 04/01/99 117334 0 0.97 {228,37,0,0,0,0,0,0} CHASTAINF 04/01/99 117335 1 8.88 {224,90,1,0,0,0,0,0} CHASTAINF 04/01/99 117335 0 0.54 {24,21,0,0,0,0,0,0} TRNRDAVID 04/01/99 117336 1 1.12 {192,43,0,0,0,0,0,0} TRNRDAVID 04/01/99 117336 0 0.07 {188,2,0,0,0,0,0,0} CLARKJIMMY 04/01/99 117337 1 24.15 {92,175,3,0,0,0,0,0} CLARKJIMMY 04/01/99 117337 0 1.15 {236,44,0,0,0,0,0,0} PICCOCOMM 04/01/99 117338 9 86.71 {28,59,13,0,0,0,0,0} POOLED 04/01/99 117339 1 19.78 {168,4,3,0,0,0,0,0} POOLED 04/01/99 117339 0 1.19 {124,46,0,0,0,0,0,0} ... and so on... Sure would appreciate some help ! Irv
4. Re: Reading VB data
- Posted by Irv <irv at ELLIJAY.COM> May 24, 1999
- 324 views
On Mon, 24 May 1999, Boehme, Gabriel wrote: > Irv Mullins wrote: > > >I have some accounting data written with Visual Basic. > >The numbers are 8 bytes (reals, I guess). > >Can anyone tell me how to read these with Euphoria? > > With 8 bytes, my guess would be that they're float64 values. If that's the > case, read those 8 bytes into a sequence and use float64_to_atom() to > convert them into Euphoria values. > Sounds good, but no luck. Just a series of 0.00 and -nan 's ... Below is a clip of the extracted data, as Euphoria sees it. Everything works except for the $ amounts - I have added the actual amts. so maybe someone can tell me how to convert: Act.$ What Euphria reads: JRUBBERCO 04/01/99 117329 1 21.84 {32,85,3,0,0,0,0,0} JRUBBERCO 04/01/99 117329 0 1.32 {144,51,0,0,0,0,0,0} CASH 04/01/99 117330 1 4.31 {92,168,0,0,0,0,0,0} CASH 04/01/99 117330 0 0.26 {40,10,0,0,0,0,0,0} CASH 04/01/99 117331 4 (56.66) {184,90,247,255,255,255,255,255} CASH 04/01/99 117331 0 (3.40) {48,123,255,255,255,255,255,255} JOHNSONEA 04/01/99 117332 1 40.38 {88,41,6,0,0,0,0,0} JOHNSONEA 04/01/99 117332 0 2.43 {236,94,0,0,0,0,0,0} CASH 04/01/99 117333 99 0.00 {0,0,0,0,0,0,0,0} BENTTREEC 04/01/99 117334 1 16.17 {164,119,2,0,0,0,0,0} BENTTREEC 04/01/99 117334 0 0.97 {228,37,0,0,0,0,0,0} CHASTAINF 04/01/99 117335 1 8.88 {224,90,1,0,0,0,0,0} CHASTAINF 04/01/99 117335 0 0.54 {24,21,0,0,0,0,0,0} TRNRDAVID 04/01/99 117336 1 1.12 {192,43,0,0,0,0,0,0} TRNRDAVID 04/01/99 117336 0 0.07 {188,2,0,0,0,0,0,0} CLARKJIMMY 04/01/99 117337 1 24.15 {92,175,3,0,0,0,0,0} CLARKJIMMY 04/01/99 117337 0 1.15 {236,44,0,0,0,0,0,0} PICCOCOMM 04/01/99 117338 9 86.71 {28,59,13,0,0,0,0,0} POOLED 04/01/99 117339 1 19.78 {168,4,3,0,0,0,0,0} POOLED 04/01/99 117339 0 1.19 {124,46,0,0,0,0,0,0} ... and so on... Thanks! Irv
5. Re: Reading VB data
- Posted by "Boehme, Gabriel" <gboehme at POBOXB1.HQ.MSMAIL.MUSICLAND.COM> May 24, 1999
- 351 views
- Last edited May 25, 1999
Irv Mullins wrote: >>>I have some accounting data written with Visual Basic. >>>The numbers are 8 bytes (reals, I guess). >>>Can anyone tell me how to read these with Euphoria? >> >>With 8 bytes, my guess would be that they're float64 values. If that's >>the case, read those 8 bytes into a sequence and use float64_to_atom() >>to convert them into Euphoria values. > >Sounds like it would work, but all I got was 0.00 and -nan 's. >Also tried reversing the sequence first, with worse results. >Here's a snippet of the extracted data, along with the actual >numbers typed in for comparison: > Act.$ What Euphria reads: > > JRUBBERCO 04/01/99 117329 1 21.84 {32,85,3,0,0,0,0,0} > JRUBBERCO 04/01/99 117329 0 1.32 {144,51,0,0,0,0,0,0} > CASH 04/01/99 117330 1 4.31 {92,168,0,0,0,0,0,0} > CASH 04/01/99 117330 0 0.26 {40,10,0,0,0,0,0,0} > CASH 04/01/99 117331 4 (56.66) {184,90,247,255,255,255,255,255} > CASH 04/01/99 117331 0 (3.40) {48,123,255,255,255,255,255,255} > JOHNSONEA 04/01/99 117332 1 40.38 {88,41,6,0,0,0,0,0} > JOHNSONEA 04/01/99 117332 0 2.43 {236,94,0,0,0,0,0,0} > CASH 04/01/99 117333 99 0.00 {0,0,0,0,0,0,0,0} > BENTTREEC 04/01/99 117334 1 16.17 {164,119,2,0,0,0,0,0} > BENTTREEC 04/01/99 117334 0 0.97 {228,37,0,0,0,0,0,0} > CHASTAINF 04/01/99 117335 1 8.88 {224,90,1,0,0,0,0,0} > CHASTAINF 04/01/99 117335 0 0.54 {24,21,0,0,0,0,0,0} > TRNRDAVID 04/01/99 117336 1 1.12 {192,43,0,0,0,0,0,0} > TRNRDAVID 04/01/99 117336 0 0.07 {188,2,0,0,0,0,0,0} > CLARKJIMMY 04/01/99 117337 1 24.15 {92,175,3,0,0,0,0,0} > CLARKJIMMY 04/01/99 117337 0 1.15 {236,44,0,0,0,0,0,0} > PICCOCOMM 04/01/99 117338 9 86.71 {28,59,13,0,0,0,0,0} > POOLED 04/01/99 117339 1 19.78 {168,4,3,0,0,0,0,0} > POOLED 04/01/99 117339 0 1.19 {124,46,0,0,0,0,0,0} > ... and so on... > >Sure would appreciate some help ! I think I've got it. Believe it or not, those are actually 64-bit signed *integer* values. To get VB's dollar amount, divide the integer value by 10,000. Here's a quick solution which should work for dollar values in the range abs(x) <= $214,748.3647: ----------- include machine.e function VBfloat_to_atom(sequence s) -- our 8-byte sequence -- works for values in the range abs(x) <= 214,748.3647 atom x x = bytes_to_int(s[1..4]) -- ignore the last 4 bytes (quick fix) if x > #7FFFFFFF then -- handle negative value x = x - #100000000 -- power(2, 32) end if return x / 10000 end function ----------- I tested this routine for all of the above data, and the printed results were 100% correct! :) Be seeing you, Gabriel Boehme
6. Re: Reading VB data
- Posted by Irv <irv at ELLIJAY.COM> May 24, 1999
- 353 views
- Last edited May 25, 1999
On Mon, 24 May 1999, Boehme, Gabriel wrote: > Irv Mullins wrote: > > >>>I have some accounting data written with Visual Basic. > >>>The numbers are 8 bytes (reals, I guess). > >>>Can anyone tell me how to read these with Euphoria? > >Sure would appreciate some help ! <snip sample output> > I think I've got it. Believe it or not, those are actually 64-bit signed > *integer* values. To get VB's dollar amount, divide the integer value by > 10,000. Here's a quick solution which should work for dollar values in the > range abs(x) <= $214,748.3647: > > ----------- > include machine.e > > function VBfloat_to_atom(sequence s) -- our 8-byte sequence > -- works for values in the range abs(x) <= 214,748.3647 > atom x > x = bytes_to_int(s[1..4]) -- ignore the last 4 bytes (quick fix) > if x > #7FFFFFFF then > -- handle negative value > x = x - #100000000 -- power(2, 32) > end if > return x / 10000 > end function > ----------- > > I tested this routine for all of the above data, and the printed results > were 100% correct! :) Indeed it is! Thanks VERY much for the answer! Regards, Irv