From: d (David Margolies)

Subject: Re: [spr15013] Re: CLISP foreign functions

Date: 1996-8-5 19:15

Your problem report has been assigned a tracking id of spr15013.
Please use this id in the subject line of any mail related to
it so that we may better track communication on your inquiry.
Also, please address mail to <franz.com at bugs> as well as me,
so your questions can be answered if I am unavailable.


  Hi everybody,
   my problem is accessing MS-Access tables from Lisp, through Allegro ODBC,
  and, in particular, I have problems with float numbers.
  My tables looks like: (only Power is float)

    Number       Status    Power       Time
      1            1         0        2/8/98
      2            0        4.3       2/8/98

  if I execute

> (execute-sql "select Number, Status, Power,Time
from FM_Pump_Status_DDG51") I get ((1 1 0.0 "1998-02-08 00:00:00") (2 0 4.30000019073486 "1998-02-08 00:00:00")) ^^^^^^^^ So I'd like to know what is the junk at the end of 4.3; I'd like to mention that I do NOT have this problem when I write a float into the DB thruogh and Update SQL-statement. The real experts are away at AAAI, so what I say is not definitive. The junk at the end of that value is characteristic of converting a single float (4 byte representation) to a double (8 byte representation). Now, Allegro CL for Windows only supports doubles. If the value is stored in the database as a single, reading it into Lisp will cause junk to be added at the end, either because the value is 0-extended (which does not come out as decimal 0's) or because an extra 4 bytes was read (or just there) and it contained something. So, this might be happening because MS Access is working (or set up to work) with single floats in that slot and ACL is converting it to a double float. Does that correspond to the reality at your end? David Margolies Franz Inc.