Index: combined/src/odbc/parameter.lisp
===================================================================
--- combined/src/odbc/parameter.lisp	(revision combined,2.1.2)
+++ combined/src/odbc/parameter.lisp	(revision combined,2.1.5)
@@ -54,5 +54,4 @@
       param)))
 
-;;;; dso: not so sure about this one and its callers
 (defun bind-parameter (hstmt pos param)
   (setf (slot-value param 'ind-ptr)
@@ -97,5 +96,4 @@
   ())
 
-;; dso+
 (defmethod initialize-parameter ((param string-parameter) args)
   (let ((length-of-buffer (or (car args) *default-string-parameter-size*)))
@@ -109,5 +107,4 @@
       (setf value-ptr (alloc-chars length-of-buffer)))))
 
-;; dso+
 (defmethod set-parameter-value ((param string-parameter) value)
   (cond
@@ -123,5 +120,4 @@
            (length value)))))
 
-;; dso+
 (defmethod get-parameter-value ((param string-parameter))
   (let ((len (cffi:mem-ref (slot-value param 'ind-ptr) 'sql-len)))
@@ -137,5 +133,4 @@
   ())
 
-;; dso+
 (defmethod initialize-parameter ((param unicode-string-parameter) args)
   (let ((length-of-buffer
@@ -150,5 +145,4 @@
       (setf value-ptr (cffi:foreign-alloc :uint8 :count length-of-buffer)))))
 
-;; dso+
 (defmethod set-parameter-value ((param unicode-string-parameter) value)
   (cond
@@ -163,5 +157,4 @@
            (* 2 (length value))))))
 
-;; dso+
 (defmethod get-parameter-value ((param unicode-string-parameter))
   (let ((len (cffi:mem-ref (slot-value param 'ind-ptr) 'sql-len)))
@@ -178,5 +171,4 @@
   ())
 
-;; dso+
 (defmethod initialize-parameter ((param integer-parameter) args)
   (assert (not args))
@@ -185,5 +177,5 @@
     (setf value-type $SQL_C_LONG)
     (setf parameter-type $SQL_INTEGER)
-    (setf buffer-length 4)
+    (setf buffer-length (cffi:foreign-type-size 'sql-integer))
     (setf value-ptr (cffi:foreign-alloc 'sql-integer))))
 
@@ -212,5 +204,4 @@
   ())
 
-;; dso+
 (defmethod initialize-parameter ((param double-parameter) args)
   (assert (not args))
@@ -219,8 +210,7 @@
     (setf value-type $SQL_C_DOUBLE)
     (setf parameter-type $SQL_DOUBLE)
-    (setf buffer-length 8)
+    (setf buffer-length (cffi:foreign-type-size :double))
     (setf value-ptr (cffi:foreign-alloc :double))))
 
-;; dso+
 (defmethod set-parameter-value ((param double-parameter) value)
   (cond
@@ -231,7 +221,7 @@
      (setf (cffi:mem-ref (slot-value param 'value-ptr) :double)
            (coerce value 'double-float))
-     (setf (cffi:mem-ref (slot-value param 'ind-ptr) 'sql-len) 8))))
-
-;; dso+
+     (setf (cffi:mem-ref (slot-value param 'ind-ptr) 'sql-len)
+           (cffi:foreign-type-size :double)))))
+
 (defmethod get-parameter-value ((param double-parameter))
   (if (= (cffi:mem-ref (slot-value param 'ind-ptr) 'sql-len) $SQL_NULL_DATA)
@@ -256,5 +246,4 @@
      (setf value-ptr (cffi:foreign-alloc :uchar :count 24))))
 
-;; dso+
 (defmethod set-parameter-value ((param date-parameter) value)
   (if (null value)
@@ -269,5 +258,4 @@
           (%put-sql-c-timestamp (slot-value param 'value-ptr) year month day hour min sec 0)))))
 
-;; dso+
 (defmethod get-parameter-value ((param date-parameter))
   (let ((len (cffi:mem-ref (slot-value param 'ind-ptr) 'sql-len)))
@@ -295,25 +283,25 @@
 
 (defmethod set-parameter-value ((param binary-parameter) value)
-(if (null value)
-  (setf (cffi:mem-ref (slot-value param 'ind-ptr) :long)
-          $SQL_NULL_DATA)
-    (if (< (slot-value param 'buffer-length) (length value))
-      (progn
-        (error "buffer is to small")
-        ; we could increase the buffer size with another bind parameter
-        ; or set data_at_execution =1
-        )
-      (progn
-        ;(break)
-        (setf (cffi:mem-ref (slot-value param 'ind-ptr) :long) 
-                (length value))
-        (put-byte-vector (slot-value param 'value-ptr) value)))))
+  (if (null value)
+      (setf (cffi:mem-ref (slot-value param 'ind-ptr) 'sql-len)
+            $SQL_NULL_DATA)
+      (if (< (slot-value param 'buffer-length) (length value))
+          (progn
+            (error "buffer is to small")
+            ;; we could increase the buffer size with another bind
+            ;; parameter or set data_at_execution =1
+            )
+          (progn
+            ;; (break)
+            (setf (cffi:mem-ref (slot-value param 'ind-ptr) 'sql-len)
+                  (length value))
+            (put-byte-vector (slot-value param 'value-ptr) value)))))
 
 
 (defmethod get-parameter-value ((param binary-parameter))
-  (let ((len (cffi:mem-ref (slot-value param 'ind-ptr) :long)))
+  (let ((len (cffi:mem-ref (slot-value param 'ind-ptr) 'sql-len)))
     (if (= len $SQL_NULL_DATA) 
-      nil
-      (get-byte-vector (slot-value param 'value-ptr) len))))
+        nil
+        (get-byte-vector (slot-value param 'value-ptr) len))))
 
 
@@ -338,16 +326,16 @@
     ;; the value-ptr will be needed to find the parameter,  
     ;; we store the position there
-    (setf buffer-length 4)
-    (setf value-ptr (cffi:foreign-alloc 'sql-len))))
+    (setf buffer-length (cffi:foreign-type-size 'sql-pointer))
+    (setf value-ptr (cffi:foreign-alloc 'sql-pointer))))
 
 (defmethod set-parameter-value ((param clob-parameter) value)
   (if (null value)
-    (setf (cffi:mem-ref (slot-value param 'ind-ptr) :long)
+      (setf (cffi:mem-ref (slot-value param 'ind-ptr) 'sql-len)
             $SQL_NULL_DATA)
-    (progn
-      (setf (slot-value param 'temp-val) value)
-      (setf (cffi:mem-ref (slot-value param 'value-ptr) :long) 
-                                (slot-value param 'position))
-      (setf (cffi:mem-ref (slot-value param 'ind-ptr) :long)
+      (progn
+        (setf (slot-value param 'temp-val) value)
+        (setf (cffi:mem-ref (slot-value param 'value-ptr) 'sql-pointer)
+              (slot-value param 'position))
+        (setf (cffi:mem-ref (slot-value param 'ind-ptr) 'sql-len)
               (%sql-len-data-at-exec (length value))))))
 
@@ -388,16 +376,16 @@
     ;; the value-ptr will be needed to find the parameter,  
     ;; we store the position there
-    (setf buffer-length 4)
-    (setf value-ptr (cffi:foreign-alloc 'sql-len))))
+    (setf buffer-length (cffi:foreign-type-size 'sql-pointer))
+    (setf value-ptr (cffi:foreign-alloc 'sql-pointer))))
 
 (defmethod set-parameter-value ((param uclob-parameter) value)
   (if (null value)
-    (setf (cffi:mem-ref (slot-value param 'ind-ptr) :long)
+    (setf (cffi:mem-ref (slot-value param 'ind-ptr) 'sql-len)
             $SQL_NULL_DATA)
     (progn
       (setf (slot-value param 'temp-val) value)
-      (setf (cffi:mem-ref (slot-value param 'value-ptr) :long)
+      (setf (cffi:mem-ref (slot-value param 'value-ptr) 'sql-pointer)
               (slot-value param 'position))
-      (setf (cffi:mem-ref (slot-value param 'ind-ptr) :long)
+      (setf (cffi:mem-ref (slot-value param 'ind-ptr) 'sql-len)
                  (%sql-len-data-at-exec (* 2 (length value)))))))
 
@@ -437,16 +425,16 @@
     ;; the value-ptr will be needed to find the parameter, 
     ;; we store the position there
-    (setf buffer-length 4)
-    (setf value-ptr (cffi:foreign-alloc 'sql-len))))
+    (setf buffer-length (cffi:foreign-type-size 'sql-pointer))
+    (setf value-ptr (cffi:foreign-alloc 'sql-pointer))))
 
 (defmethod set-parameter-value ((param blob-parameter) value)
   (if (null value)
-    (setf (cffi:mem-ref (slot-value param 'ind-ptr) :long)
+    (setf (cffi:mem-ref (slot-value param 'ind-ptr) 'sql-len)
             $SQL_NULL_DATA)
     (progn
       (setf (slot-value param 'temp-val) value)
-      (setf (cffi:mem-ref (slot-value param 'value-ptr) :long)
+      (setf (cffi:mem-ref (slot-value param 'value-ptr) 'sql-pointer)
               (slot-value param 'position))
-      (setf (cffi:mem-ref (slot-value param 'ind-ptr) :long)
+      (setf (cffi:mem-ref (slot-value param 'ind-ptr) 'sql-len)
               (%sql-len-data-at-exec (length value))))))
 
