   dup >r
   1024 CHAR: space <string> ascii string>alien dup >r
   1024
-  0 <short>
-  0 <short> dup >r
-  0 <uint> dup >r
-  0 <short> dup >r
-  0 <short> dup >r
+  0 short <ref>
+  0 short <ref> dup >r
+  0 uint <ref> dup >r
+  0 short <ref> dup >r
+  0 short <ref> dup >r
   SQLDescribeCol succeeded? [
-    r> *short
-    r> *short
-    r> *uint
-    r> *short convert-sql-type
+    r> short deref
+    r> short deref
+    r> uint deref
+    r> short deref convert-sql-type
     r> ascii alien>string
     r> <column>
   ] [

FUNCTION: SQLRETURN SQLGetData ( SQLHSTMT statementHandle, SQLUSMALLINT columnNumber, SQLSMALLINT targetType, SQLPOINTER targetValuePtr, SQLINTEGER bufferLength, SQLINTEGER* strlen_or_indPtr )

: alloc-handle ( type parent -- handle )
  f <void*> [ SQLAllocHandle ] keep swap succeeded? [
    *void*
  ] [
    drop f
  ] if ;

    { SQL-WCHAR [ ascii alien>string ] }
    { SQL-WCHARVAR [ ascii alien>string ] }
    { SQL-WLONGCHARVAR [ ascii alien>string ] }
    { SQL-SMALLINT [ short deref ] }
    { SQL-INTEGER [ long deref ] }
    { SQL-REAL [ float deref ] }
    { SQL-FLOAT [ double deref ] }
    { SQL-DOUBLE [ double deref ] }
    { SQL-TINYINT [ char deref ] }
    { SQL-BIGINT [ longlong deref ] }
    [ nip [ "Unknown SQL Type: " % name>> % ] "" make ]
  } case ;

