]> granicus.if.org Git - postgresql/commitdiff
Reformat some non-sensical markup.
authorPeter Eisentraut <peter_e@gmx.net>
Wed, 31 Oct 2001 20:37:39 +0000 (20:37 +0000)
committerPeter Eisentraut <peter_e@gmx.net>
Wed, 31 Oct 2001 20:37:39 +0000 (20:37 +0000)
doc/src/sgml/ecpg.sgml

index 8f4e599a5fac9f0bcc256ec1eb96197d54f807f4..522e6ca321e015f40f3728d46915b9fe06750b03 100644 (file)
@@ -1,5 +1,5 @@
 <!--
-$Header: /cvsroot/pgsql/doc/src/sgml/ecpg.sgml,v 1.26 2001/10/18 20:43:05 momjian Exp $
+$Header: /cvsroot/pgsql/doc/src/sgml/ecpg.sgml,v 1.27 2001/10/31 20:37:39 petere Exp $
 -->
 
  <chapter id="ecpg">
@@ -120,27 +120,27 @@ $Header: /cvsroot/pgsql/doc/src/sgml/ecpg.sgml,v 1.26 2001/10/18 20:43:05 momjia
      <itemizedlist>
       <listitem>
        <para>
-       <function>ECPGdebug(int <replaceable>on</replaceable>, FILE
-       *<replaceable>stream</replaceable>)</function> turns on debug
-       logging if called with the first argument non-zero. Debug
-       logging is done on <replaceable>stream</replaceable>. Most
-       <acronym>SQL</acronym> statement log their arguments and results.
+        <function>ECPGdebug(int <replaceable>on</replaceable>, FILE
+        *<replaceable>stream</replaceable>)</function> turns on debug
+        logging if called with the first argument non-zero. Debug
+        logging is done on <replaceable>stream</replaceable>. Most
+        <acronym>SQL</acronym> statement log their arguments and results.
        </para>
 
        <para>
-       The most important function , <function>ECPGdo</function>, logs
-       all <acronym>SQL</acronym> statements with both the expanded
-       string, i.e. the string with all the input variables inserted,
-       and the result from the <productname>Postgres</productname>
-       server. This can be very useful when searching for errors in
-       your <acronym>SQL</acronym> statements.
+        The most important function , <function>ECPGdo</function>, logs
+        all <acronym>SQL</acronym> statements with both the expanded
+        string, i.e. the string with all the input variables inserted,
+        and the result from the <productname>Postgres</productname>
+        server. This can be very useful when searching for errors in
+        your <acronym>SQL</acronym> statements.
        </para>
       </listitem>
 
       <listitem>
        <para>
-       <function>ECPGstatus()</function>
-       This method returns TRUE if we are connected to a database and FALSE if not.
+        <function>ECPGstatus()</function>
+        This method returns TRUE if we are connected to a database and FALSE if not.
        </para>
       </listitem>
      </itemizedlist>
@@ -180,7 +180,7 @@ struct sqlca
  /* 5: empty                                         */
  char sqlwarn[8];
  /* 0: set to 'W' if at least one other is 'W'       */
- /* 1: if 'W' at least one character string         */
+ /* 1: if 'W' at least one character string          */
  /*    value was truncated when it was               */
  /*    stored into a host variable.                  */
  /* 2: empty                                         */
@@ -216,265 +216,265 @@ struct sqlca
       <varlistentry>
        <term><computeroutput>-12, Out of memory in line %d.</computeroutput></term>
        <listitem>
-       <para>
-        Should not normally occur. This indicates your virtual memory is
-        exhausted.
-       </para>
+        <para>
+         Should not normally occur. This indicates your virtual memory is
+         exhausted.
+        </para>
        </listitem>
       </varlistentry>
 
       <varlistentry>
        <term><computeroutput>-200 (ECPG_UNSUPPORTED): Unsupported type %s on line %d.</computeroutput></term>
        <listitem>
-       <para>
-        Should not normally occur. This indicates the preprocessor has
-        generated something that the library does not know about.
-        Perhaps you are running incompatible versions of the
-        preprocessor and the library.
-       </para>
+        <para>
+         Should not normally occur. This indicates the preprocessor has
+         generated something that the library does not know about.
+         Perhaps you are running incompatible versions of the
+         preprocessor and the library.
+        </para>
        </listitem>
       </varlistentry>
 
       <varlistentry>
        <term><computeroutput>-201 (ECPG_TOO_MANY_ARGUMENTS): Too many arguments line %d.</computeroutput></term>
        <listitem>
-       <para>
-        This means that <productname>Postgres</productname> has
-        returned more arguments than we have matching variables.
-        Perhaps you have forgotten a couple of the host variables in
-        the <command>INTO :var1,:var2</command>-list.
-       </para>
+        <para>
+         This means that <productname>Postgres</productname> has
+         returned more arguments than we have matching variables.
+         Perhaps you have forgotten a couple of the host variables in
+         the <command>INTO :var1,:var2</command>-list.
+        </para>
        </listitem>
       </varlistentry>
 
       <varlistentry>
        <term><computeroutput>-202 (ECPG_TOO_FEW_ARGUMENTS): Too few arguments line %d.</computeroutput></term>
        <listitem>
-       <para>
-        This means that <productname>Postgres</productname> has
-        returned fewer arguments than we have host variables. Perhaps
-        you have too many host variables in the <command>INTO
-        :var1,:var2</command>-list.
-       </para> 
+        <para>
+         This means that <productname>Postgres</productname> has
+         returned fewer arguments than we have host variables. Perhaps
+         you have too many host variables in the <command>INTO
+         :var1,:var2</command>-list.
+        </para> 
        </listitem>
       </varlistentry>
 
       <varlistentry>
        <term><computeroutput>-203 (ECPG_TOO_MANY_MATCHES): Too many matches line %d.</computeroutput></term>
        <listitem>
-       <para>
-        This means the query has returned several rows but the
-        variables specified are not arrays. The
-        <command>SELECT</command> command was not unique.
-       </para>
+        <para>
+         This means the query has returned several rows but the
+         variables specified are not arrays. The
+         <command>SELECT</command> command was not unique.
+        </para>
        </listitem>
       </varlistentry>
 
       <varlistentry>
        <term><computeroutput>-204 (ECPG_INT_FORMAT): Not correctly formatted int type: %s line %d.</computeroutput></term>
        <listitem>
-       <para>
-        This means the host variable is of type <type>int</type> and
-        the field in the <productname>Postgres</productname> database
-        is of another type and contains a value that cannot be
-        interpreted as an <type>int</type>. The library uses
-        <function>strtol()</function> for this conversion.
-       </para>
+        <para>
+         This means the host variable is of type <type>int</type> and
+         the field in the <productname>Postgres</productname> database
+         is of another type and contains a value that cannot be
+         interpreted as an <type>int</type>. The library uses
+         <function>strtol()</function> for this conversion.
+        </para>
        </listitem>
       </varlistentry>
 
       <varlistentry>
        <term><computeroutput>-205 (ECPG_UINT_FORMAT): Not correctly formatted unsigned type: %s line %d.</computeroutput></term>
        <listitem>
-       <para>
-        This means the host variable is of type <type>unsigned
-        int</type> and the field in the
-        <productname>Postgres</productname> database is of another type
-        and contains a value that cannot be interpreted as an
-        <type>unsigned int</type>. The library uses
-        <function>strtoul()</function> for this conversion.
-       </para>
+        <para>
+         This means the host variable is of type <type>unsigned
+         int</type> and the field in the
+         <productname>Postgres</productname> database is of another type
+         and contains a value that cannot be interpreted as an
+         <type>unsigned int</type>. The library uses
+         <function>strtoul()</function> for this conversion.
+        </para>
        </listitem>
       </varlistentry>
 
       <varlistentry>
        <term><computeroutput>-206 (ECPG_FLOAT_FORMAT): Not correctly formatted floating point type: %s line %d.</computeroutput></term>
        <listitem>
-       <para>
-        This means the host variable is of type <type>float</type> and
-        the field in the <productname>Postgres</productname> database
-        is of another type and contains a value that cannot be
-        interpreted as a <type>float</type>. The library uses
-        <function>strtod()</function> for this conversion.
-       </para>
+        <para>
+         This means the host variable is of type <type>float</type> and
+         the field in the <productname>Postgres</productname> database
+         is of another type and contains a value that cannot be
+         interpreted as a <type>float</type>. The library uses
+         <function>strtod()</function> for this conversion.
+        </para>
        </listitem>
       </varlistentry>
 
       <varlistentry>
        <term><computeroutput>-207 (ECPG_CONVERT_BOOL): Unable to convert %s to bool on line %d.</computeroutput></term>
        <listitem>
-       <para>
-        This means the host variable is of type <type>bool</type> and
-        the field in the <productname>Postgres</productname> database
-        is neither <literal>'t'</> nor <literal>'f'</>.
-       </para>
+        <para>
+         This means the host variable is of type <type>bool</type> and
+         the field in the <productname>Postgres</productname> database
+         is neither <literal>'t'</> nor <literal>'f'</>.
+        </para>
        </listitem>
       </varlistentry>
 
       <varlistentry>
        <term><computeroutput>-208 (ECPG_EMPTY): Empty query line %d.</computeroutput></term>
        <listitem>
-       <para>
-        <productname>Postgres</productname> returned <symbol>PGRES_EMPTY_QUERY</symbol>, probably
-        because the query indeed was empty.
-       </para>
+        <para>
+         <productname>Postgres</productname> returned <symbol>PGRES_EMPTY_QUERY</symbol>, probably
+         because the query indeed was empty.
+        </para>
        </listitem>
       </varlistentry>
 
       <varlistentry>
        <term><computeroutput>-209 (ECPG_MISSING_INDICATOR): NULL value without indicator in line %d.</computeroutput></term>
        <listitem>
-       <para>
-        <productname>Postgres</productname> returned <symbol>ECPG_MISSING_INDICATOR</symbol>
-        because a NULL was returned and no NULL indicator variable was supplied.
-       </para>
+        <para>
+         <productname>Postgres</productname> returned <symbol>ECPG_MISSING_INDICATOR</symbol>
+         because a NULL was returned and no NULL indicator variable was supplied.
+        </para>
        </listitem>
       </varlistentry>
 
       <varlistentry>
        <term><computeroutput>-210 (ECPG_NO_ARRAY): Variable is not an array in line %d.</computeroutput></term>
        <listitem>
-       <para>
-        <productname>Postgres</productname> returned <symbol>ECPG_NO_ARRAY</symbol>
-        because an ordinary variable was used in a place that requires
-        an array.
-       </para>
+        <para>
+         <productname>Postgres</productname> returned <symbol>ECPG_NO_ARRAY</symbol>
+         because an ordinary variable was used in a place that requires
+         an array.
+        </para>
        </listitem>
       </varlistentry>
 
       <varlistentry>
        <term><computeroutput>-211 (ECPG_DATA_NOT_ARRAY): Data read from backend is not an array in line %d.</computeroutput></term>
        <listitem>
-       <para>
-        <productname>Postgres</productname> returned <symbol>ECPG_DATA_NOT_ARRAY</symbol>
-        because the database returned an ordinary variable in a place
-        that requires array value.
-       </para>
+        <para>
+         <productname>Postgres</productname> returned <symbol>ECPG_DATA_NOT_ARRAY</symbol>
+         because the database returned an ordinary variable in a place
+         that requires array value.
+        </para>
        </listitem>
       </varlistentry>
 
       <varlistentry>
        <term><computeroutput>-220 (ECPG_NO_CONN): No such connection %s in line %d.</computeroutput></term>
        <listitem>
-       <para>
-        The program tried to access a connection that does not exist.
-       </para>
+        <para>
+         The program tried to access a connection that does not exist.
+        </para>
        </listitem>
       </varlistentry>
 
       <varlistentry>
        <term><computeroutput>-221 (ECPG_NOT_CONN): Not connected in line %d.</computeroutput></term>
        <listitem>
-       <para>
-        The program tried to access a connection that does exist but is
-        not open.
-       </para>
+        <para>
+         The program tried to access a connection that does exist but is
+         not open.
+        </para>
        </listitem>
       </varlistentry>
 
       <varlistentry>
        <term><computeroutput>-230 (ECPG_INVALID_STMT): Invalid statement name %s in line %d.</computeroutput></term>
        <listitem>
-       <para>
-        The statement you are trying to use has not been prepared.
-       </para>
+        <para>
+         The statement you are trying to use has not been prepared.
+        </para>
        </listitem>
       </varlistentry>
 
       <varlistentry>
        <term><computeroutput>-240 (ECPG_UNKNOWN_DESCRIPTOR): Descriptor %s not found in line %d.</computeroutput></term>
        <listitem>
-       <para>
-        The descriptor specified was not foundstatement you are trying to use has not been prepared.
-       </para>
+        <para>
+         The descriptor specified was not foundstatement you are trying to use has not been prepared.
+        </para>
        </listitem>
       </varlistentry>
 
       <varlistentry>
        <term><computeroutput>-241 (ECPG_INVALID_DESCRIPTOR_INDEX): Descriptor index out of range in line %d.</computeroutput></term>
        <listitem>
-       <para>
-        The descriptor index specified was out of range.
-       </para>
+        <para>
+         The descriptor index specified was out of range.
+        </para>
        </listitem>
       </varlistentry>
 
       <varlistentry>
        <term><computeroutput>-242 (ECPG_UNKNOWN_DESCRIPTOR_ITEM): Descriptor %s not found in line %d.</computeroutput></term>
        <listitem>
-       <para>
-        The descriptor specified was not foundstatement you are trying to use has not been prepared.
-       </para>
+        <para>
+         The descriptor specified was not foundstatement you are trying to use has not been prepared.
+        </para>
        </listitem>
       </varlistentry>
 
       <varlistentry>
        <term><computeroutput>-243 (ECPG_VAR_NOT_NUMERIC): Variable is not a numeric type in line %d.</computeroutput></term>
        <listitem>
-       <para>
-        The database returned a numeric value and the variable was not
-        numeric.
-       </para>
+        <para>
+         The database returned a numeric value and the variable was not
+         numeric.
+        </para>
        </listitem>
       </varlistentry>
 
       <varlistentry>
        <term><computeroutput>-244 (ECPG_VAR_NOT_CHAR): Variable is not a character type in line %d.</computeroutput></term>
        <listitem>
-       <para>
-        The database returned a non-numeric value and the variable was
-        numeric.
-       </para>
+        <para>
+         The database returned a non-numeric value and the variable was
+         numeric.
+        </para>
        </listitem>
       </varlistentry>
 
       <varlistentry>
        <term><computeroutput>-400 (ECPG_PGSQL): Postgres error: %s line %d.</computeroutput></term>
        <listitem>
-       <para>
-        Some <productname>Postgres</productname> error. 
-        The message contains the error message from the
-        <productname>Postgres</productname> backend.
-       </para>
+        <para>
+         Some <productname>Postgres</productname> error. 
+         The message contains the error message from the
+         <productname>Postgres</productname> backend.
+        </para>
        </listitem>
       </varlistentry>
 
       <varlistentry>
        <term><computeroutput>-401 (ECPG_TRANS): Error in transaction processing line %d.</computeroutput></term>
        <listitem>
-       <para>
-        <productname>Postgres</productname> signaled that we cannot start,
-        commit or rollback the transaction.
-       </para>
+        <para>
+         <productname>Postgres</productname> signaled that we cannot start,
+         commit or rollback the transaction.
+        </para>
        </listitem>
       </varlistentry>
 
       <varlistentry>
        <term><computeroutput>-402 (ECPG_CONNECT): Could not connect to database %s in line %d.</computeroutput></term>
        <listitem>
-       <para>
-        The connect to the database did not work.
-       </para>
+        <para>
+         The connect to the database did not work.
+        </para>
        </listitem>
       </varlistentry>
 
       <varlistentry>
        <term><computeroutput>100 (ECPG_NOT_FOUND): Data not found line %d.</computeroutput></term>
        <listitem>
-       <para>
-        This is a <quote>normal</quote> error that tells you that what you are querying cannot
-        be found or you are at the end of the cursor.
-       </para>
+        <para>
+         This is a <quote>normal</quote> error that tells you that what you are querying cannot
+         be found or you are at the end of the cursor.
+        </para>
        </listitem>
       </varlistentry>
 
@@ -486,30 +486,26 @@ struct sqlca
   <sect1 id="ecpg-limitations">
    <title>Limitations</title>
 
-   <abstract>
-    <para>
-     What will never be included and why it cannot be done.
-    </para>
-   </abstract>
-
    <para>
+    What will never be included and why it cannot be done:
+
     <variablelist>
      <varlistentry>
       <term>Oracle's single tasking</term>
       <listitem>
        <para>
-       Oracle version 7.0 on <systemitem class="osname">AIX</> 3 uses OS-supported locks in shared
-       memory that allow an application designer to link an application
-       in a <quote>single tasking</quote> way. Instead of starting one client
-       process per application process, both the database part and the
-       application part run in the same process. In later versions of
-       Oracle this is no longer supported.
+        Oracle version 7.0 on <systemitem class="osname">AIX</> 3 uses OS-supported locks in shared
+        memory that allow an application designer to link an application
+        in a <quote>single tasking</quote> way. Instead of starting one client
+        process per application process, both the database part and the
+        application part run in the same process. In later versions of
+        Oracle this is no longer supported.
        </para>
 
        <para>
-       This would require a total redesign of the
-       <productname>Postgres</productname> access model and the
-       performance gain does not justify the effort.
+        This would require a total redesign of the
+        <productname>Postgres</productname> access model and the
+        performance gain does not justify the effort.
        </para>
       </listitem>
      </varlistentry>
@@ -545,15 +541,15 @@ struct sqlca
       <term>Syntax of FETCH</term>
       <listitem>
        <para>
-       The standard syntax for FETCH is:
+        The standard syntax for FETCH is:
        </para>
        <para>
-       FETCH [direction] [amount] IN|FROM <replaceable>cursor</replaceable>.
+        FETCH [direction] [amount] IN|FROM <replaceable>cursor</replaceable>.
        </para>
        <para>
-       <application>ORACLE</application>, however, does not use the keywords IN
-       or FROM. This feature cannot be added since it would create parsing
-       conflicts.
+        <application>ORACLE</application>, however, does not use the keywords IN
+        or FROM. This feature cannot be added since it would create parsing
+        conflicts.
        </para>
       </listitem>
      </varlistentry>
@@ -580,77 +576,74 @@ struct sqlca
       <varlistentry>
        <term>Library functions</term>
        <listitem>
-       <para>
-        to_date et al. does not exist. However,
-        <productname>Postgres</productname> has some good conversion
-        routines so you probably won't miss them.
-       </para>
+        <para>
+         to_date et al. does not exist. However,
+         <productname>Postgres</productname> has some good conversion
+         routines so you probably won't miss them.
+        </para>
        </listitem>
       </varlistentry>
 
       <varlistentry>
        <term>Structures and unions</term>
        <listitem>
-       <para>
-        Structures and unions have to be defined in the
-        <command>declare</> section.
-       </para>
+        <para>
+         Structures and unions have to be defined in the
+         <command>declare</> section.
+        </para>
        </listitem>
       </varlistentry>
 
       <varlistentry>
        <term>Missing statements</term>
        <listitem>
-       <para>
-        The following statements are not implemented thus far:
-        <variablelist>
-         <varlistentry>
-          <term><literal>exec sql allocate</></term>
-          <listitem>
-           <para>
-           </para>
-          </listitem>
-         </varlistentry>
-         <varlistentry>
-          <term><literal>exec sql deallocate</></term>
-          <listitem>
-           <para>
-           </para>
-          </listitem>
-         </varlistentry>
-         <varlistentry>
-          <term><literal>SQLSTATE</></term>
-          <listitem>
-           <para>
-           </para>
-          </listitem>
-         </varlistentry>
-        </variablelist>
-       </para>
+        <para>
+         The following statements are not implemented thus far:
+
+         <itemizedlist>
+          <listitem>
+           <para>
+            <literal>exec sql allocate</>
+           </para>
+          </listitem>
+
+          <listitem>
+           <para>
+            <literal>exec sql deallocate</></term>
+           </para>
+          </listitem>
+          <listitem>
+           <para>
+            <literal>SQLSTATE</></term>
+           </para>
+          </listitem>
+         </itemizedlist>
+        </para>
        </listitem>
       </varlistentry>
 
       <varlistentry>
        <term>message 'no data found'</term>
        <listitem>
-       <para>
-        The error message for <quote>no data</quote> in:
-        <programlisting>
+        <para>
+         The error message for <quote>no data</quote> in:
+         <programlisting>
 exec sql insert select from statement
-       </programlisting>
-        has to be <literal>100</>.
-       </para>
+        </programlisting>
+         has to be <literal>100</>.
+        </para>
        </listitem>
       </varlistentry>
 
       <varlistentry>
        <term><literal>sqlwarn[6]</literal></term>
        <listitem>
-       <para>
-        <literal>sqlwarn[6]</literal> should be <literal>W</> if the <command>PRECISION</>
-        or <command>SCALE</> value specified in a <command>SET
-        DESCRIPTOR</> statement was ignored.
-       </para>
+        <para>
+         <literal>sqlwarn[6]</literal> should be <literal>W</> if the <command>PRECISION</>
+         or <command>SCALE</> value specified in a <command>SET
+         DESCRIPTOR</> statement was ignored.
+        </para>
        </listitem>
       </varlistentry>
      </variablelist>
@@ -680,269 +673,341 @@ exec sql insert select from statement
       <varlistentry>
        <term>Declare sections</term>
        <listitem>
-       <para>
-        <command>Declare</> sections begin with:
-        <programlisting>
+        <para>
+         <command>Declare</> sections begin with:
+<programlisting>
 exec sql begin declare section;
-        </programlisting>
-        and end with:
-        <programlisting>
+</programlisting>
+         and end with:
+<programlisting>
 exec sql end declare section;
-        </programlisting>
-        In this section only variable declarations are allowed. Every
-        variable declared within this section is stored in a list
-        of variables indexed by name together with its corresponding
-        type.
-       </para>
-
-       <para>
-        In particular the definition of a structure or union also must
-        be listed inside a <command>declare</> section. Otherwise
-        <application>ecpg</application> cannot handle these types since
-        it does not know the definition.
-       </para>
-
-       <para>
-        The declaration is also echoed to the file to make it a normal
-        C variable.
-       </para>
-
-       <para>
-        The special types <type>VARCHAR</type> and <type>VARCHAR2</type> are converted into a named struct
-        for every variable. A declaration like:
-        <programlisting>
+</programlisting>
+         In this section only variable declarations are allowed. Every
+         variable declared within this section is stored in a list
+         of variables indexed by name together with its corresponding
+         type.
+        </para>
+
+        <para>
+         In particular the definition of a structure or union also must
+         be listed inside a <command>declare</> section. Otherwise
+         <application>ecpg</application> cannot handle these types since
+         it does not know the definition.
+        </para>
+
+        <para>
+         The declaration is also echoed to the file to make it a normal
+         C variable.
+        </para>
+
+        <para>
+         The special types <type>VARCHAR</type> and <type>VARCHAR2</type> are converted into a named struct
+         for every variable. A declaration like:
+<programlisting>
 VARCHAR var[180];
-        </programlisting>
-        is converted into:
-        <programlisting>
+</programlisting>
+         is converted into:
+<programlisting>
 struct varchar_var { int len; char arr[180]; } var;
-        </programlisting>
-       </para>
+</programlisting>
+        </para>
        </listitem>
       </varlistentry>
 
       <varlistentry>
        <term>Include statements</term>
        <listitem>
-       <para>
-        An include statement looks like:
-        <programlisting>
+        <para>
+         An include statement looks like:
+<programlisting>
 exec sql include filename;
-        </programlisting>
-        Note that this is NOT the same as:
-        <programlisting>
+</programlisting>
+         Note that this is NOT the same as:
+<programlisting>
 #include &lt;filename.h&gt;
-        </programlisting>
-       </para>
-
-       <para>
-        Instead the file specified is parsed by
-        <application>ecpg</application> so the contents of the file are
-        included in the resulting C code. This way you are able to
-        specify EXEC SQL commands in an include file.
-       </para>
+</programlisting>
+        </para>
+
+        <para>
+         Instead the file specified is parsed by
+         <application>ecpg</application> so the contents of the file are
+         included in the resulting C code. This way you are able to
+         specify EXEC SQL commands in an include file.
+        </para>
        </listitem>
       </varlistentry>
 
       <varlistentry>
        <term>Connect statement</term>
        <listitem>
-       <para>
-        A connect statement looks like:
-        <programlisting>
+        <para>
+         A connect statement looks like:
+<programlisting>
 exec sql connect to <replaceable>connection target</replaceable>;
-        </programlisting>
-        It creates a connection to the specified database.
-       </para>
-
-       <para>
-        The <replaceable>connection target</replaceable> can be specified in the
-        following ways:
-        <variablelist>
-         <varlistentry>
-          <term>dbname[@server][:port][as <replaceable>connection
-            name</replaceable>][user <replaceable>user name</replaceable>]</term>
-          <listitem><para></para></listitem>
-         </varlistentry>
-
-         <varlistentry>
-          <term>tcp:postgresql://server[:port][/dbname][as
-           <replaceable>connection name</replaceable>][user <replaceable>user name</replaceable>]</term>
-          <listitem><para></para></listitem>
-         </varlistentry>
-
-         <varlistentry>
-          <term>unix:postgresql://server[:port][/dbname][as
-           <replaceable>connection name</replaceable>][user <replaceable>user name</replaceable>]</term>
-          <listitem><para></para></listitem>
-         </varlistentry>
-
-         <varlistentry>
-          <term><replaceable>character variable</replaceable>[as
-           <replaceable>connection name</replaceable>][user <replaceable>user name</replaceable>]</term>
-          <listitem><para></para></listitem>
-         </varlistentry>
-
-         <varlistentry>
-          <term><replaceable>character string</replaceable>[as
-           <replaceable>connection name</replaceable>][<replaceable>user</replaceable>]</term>
-          <listitem><para></para></listitem>
-         </varlistentry>
-
-         <varlistentry>
-          <term>default</term>
-          <listitem><para></para></listitem>
-         </varlistentry>
-
-         <varlistentry>
-          <term>user</term>
-          <listitem><para></para></listitem>
-         </varlistentry>
-        </variablelist>
-       </para>
-
-       <para>
-        There are also different ways to specify the user name:
-        <variablelist>
-         <varlistentry>
-          <term><replaceable>userid</replaceable></term>
-          <listitem><para></para></listitem>
-         </varlistentry>
-         <varlistentry>
-          <term><replaceable>userid</replaceable>/<replaceable>password</replaceable></term>
-          <listitem><para></para></listitem>
-         </varlistentry>
-         <varlistentry>
-          <term><replaceable>userid</replaceable> identified by <replaceable>password</replaceable></term>
-          <listitem><para></para></listitem>
-         </varlistentry>
-         <varlistentry>
-          <term><replaceable>userid</replaceable> using <replaceable>password</replaceable></term>
-          <listitem><para></para></listitem>
-         </varlistentry>
-        </variablelist>
-       </para>
-
-       <para> 
-        Finally, the <replaceable>userid</replaceable> and <replaceable>password</replaceable> may be a constant text, a
-        character variable, or a character string.
-       </para>
+</programlisting>
+         It creates a connection to the specified database.
+        </para>
+
+        <para>
+         The <replaceable>connection target</replaceable> can be specified in the
+         following ways:
+         <itemizedlist>
+          <listitem>
+           <simpara>
+            <literal>dbname[@server][:port][as <replaceable>connection
+            name</replaceable>][user <replaceable>user name</replaceable>]</literal>
+           </simpara>
+          </listitem>
+
+          <listitem>
+           <simpara>
+            <literal>tcp:postgresql://server[:port][/dbname][as
+            <replaceable>connection name</replaceable>][user <replaceable>user name</replaceable>]</literal>
+           </simpara>
+          </listitem>
+
+          <listitem>
+           <simpara>
+            <literal>unix:postgresql://server[:port][/dbname][as
+            <replaceable>connection name</replaceable>][user <replaceable>user name</replaceable>]</literal>
+           </simpara>
+          </listitem>
+          <listitem>
+           <simpara>
+            <literal><replaceable>character variable</replaceable>[as
+            <replaceable>connection name</replaceable>][user <replaceable>user name</replaceable>]</literal>
+           </simpara>
+          </listitem>
+          <listitem>
+           <simpara>
+            <literal><replaceable>character string</replaceable>[as
+            <replaceable>connection name</replaceable>][<replaceable>user</replaceable>]</literal>
+           </simpara>
+          </listitem>
+          <listitem>
+           <simpara>
+            <literal>default</literal>
+           </simpara>
+          </listitem>
+          <listitem>
+           <simpara>
+            <literal>user</literal>
+           </simpara>
+          </listitem>
+         </itemizedlist>
+        </para>
+
+        <para>
+         There are also different ways to specify the user name:
+
+         <itemizedlist>
+          <listitem>
+           <simpara>
+            <literal><replaceable>userid</replaceable></literal>
+           </simpara>
+          </listitem>
+
+          <listitem>
+           <simpara>
+            <literal><replaceable>userid</replaceable>/<replaceable>password</replaceable></literal>
+           </simpara>
+          </listitem>
+
+          <listitem>
+           <simpara>
+            <literal><replaceable>userid</replaceable> identified by <replaceable>password</replaceable></literal>
+           </simpara>
+          </listitem>
+
+          <listitem>
+           <simpara>
+            <literal><replaceable>userid</replaceable> using <replaceable>password</replaceable></literal>
+           </simpara>
+          </listitem>
+         </itemizedlist>
+        </para>
+
+        <para> 
+         Finally, the <replaceable>userid</replaceable> and <replaceable>password</replaceable> may be a constant text, a
+         character variable, or a character string.
+        </para>
        </listitem>
       </varlistentry>
 
       <varlistentry>
        <term>Disconnect statements</term>
        <listitem>
-       <para>
-        A disconnect statement looks like:
-        <programlisting>
+        <para>
+         A disconnect statement looks like:
+         <programlisting>
 exec sql disconnect [<replaceable>connection target</replaceable>];
-        </programlisting>
-        It closes the connection to the specified database.
-       </para>
-
-       <para>
-        The <replaceable>connection target</replaceable> can be specified in the
-        following ways:
-        <variablelist>
-         <varlistentry>
-          <term><replaceable>connection name</replaceable></term>
-          <listitem><para></para></listitem>
-         </varlistentry>
-         <varlistentry>
-          <term>default</term>
-          <listitem><para></para></listitem>
-         </varlistentry>
-         <varlistentry>
-          <term>current</term>
-          <listitem><para></para></listitem>
-         </varlistentry>
-         <varlistentry>
-          <term>all</term>
-          <listitem><para></para></listitem>
-         </varlistentry>
-        </variablelist>
-       </para>
+         </programlisting>
+         It closes the connection to the specified database.
+        </para>
+
+        <para>
+         The <replaceable>connection target</replaceable> can be specified in the
+         following ways:
+
+         <itemizedlist>
+          <listitem>
+           <simpara>
+            <literal><replaceable>connection name</replaceable></literal>
+           </simpara>
+          </listitem>
+
+          <listitem>
+           <simpara>
+           <literal>default</literal>
+           </simpara>
+          </listitem>
+
+          <listitem>
+           <simpara>
+           <literal>current</literal>
+           </simpara>
+          </listitem>
+
+          <listitem>
+           <simpara>
+           <term>all</term>
+           </simpara>
+          </listitem>
+         </itemizedlist>
+        </para>
        </listitem>
       </varlistentry>
 
       <varlistentry>
        <term>Open cursor statement</term>
        <listitem>
-       <para>
-        An open cursor statement looks like:
-        <programlisting>
+        <para>
+         An open cursor statement looks like:
+<programlisting>
 exec sql open <replaceable>cursor</replaceable>;
-        </programlisting>
-        and is not copied to the output. Instead, the cursor's
-        <command>DECLARE</> command is used because it opens the cursor
-        as well.
-       </para>
+</programlisting>
+         and is not copied to the output. Instead, the cursor's
+         <command>DECLARE</> command is used because it opens the cursor
+         as well.
+        </para>
        </listitem>
       </varlistentry>
 
       <varlistentry>
        <term>Commit statement</term>
        <listitem>
-       <para>
-        A commit statement looks like:
-        <programlisting>
+        <para>
+         A commit statement looks like:
+<programlisting>
 exec sql commit;
-        </programlisting>
-       </para>
+</programlisting>
+        </para>
        </listitem>
       </varlistentry>
 
       <varlistentry>
        <term>Rollback statement</term>
        <listitem>
-       <para>
-        A rollback statement looks like:
-        <programlisting>
+        <para>
+         A rollback statement looks like:
+<programlisting>
 exec sql rollback;
-        </programlisting>
-       </para>
+</programlisting>
+        </para>
        </listitem>
       </varlistentry>
 
       <varlistentry>
        <term>Other statements</term>
        <listitem>
-       <para>
-        Other <acronym>SQL</acronym> statements are used by
-        starting with <command>exec sql</command> and ending with
-        <command>;</command>. Everything in between is treated as an
-        <acronym>SQL</acronym> statement and parsed for variable
-        substitution.
-       </para>
-
-       <para>
-        Variable substitution occurs when a symbol starts with a colon
-        (<command>:</command>). The variable with that name is looked
-        up among the variables that were previously declared within a
-        <command>declare</> section. Depending on whether the variable is
-        being use for input or output, a pointer to the variable is
-        output to allow access by the function.
-       </para>
-
-       <para>
-        For every variable that is part of the <acronym>SQL</acronym>
-        query, the function gets other arguments:
-
-        <simplelist>
-         <member>The type as a special symbol.</member>
-         <member>A pointer to the value or a pointer to the pointer.</member>
-         <member>The size of the variable if it is a <type>char</type> or <type>varchar</type>.</member>
-         <member>The number of elements in the array (for array fetches).</member>
-         <member>The offset to the next element in the array (for array fetches).</member>
-         <member>The type of the indicator variable as a special symbol.</member>
-         <member>A pointer to the value of the indicator variable or a pointer to the pointer of the indicator variable.</member>
-         <member>0.</member>
-         <member>Number of elements in the indicator array (for array fetches).</member>
-         <member>The offset to the next element in the indicator array
-         (for array fetches).</member>
-        </simplelist>
-       </para>
+        <para>
+         Other <acronym>SQL</acronym> statements are used by
+         starting with <command>exec sql</command> and ending with
+         <command>;</command>. Everything in between is treated as an
+         <acronym>SQL</acronym> statement and parsed for variable
+         substitution.
+        </para>
+
+        <para>
+         Variable substitution occurs when a symbol starts with a colon
+         (<command>:</command>). The variable with that name is looked
+         up among the variables that were previously declared within a
+         <command>declare</> section. Depending on whether the variable is
+         being use for input or output, a pointer to the variable is
+         output to allow access by the function.
+        </para>
+
+        <para>
+         For every variable that is part of the <acronym>SQL</acronym>
+         query, the function gets other arguments:
+
+         <itemizedlist>
+          <listitem>
+           <para>
+            The type as a special symbol.
+           </para>
+          </listitem>
+
+          <listitem>
+           <para> 
+            A pointer to the value or a pointer to the pointer.
+           </para>
+          </listitem>
+
+          <listitem>
+           <para>
+            The size of the variable if it is a <type>char</type> or <type>varchar</type>.
+           </para>
+          </listitem>
+
+          <listitem>
+           <para>
+            The number of elements in the array (for array fetches).
+           </para>
+          </listitem>
+
+          <listitem>
+           <para>
+            The offset to the next element in the array (for array fetches).
+           </para>
+          </listitem>
+
+          <listitem>
+           <para>
+            The type of the indicator variable as a special symbol.
+           </para>
+          </listitem>
+
+          <listitem>
+           <para>
+            A pointer to the value of the indicator variable or a pointer to the pointer of the indicator variable.
+           </para>
+          </listitem>
+
+          <listitem>
+           <para>
+            0.
+           </para>
+          </listitem>
+
+          <listitem>
+           <para>
+            Number of elements in the indicator array (for array fetches).
+           </para>
+          </listitem>
+
+          <listitem>
+           <para>
+            The offset to the next element in the indicator array (for
+            array fetches).
+           </para>
+          </listitem>
+         </itemizedlist>
+        </para>
 
        </listitem>
       </varlistentry>
@@ -956,16 +1021,16 @@ exec sql rollback;
     <para>
      Here is a complete example describing the output of the preprocessor of a
      file <filename>foo.pgc</filename>:
-     <programlisting>
+<programlisting>
 exec sql begin declare section;
 int index;
 int result;
 exec sql end declare section;
 ...
 exec sql select res into :result from mytable where index = :index;
-     </programlisting>
+</programlisting>
      is translated into:
-     <programlisting>
+<programlisting>
 /* Processed by ecpg (2.6.0) */
 /* These two include files are added by the preprocessor */
 #include &lt;ecpgtype.h&gt;;
@@ -980,12 +1045,12 @@ exec sql select res into :result from mytable where index = :index;
 /* exec sql end declare section */
 ...
 ECPGdo(__LINE__, NULL, "select  res  from mytable where index = ?     ",
-       ECPGt_int,&amp;(index),1L,1L,sizeof(int),
+        ECPGt_int,&amp;(index),1L,1L,sizeof(int),
         ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT,
         ECPGt_int,&amp;(result),1L,1L,sizeof(int),
         ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
 #line 147 "foo.pgc"
-     </programlisting>
+</programlisting>
      (The indentation in this manual is added for readability and not
      something the preprocessor does.)
     </para>
@@ -1009,60 +1074,60 @@ ECPGdo(__LINE__, NULL, "select  res  from mytable where index = ?     ",
       <varlistentry>
        <term>A line number</term>
        <listitem>
-       <para>
-        This is a line number of the original line; used in error messages only.
-       </para>
+        <para>
+         This is a line number of the original line; used in error messages only.
+        </para>
        </listitem>
       </varlistentry>
 
       <varlistentry>
        <term>A string</term>
        <listitem>
-       <para>
-        This is the <acronym>SQL</acronym> query that is to be issued.
-        It is modified by the input variables, i.e. the variables that
-        where not known at compile time but are to be entered in the
-        query. Where the variables should go the string contains
-        <literal>?</literal>.
-       </para>
+        <para>
+         This is the <acronym>SQL</acronym> query that is to be issued.
+         It is modified by the input variables, i.e. the variables that
+         where not known at compile time but are to be entered in the
+         query. Where the variables should go the string contains
+         <literal>?</literal>.
+        </para>
        </listitem>
       </varlistentry>
 
       <varlistentry>
        <term>Input variables</term>
        <listitem>
-       <para>
-        As described in the section about the preprocessor, every input variable
-        gets ten arguments.
-       </para>
+        <para>
+         As described in the section about the preprocessor, every input variable
+         gets ten arguments.
+        </para>
        </listitem>
       </varlistentry>
 
       <varlistentry>
        <term><literal>ECPGt_EOIT</literal></term>
        <listitem>
-       <para>
-        An enum telling that there are no more input variables.
-       </para>
+        <para>
+         An enum telling that there are no more input variables.
+        </para>
        </listitem>
       </varlistentry>
 
       <varlistentry>
        <term>Output variables</term>
        <listitem>
-       <para>
-        As described in the section about the preprocessor, every input variable
-        gets ten arguments. These variables are filled by the function.
-       </para>
+        <para>
+         As described in the section about the preprocessor, every input variable
+         gets ten arguments. These variables are filled by the function.
+        </para>
        </listitem>
       </varlistentry>
 
       <varlistentry>
        <term>ECPGt_EORT</term>
        <listitem>
-       <para>
-        An enum telling that there are no more variables.
-       </para>
+        <para>
+         An enum telling that there are no more variables.
+        </para>
        </listitem>
       </varlistentry>
      </variablelist>