<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<section xml:id="ibm-db2.configuration" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
 &reftitle.runtime;
 &extension.runtime;
 <para>
  <table>
   <title>ibm_db2 &ConfigureOptions;</title>
   <tgroup cols="4">
    <thead>
     <row>
      <entry>&Name;</entry>
      <entry>&Default;</entry>
      <entry>&Changeable;</entry>
      <entry>&Changelog;</entry>
     </row>
    </thead>
    <tbody xml:id="ibm-db2.configuration.list">
     <row>
      <entry><link linkend="ini.ibm-db2.binmode">ibm_db2.binmode</link></entry>
      <entry>"1"</entry>
      <entry><constant>INI_ALL</constant></entry>
      <entry></entry>
     </row>
     <row>
      <entry><link linkend="ini.ibm-db2.i5-all-pconnect">ibm_db2.i5_all_pconnect</link></entry>
      <entry>"0"</entry>
      <entry><constant>INI_SYSTEM</constant></entry>
      <entry>Available as of ibm_db2 1.6.5.</entry>
     </row>     
     <row>
      <entry><link linkend="ini.ibm-db2.i5-allow-commit">ibm_db2.i5_allow_commit</link></entry>
      <entry>"0"</entry>
      <entry><constant>INI_SYSTEM</constant></entry>
      <entry>Available as of ibm_db2 1.4.9.</entry>
     </row>
     <row>
      <entry><link linkend="ini.ibm-db2.i5-blank-userid">ibm_db2.i5_blank_userid</link></entry>
      <entry>"0"</entry>
      <entry><constant>INI_SYSTEM</constant></entry>
      <entry>Available as of ibm_db2 1.9.7.</entry>
     </row>
     <row>
      <entry><link linkend="ini.ibm-db2.i5-char-trim">ibm_db2.i5_char_trim</link></entry>
      <entry>"0"</entry>
      <entry><constant>INI_SYSTEM</constant></entry>
      <entry>Available as of ibm_db2 2.1.0.</entry>
     </row>
     <row>
      <entry><link linkend="ini.ibm-db2.i5-dbcs-alloc">ibm_db2.i5_dbcs_alloc</link></entry>
      <entry>"0"</entry>
      <entry><constant>INI_SYSTEM</constant></entry>
      <entry>Available as of ibm_db2 1.5.0.</entry>
     </row>
     <row>
      <entry><link linkend="ini.ibm-db2.i5-guard-profile">ibm_db2.i5_guard_profile</link></entry>
      <entry>"0"</entry>
      <entry><constant>INI_SYSTEM</constant></entry>
      <entry>Available as of ibm_db2 1.9.7.</entry>
     </row>
     <row>
      <entry><link linkend="ini.ibm-db2.i5-ignore-userid">ibm_db2.i5_ignore_userid</link></entry>
      <entry>"0"</entry>
      <entry><constant>INI_SYSTEM</constant></entry>
      <entry>Available as of ibm_db2 1.8.0.</entry>
     </row>
     <row>
      <entry><link linkend="ini.ibm-db2.i5-job-sort">ibm_db2.i5_job_sort</link></entry>
      <entry>"0"</entry>
      <entry><constant>INI_SYSTEM</constant></entry>
      <entry>Available as of ibm_db2 1.8.4.</entry>
     </row>
     <row>
      <entry><link linkend="ini.ibm-db2.i5-log-verbose">ibm_db2.i5_log_verbose</link></entry>
      <entry>"0"</entry>
      <entry><constant>INI_SYSTEM</constant></entry>
      <entry>Available as of ibm_db2 1.9.7.</entry>
     </row>
     <row>
      <entry><link linkend="ini.ibm-db2.i5-max-pconnect">ibm_db2.i5_max_pconnect</link></entry>
      <entry>"0"</entry>
      <entry><constant>INI_SYSTEM</constant></entry>
      <entry>Available as of ibm_db2 1.9.7.</entry>
     </row>
     <row>
      <entry><link linkend="ini.ibm-db2.i5-override-ccsid">ibm_db2.i5_override_ccsid</link></entry>
      <entry>"0"</entry>
      <entry><constant>INI_SYSTEM</constant></entry>
      <entry>Available as of ibm_db2 1.9.7.</entry>
     </row>
     <row>
      <entry><link linkend="ini.ibm-db2.i5-servermode-subsystem">ibm_db2.i5_servermode_subsystem</link></entry>
      <entry>NULL</entry>
      <entry><constant>INI_SYSTEM</constant></entry>
      <entry>Available as of ibm_db2 1.9.7.</entry>
     </row>
     <row>
      <entry><link linkend="ini.ibm-db2.i5-sys-naming">ibm_db2.i5_sys_naming</link></entry>
      <entry>"0"</entry>
      <entry><constant>INI_SYSTEM</constant></entry>
      <entry>Available as of ibm_db2 1.9.7.</entry>
     </row>
     <row>
      <entry><link linkend="ini.ibm-db2.instance-name">ibm_db2.instance_name</link></entry>
      <entry>NULL</entry>
      <entry><constant>INI_SYSTEM</constant></entry>
      <entry>Available as of ibm_db2 1.0.2.</entry>
     </row>
    </tbody>
   </tgroup>
  </table>

 </para>
 
 &ini.descriptions.title;
 
 <para>
  <variablelist>
   <varlistentry xml:id="ini.ibm-db2.binmode">
    <term>
     <parameter>ibm_db2.binmode</parameter>
     <type>int</type>
    </term>
    <listitem>
     <para>
      This option controls the mode used for converting to and from binary
      data in the PHP application.
      <itemizedlist>
       <listitem>
        <para>
         1 (DB2_BINARY)
        </para>
       </listitem>
       <listitem>
        <para>
         2 (DB2_CONVERT)
        </para>
       </listitem>
       <listitem>
        <para>
         3 (DB2_PASSTHRU)
        </para>
       </listitem>
      </itemizedlist>
     </para>
    </listitem>
   </varlistentry>
   <varlistentry xml:id="ini.ibm-db2.i5-all-pconnect">
    <term>
     <parameter>ibm_db2.i5_all_pconnect</parameter>
     <type>int</type>
    </term>
    <listitem>
     <para>
      This option forces all connections to be persistent on IBM i.
      Basically, all <function>db2_connect</function> calls transparently become
      <function>db2_pconnect</function> calls.
      By default, this option is <literal>0</literal>.
      This option is provided as a convenience for cases where persistent
      connections are faster.
      It should not be used in new applications.
      <itemizedlist>
       <listitem>
        <para>
         0  - Persistent and non-persistent connections can be made.
        </para>
       </listitem>
       <listitem>
        <para>
         1 - All connections are persistent.
        </para>
       </listitem>
      </itemizedlist>
     </para>
    </listitem>
   </varlistentry>   
   <varlistentry xml:id="ini.ibm-db2.i5-allow-commit">
    <term>
     <parameter>ibm_db2.i5_allow_commit</parameter>
     <type>int</type>
    </term>
    <listitem>
     <para>
      This option controls the transaction isolation mode used.
      By default, this option is <literal>0</literal>, so commitment control isn't used.
      This option can be overriden when connecting if the array key
      <parameter>i5_commit</parameter> is set in the connection options array
      passed to <function>db2_connect</function> or
      <function>db2_pconnect</function>.
      <itemizedlist>
       <listitem>
        <para>
         0 - commitment control is not used 
        </para>
       </listitem>
       <listitem>
        <para>
         1 - read uncommitted, dirty reads possible.
        </para>
       </listitem>
       <listitem>
        <para>
         2 - read committed, dirty reads are not possible.
        </para>
       </listitem>
       <listitem>
        <para>
         3 - repeatable read, dirty reads and non-repeatable reads are not possible
        </para>
       </listitem>
       <listitem>
        <para>
         4 - serializeable, dirty reads, non-repeatable reads, and phantoms are not possible
        </para>
       </listitem>
      </itemizedlist>
     </para>
    </listitem>
   </varlistentry>
   <varlistentry xml:id="ini.ibm-db2.i5-blank-userid">
    <term>
     <parameter>ibm_db2.i5_blank_userid</parameter>
     <type>int</type>
    </term>
    <listitem>
     <para>
      This controls if a blank user ID should be allowed on IBM i.
      By default, this option is <literal>0</literal>.
      Unlike <parameter>ibm_db2.i5_ignore_userid</parameter>, this option
      doesn't force all user IDs to be empty or change job behaviour, but
      simply allows an empty user ID to be passed, for connecting to Db2 as the
      current user.
      <itemizedlist>
       <listitem>
        <para>
         0 - Don't allow a blank user ID to be passed.
        </para>
       </listitem>
       <listitem>
        <para>
         1 - Allow a blank user ID to be passed.
        </para>
       </listitem>
      </itemizedlist>
     </para>
    </listitem>
   </varlistentry>
   <varlistentry xml:id="ini.ibm-db2.i5-char-trim">
    <term>
     <parameter>ibm_db2.i5_char_trim</parameter>
     <type>int</type>
    </term>
    <listitem>
     <para>
      This option controls if the end of strings are trimmed on IBM i.
      Since many tables use fixed column sizes padded with spaces, this is
      provided as a convenience.
      By default, this option is <literal>0</literal>.
      <itemizedlist>
       <listitem>
        <para>
         0 - Columns are not trimmed.
        </para>
       </listitem>
       <listitem>
        <para>
         1 - Spaces at the end of returned character columns are removed.
        </para>
       </listitem>
      </itemizedlist>
     </para>
    </listitem>
   </varlistentry>
   <varlistentry xml:id="ini.ibm-db2.i5-dbcs-alloc">
    <term>
     <parameter>ibm_db2.i5_dbcs_alloc</parameter>
     <type>int</type>
    </term>
    <listitem>
     <para>
      This options affects the internal buffer allocation strategy on IBM i.
      By default, this option is <literal>0</literal>.
      When this option is set, buffers are allocated with a much larger size,
      in case the database underestimates a string's size when converting
      between encodings.
      This option uses six times as much memory for buffers (to account for
      the largest possible UTF-8 sequences), but may be needed if truncated
      data is returned.
      <itemizedlist>
       <listitem>
        <para>
         0 - Minimum size buffers are allocated.
        </para>
       </listitem>
       <listitem>
        <para>
         1 - Larger size buffers are allocated.
        </para>
       </listitem>
      </itemizedlist>
     </para>
    </listitem>
   </varlistentry>
   <varlistentry xml:id="ini.ibm-db2.i5-guard-profile">
    <term>
     <parameter>ibm_db2.i5_guard_profile</parameter>
     <type>int</type>
    </term>
    <listitem>
     <para>
      This option checks if the database user profile was switched when
      connecting to a persistent database connection on IBM i, and if so,
      disconnects from the database.
      By default, this option is set to <literal>0</literal>.
      <itemizedlist>
       <listitem>
        <para>
         0 - Don't check for profile swaps.
        </para>
       </listitem>
       <listitem>
        <para>
         1 - Check for profile swaps and disconnect if so.
        </para>
       </listitem>
      </itemizedlist>
     </para>
    </listitem>
   </varlistentry>
   <varlistentry xml:id="ini.ibm-db2.i5-log-verbose">
    <term>
     <parameter>ibm_db2.i5_log_verbose</parameter>
     <type>int</type>
    </term>
    <listitem>
     <para>
      This option sets if SQL diagnostic messages like warnings and errors are
      always sent to the PHP error log on IBM i.
      Normally, only a brief message on failure is sent (such as "statement
      execute failed") to the PHP error log, as this option is set to
      <literal>0</literal> by default.
      Note that you can still and should call i.e.
      <function>db2_stmt_errormsg</function> manually as part of checking if
      functions fail.
      <itemizedlist>
       <listitem>
        <para>
         0 - Only logs brief messages.
        </para>
       </listitem>
       <listitem>
        <para>
         1 - Logs the SQL diagnostic message in addition to the brief message.
        </para>
       </listitem>
      </itemizedlist>
     </para>
    </listitem>
   </varlistentry>
   <varlistentry xml:id="ini.ibm-db2.i5-ignore-userid">
    <term>
     <parameter>ibm_db2.i5_ignore_userid</parameter>
     <type>int</type>
    </term>
    <listitem>
     <para>
      This option ignores the user ID when connecting to the database when
      running on IBM i, and runs SQL/CLI functionality inside of the PHP job,
      instead of a separate job.
      By default, this option is <literal>0</literal>.
      When enabled, it no longer uses a separate database server job, and
      always uses the current user profile for the database, ignoring the
      username and password passed to <function>db2_connect</function> and
      <function>db2_pconnect</function>.
      <itemizedlist>
       <listitem>
        <para>
         0 - Uses the specified credentials, and use an SQL/CLI server job.
        </para>
       </listitem>
       <listitem>
        <para>
         1 - Always use blank credentials, and run SQL/CLI in the PHP job.
        </para>
       </listitem>
      </itemizedlist>
     </para>
    </listitem>
   </varlistentry>
   <varlistentry xml:id="ini.ibm-db2.i5-job-sort">
    <term>
     <parameter>ibm_db2.i5_job_sort</parameter>
     <type>int</type>
    </term>
    <listitem>
     <para>
      Controls the job sort option on IBM i.
      By default, this option is <literal>0</literal>.
      This corresponds to the IBM i SQL/CLI
      <literal>SQL_ATTR_CONN_SORT_SEQUENCE</literal> attribute.
      <itemizedlist>
       <listitem>
        <para>
         0 - Uses the <literal>*HEX</literal> sort option, sorting by bytes.
        </para>
       </listitem>
       <listitem>
        <para>
         1 - Uses the job sort sequence set for the PHP job.
        </para>
       </listitem>
       <listitem>
        <para>
         2 - Uses the job sort sequence set for the database job.
        </para>
       </listitem>
      </itemizedlist>
     </para>
    </listitem>
   </varlistentry>
   <varlistentry xml:id="ini.ibm-db2.i5-max-pconnect">
    <term>
     <parameter>ibm_db2.i5_max_pconnect</parameter>
     <type>int</type>
    </term>
    <listitem>
     <para>
      This will affect how many times a persistent connection can be reused
      when running on IBM i.
      By default, this is set to <literal>0</literal>, which means a persistent
      connection can always be reused.
      This option can help work around issues in a long-running database job
      (i.e. if a procedure is leaking memory), but is obviously not a long-term
      fix.
     </para>
    </listitem>
   </varlistentry>
   <varlistentry xml:id="ini.ibm-db2.i5-override-ccsid">
    <term>
     <parameter>ibm_db2.i5_override_ccsid</parameter>
     <type>int</type>
    </term>
    <listitem>
     <para>
      The PASE CCSID to use for character conversions from EBCDIC on IBM i.
      By default, this is <literal>0</literal>, which will select the default
      PASE job CCSID, which comes from the PASE locale settings.
      For example, setting this to <literal>1208</literal> will use UTF-8.
      This should only be modified if the PASE job CCSID isn't the expected
      CCSID, and the locale cannot be modified.
     </para>
     <para>
      To learn more about CCSIDs on IBM i, consult the
      <link xlink:href="https://www.ibm.com/docs/en/i/7.5?topic=information-ccsid-reference">IBM documentation</link>.
      To learn how locales on IBM i PASE are mapped to CCSIDs, consult the
      <link xlink:href="https://www.ibm.com/docs/en/i/7.5?topic=ssw_ibm_i_75/apis/pase_locales.html">IBM documentation</link>.
     </para>
    </listitem>
   </varlistentry>
   <varlistentry xml:id="ini.ibm-db2.i5-sys-naming">
    <term>
     <parameter>ibm_db2.i5_sys_naming</parameter>
     <type>int</type>
    </term>
    <listitem>
     <para>
      This option controls the naming mode when connecting to an IBM i system.
      By default, this option is <literal>0</literal>.
      The naming mode affects how names are resolved and the allowed syntax for
      names.
      When set to <literal>0</literal>, this uses periods to qualify names and
      uses the default library or user ID to resolve names.
      When set to <literal>1</literal>, this uses slashes to qualify names and
      uses the job library list to resolve names.
      <itemizedlist>
       <listitem>
        <para>
         0 - Uses the SQL naming mode ("SCHEMA.TABLE").
        </para>
       </listitem>
       <listitem>
        <para>
         1 - Uses the system naming mode ("LIBRARY/FILE").
        </para>
       </listitem>
      </itemizedlist>
     </para>
     <para>
      To learn more about naming modes on IBM i, consult the
      <link xlink:href="https://www.ibm.com/docs/en/i/7.5?topic=application-naming-distributed-relational-database-objects">IBM documentation</link>.
     </para>
    </listitem>
   </varlistentry>
   <varlistentry xml:id="ini.ibm-db2.i5-servermode-subsystem">
    <term>
     <parameter>ibm_db2.i5_servermode-subsystem</parameter>
     <type>string</type>
    </term>
    <listitem>
     <para>
      This option changes which subsystem database server jobs run under on
      IBM i.
      By default, this option is &null;, so jobs will run under the default
      subsystem for QSQSRVR jobs.
     </para>
    </listitem>
   </varlistentry>
   <varlistentry xml:id="ini.ibm-db2.instance-name">
    <term>
     <parameter>ibm_db2.instance_name</parameter>
     <type>string</type>
    </term>
    <listitem>
     <para>
      On Linux and UNIX operating systems, this option defines the name of the
      instance to use for cataloged database connections.
      By default, this option is &null;.
      If this option is set, its value overrides the
      <varname>DB2INSTANCE</varname> environment variable setting.
     </para>
     <para>
      This option is ignored on Windows operating systems.
     </para>
    </listitem>
   </varlistentry>
  </variablelist>
 </para>
</section>

<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->
