Index: 64-bit/doc/documentation.html
===================================================================
--- 64-bit/doc/documentation.html	(revision 64-bit,2.1.2)
+++ 64-bit/doc/documentation.html	(revision 64-bit,2.1.3)
@@ -5,5 +5,4 @@
     <title>Plain-odbc Documentation</title>
   </head>
-
   <body>
     <h1>plain-odbc documentation</h1>
@@ -12,7 +11,6 @@
       This is the version of plain-odbc which I am using right now. 
       The API could stand some improvements, currently it is rather 
-      simple. Hopefully it suffices for many uses. I thought I make 
-      the current version available before I make my mind up about 
-      another API. 
+      simple. But I think it is good enough for many uses. 
+      A higher level API is not a goal.
     </p>
     <p>
@@ -21,16 +19,24 @@
         ODBC documentation from Microsoft</a>.
     </p>
-    <h2>Platforms, not up to date</h2>
-    <p>
-      Plain-odbc uses CFFI to interface to the odbc libaries. I have tested it on 
-      Windows LispWorks Personal Edition (4.4) and 
-      CLISP 2.38. I am too lazy to download the new version of
-      an "Allegro CL Trial Edition", but I am confident that this should also work.
-      On Windows ODBC connections to Oracle and SQL-Server work. 
-      On Linux plain-odbc has been tested with CLISP and MySQL.
-    </p>
-    
+ <h3>Platforms</h3>
+    <p>
+      Plain-odbc uses CFFI to interface to the ODBC libaries.
+      The development platform ist clisp on Windows XP.
+      On this system accessing Microsoft SQL-Server, Oracle 10g and MySQL 5.0 works.
+      I do not expect big problems with other databases which have an ODBC driver. 
+      If there are problems they can also originate from the implementation of the
+      ODBC driver, e.g. MyODBC does not support out parameters. 
+      At one time plain-odbc worked on Windows with LispWorks Personal Edition (4.4) 
+      and Allegro.
+      On Linux it worked with CMUCL and MySQL. Since the interface to the ODBC library 
+      is done with
+      CFFI, plain-odbc should still with on these platforms/systems.
+      </p>
+    <p>
+      David Owen made the necessary changes to the code to make it run on 
+      64-bit Linux CMUCL and MySQL. 
+    </p>
     <h2> Using plain-odbc, Examples </h2>
-    You must load plain-odbc into lisp. plain-odbc is an asdf module, 
+    You must load plain-odbc into lisp. Plain-odbc is an asdf module, 
     so you need asdf. Make sure that asdf is able to find CFFI and plain-odbc.
     <pre>(asdf:oos 'asdf:load-op :plain-odbc)
@@ -75,5 +81,5 @@
     Oracle does not really have integer columns, integer is just a short hand 
     for <tt>number(37,0)</tt>, and in a query this is returned as decimal. 
-    And plain-odbc converts decimals to doubles.
+    And plain-odbc converts decimals to doubles. 
     <pre>
 [9]> (exec-update *con* "update test1 set y=? where x=?" "text2" 1)
@@ -223,4 +229,20 @@
       actual parameter.
     </p>
+    <p><b>Note: MySql does not support out and in/out parameters. There are no
+      return parameters. A citation from the documentation of MySql:</b>
+</p>
+      <p><em>
+For programs written in a language that provides a MySQL interface, there is no native method for directly retrieving the results of OUT or INOUT parameters from CALL statements. To get the parameter values, pass user-defined variables to the procedure in the CALL statement and then execute a SELECT statement to produce a result set containing the variable values. The following example illustrates the technique (without error checking) for a stored procedure p1 that has two OUT parameters. 
+</em><tt><br>
+mysql_query(mysql, "CALL p1(@param1, @param2)");<br>
+mysql_query(mysql, "SELECT @param1, @param2");<br>
+result = mysql_store_result(mysql);<br>
+row = mysql_fetch_row(result);<br>
+mysql_free_result(result);<br>
+</tt>
+
+
+      </p>
+
     <p>
       The function  <tt>prepare-statement</tt> is called with the parameters
@@ -236,6 +258,6 @@
     Currently the only parameter is the maximal length parameter for 
     the string and binary (= Oracle's raw) datatypes. Instead of a list for 
-    a parameter description only the name of the parameter type can be given. This is 
-    equivalent to a list with two elements: the symbol and the direction <tt>:in</tt>.
+    a parameter description only the name of the parameter type can be given. 
+    This is equivalent to a list with two elements: the symbol and the direction <tt>:in</tt>.
     The following parameter types ares supported:
   </p>
@@ -337,5 +359,5 @@
         the value returns true then the value is passed as :date. Of course 
         <tt>*date-datatype-to-universal-time*</tt> must be able to convert 
-        the value universal time.
+        the value to universal time.
     </ul>
 
@@ -387,12 +409,12 @@
     <p>
       <br><b>[Function]</b><br>
-      <tt>connect-sql-server <i>server database</i> &optional <i>user password</i></tt><br>
-      Connect to sql server named <i>server</i>, the initial database is <i>database</i>. 
-      If <i>user</i> and <i>password</i> are supplied the connection is made with sql server 
-      authentication, if the parameters are not supplied then the connection is made with
-      integrated security. The name of the template odbc datasource for this function is 
-      <tt>default-sql-server-dsn</tt>.
-    </p>
-    <p>
+        <tt>connect-sql-server <i>server database</i> &optional <i>user password</i></tt><br>
+          Connect to sql server named <i>server</i>, the initial database is <i>database</i>. 
+          If <i>user</i> and <i>password</i> are supplied the connection is made with sql server 
+          authentication, if the parameters are not supplied then the connection is made with
+          integrated security. The name of the template odbc datasource for this function is 
+          <tt>default-sql-server-dsn</tt>.
+      </p>
+      <p>
       <br><b>[Function]</b><br>
       <tt>connect-oracle <i>server user password</i></tt><br>
@@ -401,12 +423,21 @@
       <tt>default-oracle-dsn</tt>.
     </p>
-    <p>
-      <br><b>[Function]</b><br>
-      <tt>connect-access <i>filename</i></tt><br>
+      <p>
+        <br><b>[Function]</b><br>
+            <tt>connect-access <i>filename</i></tt><br>
       Connect to the access database (a .mdb file) with name filename.
       The name of the template odbc datasource for this function is 
       <tt>default-access-dsn</tt>.
     </p>
-      
+      <p>
+        <br><b>[Function]</b><br>
+            <tt>connect-mysql <i>server database user password</i></tt><br>
+         Connect to the MySql server on <i>server</i> connecting as user 
+        <i>user</i> with password <i>password</i>. The default database is
+       <i>database</i>. If database is <tt>NIL</tt> no database is chosen. 
+        The name of the template odbc datasource for this function is
+        <tt>default-mysql-dsn</tt>.
+      </p>
+
     <h3>Working with Connections</h3>
     <p>
@@ -428,5 +459,5 @@
      If a column is a LOB (BLOB or CLOB) then the data is retrieved
       with the ODBC function SQLGetData. This has the consequence that 
-      thr following columns must also be retrieved with SQLGetData, 
+      the following columns must also be retrieved with SQLGetData, 
       otherwise an error is raised by the driver. 
       Retrieving the following columns via 
@@ -440,4 +471,9 @@
       But be carefull with  the conversion format (1.23 vs. 1,23).
     </p>
+      <p>
+     <br><b>[Function]</b><br>
+      <tt>exec-query*<i>connection sqlstring parameters</i></tt><br>
+      The same as <tt>exec-query</tt>, but the ODBC parameters are passed as a list.
+      </p>
     <p>
       <br><b>[Function]</b><br>
@@ -447,4 +483,9 @@
       list of parameter descriptions. 
     </p>
+     <p>
+      <br><b>[Function]</b><br>
+      <tt>exec-update*<i>connection sqlstring parameters</i></tt><br>
+      The same as <tt>exec-update</tt>, but the ODBC parameters are passed as a list.
+    </p>
     <p>
       <br><b>[Function]</b><br>
@@ -453,5 +494,11 @@
       <i>parameters</i> is a list of parameter descriptions. 
       Returns the list of out and in-out parameters.
-    </p>
+      </p>
+      <p>
+      <br><b>[Function]</b><br>
+      <tt>exec-command*<i>connection sqlstring parameters</i></tt><br>
+      The same as <tt>exec-command</tt>, but the ODBC parameters are passed as a list.
+      </p>
+
     <p>
       <br><b>NOTE</b><br>
@@ -460,6 +507,26 @@
       One can execute a select statement with <tt>exec-update</tt> and 
       <tt>exec-command</tt>. But the command for <tt>exec-query</tt> 
-      must return a resultset.
-    </p>
+      must return a resultset. The following functions offers the functionality
+      of all three functions:
+    </p>
+     <br><b>[Function]</b><br>
+      <tt>exec-sql <i>connection sqlstring &amp;rest parameters</i></tt></br>
+      Execute an sql statement (select, dml or stored procedure call) on <i>connection</i> 
+      with sql <i>sqlstring</i>. <i>parameters</i> is a list of parameter descriptions. 
+        This function returns three values 
+        <ul>
+          <li> the number of affected records, i.e. what is normally returend by 
+            <tt>exec-update</tt>.</li>
+            <li> the list of the resultsets, each resultset is a list of two elements: 
+            the list of rows and a list of the column names.</li>
+          <li>the list of returned parameters</li>         
+        </ul>
+      </p>
+    <p>
+      <br><b>[Function]</b><br>
+          <tt>exec-sql*<i>connection sqlstring parameters</i></tt><br>
+            The same as <tt>exec-sql</tt>, but the ODBC parameters are passed as a list.
+    </p>
+    
     <P>
       <br><b>[Function]</b><br>
