<!--
$Header: /usr/prj/pg/cvsroot/doc/doc/src/sgml/odbc.sgml,v 1.8 2001/09/13 02:34:04 k-kondo Exp $
-->

 <chapter id="odbc">
  <docinfo>
   <authorgroup>
    <author>
     <firstname>Tim</firstname>
     <surname>Goeke</surname>
    </author>
    <author>
     <firstname>Thomas</firstname>
     <surname>Lockhart</surname>
    </author>
   </authorgroup>
   <date>1998-10-21</date>
  </docinfo>

  <title>ODBC<!--Interface-->インターフェイス</title>
<indexterm><primary>ODBC</primary></indexterm>
<indexterm><primary>PostgreSQL</primary><secondary>ODBC</secondary></indexterm>
  <note>
   <para>
    <!--Background information originally by Tim Goeke-->
    Tim Goeke（<email>tgoeke@xpressway.com</email>）による情報を元に作成されました。
    
   </para>
  </note>

  <para>
   <!--<acronym>ODBC</acronym> (Open Database Connectivity) is an abstract 
   <acronym>API</acronym> 
   that allows you to write applications that can interoperate
   with various <acronym>RDBMS</acronym> servers.
   <acronym>ODBC</acronym> provides a product-neutral interface 
   between frontend applications and database servers,
   allowing a user or developer to write applications that are 
   transportable between servers from different manufacturers..-->

   <acronym>ODBC</acronym>（Open Database Connectivity）とは抽象的な<acronym>API</acronym>で、さまざまな<acronym>RDBMS</acronym>サーバーと協調動作するアプリケーションを作れるようにするための仕組みです。<acronym>ODBC</acronym>は、フロントエンドアプリケーションとデータベースサーバーの間に、製品に依存しないインターフェイスを提供し、ユーザーや開発者が異なった製造者のサーバー間で汎用性のあるアプリケーションの作成を可能としています。

  </para>

  <sect1 id="odbc-background">
   <title><!--Background-->背景</title>

   <para>
    <!--The <acronym>ODBC</acronym> <acronym>API</acronym> matches up 
    on the backend to an <acronym>ODBC</acronym>-compatible data source.
    This could be anything from a text file to an Oracle or 
    <productname>Postgres</productname> <acronym>RDBMS</acronym>.-->

    <acronym>ODBC</acronym><acronym>API</acronym>はバックエンド上で<acronym>ODBC</acronym>互換のデータソースと協調して動作するもので、そのソースはテキスト形式のファイルからOracle、<productname>Postgres</productname> <acronym>RDBMS</acronym>など多くで使用することができます。

   </para>

   <para>
    <!--The backend access come from <acronym>ODBC</acronym> drivers, 
    or vendor specifc drivers that
    allow data access.   <productname>psqlODBC</productname> is such a driver,
    along with others that are
    available, such as the OpenLink <acronym>ODBC</acronym> drivers.-->

    バックエンドのアクセスは、<acronym>ODBC</acronym>ドライバ、あるいはデータに接続することのできるベンダー固有のドライバから行われます。<productname>psqlODBC</productname>はそのようなドライバの一例で、ほかにもOpenLink <acronym>ODBC</acronym>ドライバといったものがあります。

   </para>

   <para>
    <!--Once you write an <acronym>ODBC</acronym> application, 
    you <emphasis>should</emphasis> be able to connect to <emphasis>any</emphasis>
    back end database, regardless of the vendor, as long as the database schema
    is the same.-->

    一度<acronym>ODBC</acronym>アプリケーションを作成すれば、データベースのスキーマが同じである限り、ベンダーの種類にかかわらず、<emphasis>どのような</emphasis>データベースにでも接続することができる<emphasis>はず</emphasis>です。

   </para>

   <para>
    <!--For example. you could have <productname>MS SQL Server</productname>
    and <productname>Postgres</productname> servers that have
    exactly the same data.  Using <acronym>ODBC</acronym>, 
    your Windows application would make exactly the
    same calls and the back end data source would look the same (to the Windows
    app).-->

    たとえば、完全に同じデータを持つ<productname>Microsoft SQL Server</productname>と<productname>Postgres</productname>サーバーがあった場合、<acronym>ODBC</acronym>を使えば、Windowsアプリケーションは、それらをまったく同じように呼び出し、また、それらのバックエンドのデータソースは（Windowsアプリケーションでは）同じように見えます。

   </para>
  </sect1>

  <sect1 id="odbc-install">
   <title><!--Installation-->インストール</title>
<indexterm><primary>ODBC</primary><secondary sortas="いんすとーる">インストール</secondary></indexterm>
   <para>
    <!--The first thing to note about the <productname>psqlODBC</> driver
    (or any <acronym>ODBC</> driver) is that there must exist a
    <firstterm>driver manager</> on the system where the
    <acronym>ODBC</> driver is to be used. There exists a free
    <acronym>ODBC</> driver for Unix called <productname>iODBC</>
    which can be obtained via <ulink
    url="http://www.iodbc.org">http://www.iodbc.org</ulink>.
    Instructions for installing <productname>iODBC</> are contained in
    the <productname>iODBC</> distribution. Having said that, any
    driver manager that you can find for your platform should support
    the <productname>psqlODBC</> driver, or any other <acronym>ODBC</>
    driver for that matter.-->

    <productname>psqlODBC</>（あるいはほかの<acronym>ODBC</>ドライバ）で、始めに注意しなければいけないことは、<acronym>ODBC</>が使用されるシステム上に、<firstterm>ドライバマネージャ（driver manager）</>が存在していなくてはいけないということです。<productname>iODBC</>と呼ばれるUnix用のフリーな<acronym>ODBC</>ドライバがあり、<ulink url="http://www.iodbc.org">http://www.iodbc.org/</ulink>から入手できます。<productname>iODBC</>のインストール方法は<productname>iODBC</>ディストリビューション内に記述されています。したがってプラットフォームに適した、あらゆるドライバは<productname>psqlODBC</>ドライバ、またはその他の<acronym>ODBC</>ドライバをサポートする必要があります。<indexterm><primary>iODBC</primary></indexterm><indexterm><primary>ODBC</primary><secondary>iODBC</secondary></indexterm>
   </para>

   <para>
    <!--To install <productname>psqlODBC</> you simply need to supply the-->
    <!-- option to the <filename>configure</> script when you are
    building the entire <productname>PostgreSQL</> distribution. The library
    and header files will then automatically be built and installed with the
    rest of the programs. If you forget that option or want to build the ODBC
    driver later you can change into the directory <filename>src/interfaces/odbc</>
    and do <literal>make</> and <literal>make install</> there.-->

    <productname>psqlODBC</>をインストールするには、<productname>PostgreSQL</>ディストリビューションを構築する際に、単に<filename>configure</>に<option>--enable-odbc</>オプションを付けるだけです。ライブラリとヘッダーファイルは自動的にその他のプログラムと一緒に構築を行い、インストールを行います。オプションを付けるのを忘れてしまい、後にODBCドライバを構築したい場合は、<filename>src/interfaces/odbc</>ディレクトリに移動し、<literal>make</>と<literal>make install</>をそこで行ってください。
   </para>

   <para>
    <!--The installation-wide configuration file <filename>odbcinst.ini</> will be
    installed into the directory <filename>/usr/local/pgsql/etc/</>, or equivalent,
    depending on what-->

    インストールのための設定ファイル<filename>odbcinst.ini</>は、<filename>configure</>の際の<option>--prefix</>や<option>--sysconfdir</>オプションによって<filename>/usr/local/pgsql/etc/</>、もしくは同等のディレクトリにインストールされます。このファイルは異なった<acronym>ODBC</>ドライバで共有できるので、共有領域にインストールすることができます。<indexterm><primary>odbcinst.ini</primary></indexterm>


    <!-- options
    you supplied to <filename>configure</>. Since this file can also be shared
    between different <acronym>ODBC</> drivers you can also install it in a shared
    location. -->

    <!--To do that, override the location of this file with the-->

    そのためには、このファイルの場所を<option>--with-odbcinst</>オプションで書き換えてください。

   </para>

   <para>
    <!--Additionally, you should install the ODBC catalog extensions.  That will
    provide a number of functions mandated by the ODBC standard that are not
    supplied by <productname>PostgreSQL</> by default. The file
    <filename>/usr/local/pgsql/share/odbc.sql</> (in the default installation layout)
    contains the appropriate definitions, which you can install as follows:-->

    また、ODBCのカタログ拡張もインストールする必要があります。そのカタログは<productname>PostgreSQL</>デフォルトで提供されていない多くのODBC標準から要求される関数を提供します。<filename>/usr/local/pgsql/share/odbc.sql</>ファイル（デフォルトでインストールされる場所）には適切な定義が書かれていますので、それを下記のコマンドを使ってインストールしてください。<indexterm><primary>ODBC</primary><secondary sortas="かたろぐかくちょう">カタログ拡張</secondary></indexterm>
</para>


<programlisting>
psql -d template1 -f <replaceable>LOCATION</>/odbc.sql
</programlisting>

<para>
    <!--where specifying <literal>template1</literal> as the target
    database will ensure that all subsequent new databases will
    have these same definitions.-->

    ここで、対象データベースとして<literal>template1</literal>を指定することによって、その後に作成されるすべての新しいデータベースは、同じ定義がされることを保証します。
   </para>

   <sect2>
    <title><!--Supported Platforms-->サポートされているプラットフォーム</title>
<indexterm><primary>ODBC</primary><secondary sortas="さぽーとされているぷらっとふぉーむ">サポートされているプラットフォーム</secondary></indexterm>
    <para>
     <!--<productname>psqlODBC</productname> has been built and tested
     on <productname>Linux</productname>. There have been reports of success
     with FreeBSD and with Solaris. There are no known restrictions
     on the basic code for other platforms which already support
     <productname>Postgres</productname>.-->

     <productname>psqlODBC</productname>は、<productname>Linux</productname>上で構築され、テストされています。FreeBSDやSolarisでも起動できるという報告もあります。その他の、すでに<productname>Postgres</productname>がサポートされているプラットフォームでの基本コードの制約は知られていません。<indexterm><primary>psqlODBC</primary></indexterm><indexterm><primary>ODBC</primary><secondary>psqlODBC</secondary></indexterm>

    </para>
   </sect2>
  </sect1>

  <sect1 id="odbc-config">
   <title><!--Configuration Files-->設定ファイル</title>
<indexterm><primary>ODBC</primary><secondary sortas="せっていふぁいる">設定ファイル</secondary></indexterm>
   <para>
    <!--<filename>~/.odbc.ini</filename> contains user-specified access information 
    for the <productname>psqlODBC</productname> driver. 
    The file uses conventions typical for <productname>Windows</productname> 
    Registry files, but despite this restriction can be made to work.-->

    <filename>~/.odbc.ini</filename>には、<productname>psqlODBC</productname>ドライバのためにユーザーが指定した接続情報が含まれています。このファイルは<productname>Windows</productname>のレジストリファイルに特化した規約を使用していますが、この規約に関係なく使用できます。<indexterm><primary>.odbc.ini</primary></indexterm>

   </para>

   <para>
    <!--The <filename>.odbc.ini</filename> file has three required sections. 
    The first is <literal>[ODBC Data Sources]</literal>
    which is a list of arbitrary names and descriptions for each database 
    you wish to access. The second required section is the 
    Data Source Specification and there will be one of these sections
    for each database. 
    Each section must be labeled with the name given in 
    <literal>[ODBC Data Sources]</literal> and must contain the following entries: -->

    <filename>.odbc.ini</filename>ファイルには、3つの必須セクションがあります。最初のセクションは<literal>[ODBC Data Sources]</literal>で、それは、接続したいデータベースそれぞれの自由な名前と説明のリストです。2つ目のセクションはデータソースの明細で、各データベースにそれぞれこのセクションがあります。各セクションは<literal>[ODBC Data Sources]</literal>で指定された名前で記され、下記の内容を含んでいる必要があります。
</para>

<programlisting>
Driver = <replaceable>prefix</replaceable>/lib/libpsqlodbc.so
Database=<replaceable>DatabaseName</replaceable>
Servername=localhost
Port=5432
</programlisting>

    <tip>
     <para>
      <!--Remember that the <productname>Postgres</productname> database name is
      usually a single word, without path names of any sort. 
      The <productname>Postgres</productname> server manages the actual access
      to the database, and you need only specify the name from the client.-->

      <productname>Postgres</productname>のデータベース名は一般的に1単語で、あらゆるパス名であってはいけません。<productname>Postgres</productname>サーバーが実際のデータベースへのアクセスを管理するので、クライアントからはデータベースの名前だけ指定すれば結構です。
     </para>
    </tip>

<para>
    <!--Other entries may be inserted to control the format of the display. 
    The third required section is <literal>[ODBC]</literal> 
    which must contain the <literal>InstallDir</literal> keyword 
    and which may contain other options.-->

    その他の入力は表示のフォーマットを制御するために挿入できます。3つ目の必須セクションは<literal>[ODBC]</literal>で、その他のオプションを含んでいる<literal>InstallDir</literal>を含んでいなければいけません。さらにその他のオプションを入れてもかまいません。
   </para>

   <para>
    <!--Here is an example <filename>.odbc.ini</filename> file, 
    showing access information for three databases:-->

    3つのデータベースの接続情報が書いてある<filename>.odbc.ini</filename>ファイルの例を以下に示します。
</para>

<programlisting>
[ODBC Data Sources]
DataEntry = Read/Write Database
QueryOnly = Read-only Database
Test = Debugging Database
Default = Postgres Stripped

[DataEntry]
ReadOnly = 0
Servername = localhost
Database = Sales

[QueryOnly]
ReadOnly = 1
Servername = localhost
Database = Sales

[Test]
Debug = 1
CommLog = 1
ReadOnly = 0
Servername = localhost
Username = tgl
Password = "no$way"
Port = 5432
Database = test

[Default]
Servername = localhost
Database = tgl
Driver = /opt/postgres/current/lib/libpsqlodbc.so

[ODBC]
InstallDir = /opt/applix/axdata/axshlib
</programlisting>
  </sect1>

  <sect1 id="odbc-windows">
   <title><productname>Windows</productname> <!--Applications-->アプリケーション</title>
<indexterm><primary>Windows</primary></indexterm><indexterm><primary>ODBC</primary><secondary>Windows</secondary></indexterm>
   <para>
    <!--In the real world, differences in drivers and the level of 
    <acronym>ODBC</acronym> support
    lessens the potential of <acronym>ODBC</acronym>:-->

    現実的には、ドライバやその<acronym>ODBC</acronym>サポートレベルの違いが<acronym>ODBC</acronym>のポテンシャルを制限してしまいます。
</para>

    <itemizedlist spacing="compact" mark="bullet">
     <listitem>
      <para>
       <!--Access, Delphi, and Visual Basic all support <acronym>ODBC</acronym> directly.-->

       Access、Delphi、Visual Basicはすべて、<acronym>ODBC</acronym>を直接サポートしています。<indexterm><primary>Access</primary></indexterm><indexterm><primary>Delphi</primary></indexterm><indexterm><primary>Visual Basic</primary></indexterm>
      </para>
     </listitem>
     <listitem>
      <para>
       <!--Under C++, such as Visual C++, 
       you can use the C++ <acronym>ODBC</acronym> <acronym>API</acronym>.-->

       Visual C++のようなC++の環境下では、C++ <acronym>ODBC</acronym> <acronym>API</acronym>を使うことができます。<indexterm><primary>Visual C++</primary></indexterm>
      </para>
     </listitem>

     <listitem>
      <para>
       <!--In Visual C++, you can use the CRecordSet class, which wraps the 
       <acronym>ODBC</acronym> <acronym>API</acronym>
       set within an MFC 4.2 class.  This is the easiest route if you are doing
       Windows C++ development under Windows NT.-->

       Visual C++では、CRecordSetクラスを使うことができます。CRecordSetクラスは、MFC 4.2クラスの中に<acronym>ODBC</acronym><acronym>API</acronym>セットを包み隠します。これは、Windows NT環境下でWindows C++の開発をする場合、最も簡単な方法です。<indexterm><primary>Visual C++</primary><secondary>CRecordSet</secondary></indexterm>

      </para>
     </listitem>
    </itemizedlist>

   <sect2>
    <title><!--Writing Applications-->アプリケーションの作成</title>
<indexterm><primary>ODBC</primary><secondary sortas="あぷりけーしょんのさくせい">アプリケーションの作成</secondary></indexterm>
    <para>
     <quote>
      <!--If I write an application for <productname>Postgres</productname> 
      can I write it using <acronym>ODBC</acronym> calls
      to the <productname>Postgres</productname> server, 
      or is that only when another database program 
      like MS SQL Server or Access needs to access the data?-->

      <productname>Postgres</productname>のアプリケーションを作成する場合、<productname>Postgres</productname>サーバーに対して<acronym>ODBC</acronym>の呼び出しを行えるでしょうか？ それとも、ODBCはMicrosoft SQL ServerやAccessのような他のデータベースプログラムがそのデータにアクセスするときだけしか使えないのでしょうか。
     </quote>
    </para>
    <para>
     <!--The <acronym>ODBC</acronym> <acronym>API</acronym>
     is the way to go.
     For <productname>Visual C++</productname> coding you can find out more at
     Microsoft's web site or in your <productname>VC++</productname> docs.-->

     <acronym>ODBC</acronym><acronym>API</acronym>は、どちらにも使用できます。マイクロソフトのWebサイト、あるいはVisual C++のドキュメントの中で<productname>Visual C++</productname>でのコーディング情報を、見つけることができます。
    </para>

    <para>
     <!--Visual Basic and the other RAD tools have Recordset objects 
     that use <acronym>ODBC</acronym>
     directly to access data.  Using the data-aware controls, you can quickly
     link to the <acronym>ODBC</acronym> back end database 
     (<emphasis>very</emphasis> quickly).-->

     Visual Basicや他のRADツールは、直接データに接続するために、レコードセット（Recordset）オブジェクトを使用した<acronym>ODBC</acronym>を持っています。このデータ認識装置（data-aware controls）を使用することで、<emphasis>非常に</emphasis>すばやく<acronym>ODBC</acronym>バックエンドデータベースにリンクすることができます。

    </para>

    <para>
     <!--Playing around with MS Access will help you sort this out.  Try using
     <literal>File->Get External Data</literal>.-->

     Accessを試してみればよくわかると思います。Accessの<literal>[ファイル]-[外部データの取り込み]</literal>メニューを使ってみてください。
    </para>

    <tip>
     <para>
      <!--You'll have to set up a DSN first.-->
       まず最初にDSNを設定しなければいけません。<indexterm><primary>DSN</primary></indexterm><indexterm><primary>ODBC</primary><secondary>DSN</secondary></indexterm>
     </para>
    </tip>

   </sect2>
  </sect1>

  <sect1 id="odbc-applixware">
   <title>ApplixWare</title>
<indexterm><primary>ApplixWare</primary></indexterm><indexterm><primary>ODBC</primary><secondary>ApplixWare</secondary></indexterm>
   <para>
    <!--<productname>ApplixWare</productname> has an 
    <acronym>ODBC</acronym> database interface
    supported on at least some platforms. 
    <productname>ApplixWare</productname> 4.4.2 has been
    demonstrated under Linux with <productname>Postgres</productname> 7.0 
    using the <productname>psqlODBC</productname>
    driver contained in the <productname>Postgres</productname> distribution.-->

    <productname>ApplixWare</productname>は、少なくとも複数のプラットフォームでサポートされている<acronym>ODBC</acronym>データベースインターフェイスを持っています。<productname>ApplixWare</productname>4.4.2は、Linux上の<productname>Postgres</productname>7.0で、<productname>Postgres</productname>のディストリビューションに含まれている<productname>psqlODBC</productname>ドライバを使用して動作確認されています。
   </para>

   <sect2>
    <title><!--Configuration-->設定</title>
<indexterm><primary>ODBC</primary><secondary>ApplixWare</secondary><tertiary sortas="せってい">設定</tertiary></indexterm>
    <para>
     <!--<productname>ApplixWare</productname> must be configured correctly
     in order for it to
     be able to access the <productname>Postgres</productname>
     <acronym>ODBC</acronym> software drivers.-->

     <productname>Postgres</productname> <acronym>ODBC</acronym>ソフトウェアに接続するためには、<productname>ApplixWare</productname>を正しく設定する必要があります。
    </para>

    <procedure>
     <title><!--Enabling ApplixWare Database Access-->
            ApplixWareデータベース接続を可能にする方法
     </title>
<indexterm><primary>ODBC</primary><secondary>ApplixWare</secondary><tertiary sortas="でーたべーすせつぞく">データベース接続</tertiary></indexterm>
     <para>
      <!--These instructions are for the <literal>4.4.2</literal> release of
      <productname>ApplixWare</productname> on <productname>Linux</productname>.
      Refer to the <citetitle>Linux Sys Admin</citetitle> on-line book
      for more detailed information.-->

      これらの説明は、<productname>Linux</productname>用の<productname>ApplixWare</productname> <literal>4.4.2</literal>のためのものです。より詳細は<citetitle>Linux Sys Admin</citetitle>のオンラインブックを参照してください。
     </para>

     <step performance="required">
      <para>
       <!--You must modify <filename>axnet.cnf</filename> so that
       <filename>elfodbc</filename> can
       find <filename>libodbc.so</filename>
       (the <acronym>ODBC</acronym> driver manager) shared library.
       This library is included with the ApplixWare distribution,
       but <filename>axnet.cnf</filename> needs to be modified to point to the 
       correct location.-->

       <filename>libodbc.so</filename>（<acronym>ODBC</acronym>ドライバマネージャ）共有ライブラリを<filename>elfodbc</filename>が認知できるように<filename>axnet.cnf</filename>を書き換える必要があります。このライブラリはApplixWareディストリビューションに含まれていますが、<filename>axnet.cnf</filename>を修正して、このライブラリの正しい位置を指すようにする必要があります。
      </para>

      <para>
       <!--As root, edit the file
       <filename><replaceable>applixroot</replaceable>/applix/axdata/axnet.cnf</filename>.-->

       rootで、<filename><replaceable>applixroot</replaceable>/applix/axdata/axnet.cnf</filename>を編集します。
      </para>

      <substeps>

       <step performance="required">
	<para>
	<!--At the bottom of <filename>axnet.cnf</filename>,
	 find the line that starts with-->

         <filename>axnet.cnf</filename>の下記で始まる行を見つけてください。
</para>

<programlisting>
#libFor elfodbc /ax/<replaceable>...</replaceable>
</programlisting>
       </step>
       <step performance="required">
	<para>
	<!--Change line to read-->
         その行のコメントを外して有効にしてください。
</para>

<programlisting>
libFor elfodbc <replaceable>applixroot</replaceable>/applix/axdata/axshlib/lib
</programlisting>

<para>
	<!--which will tell elfodbc to look in this directory
	 for the <acronym>ODBC</acronym> support library.
	 Typically <productname>Applix</productname> is installed in
	 <filename>/opt</filename> so the full path would be
	 <filename>/opt/applix/axdata/axshlib/lib</filename>,
	 but if you have installed <productname>Applix</productname>
	 somewhere else then change the path accordingly.-->

         これは<acronym>ODBC</acronym>サポートライブラリをこのディレクトリで探すようにelfodbcに指示しています。一般的に、<productname>Applix</productname>は<filename>/opt</filename>にインストールされているので、絶対パスは<filename>/opt/applix/axdata/axshlib/lib</filename>となりますが、<productname>Applix</productname>を別の場所にインストールした場合はそれに合ったパスを設定してください。
	</para>
       </step>
      </substeps>
     </step>

     <step performance="required">
      <para>
       <!--Create <filename>.odbc.ini</filename> as 
       described above.  You may also want to add the flag-->

       上記の説明のように、<filename>.odbc.ini</filename>を作成してください。また、以下のフラグを、データベース特定の<filename>.odbc.ini</filename>に追加すると、フィールドの表示は<literal>**BLOB**</literal>のようになりません。
</para>

<programlisting>
TextAsLongVarchar=0
</programlisting>

<para>
       <!--to the database-specific portion of <filename>.odbc.ini</filename>
       so that text fields will not be shown as <literal>**BLOB**</literal>.-->

      </para>
     </step>
    </procedure>

    <procedure>
     <title><!--Testing ApplixWare ODBC Connections-->
            ApplixWare ODBC接続のテスト
     </title>

     <step performance="required">
      <para>
       <!--Bring up <application>Applix Data</application>-->
       <application>Applix Data</application>を起動します。
      </para>
     </step>

     <step performance="required">
      <para>
       <!--Select the <productname>Postgres</productname> database of interest.-->
       使用したい<productname>Postgres</productname>データベースを選択してください。
      </para>

      <substeps>

       <step performance="required">
	<para>
	<!--Select <command>Query->Choose Server</command>.-->
         <command>Query-&gt;Choose Server</command>を選択してください。
	</para>
       </step>
       <step performance="required">
	<para>
	<!--Select <acronym>ODBC</acronym>, and click <command>Browse</command>.
	 The database you configured in <filename>.odbc.ini</filename>
	 should be shown.  Make sure that the <option>Host: field</option>
	 is empty (if it is not, axnet will try to contact axnet on another machine
	 to look for the database).-->

        <acronym>ODBC</acronym>を選択し、<command>Browse</command>をクリックしてください。<filename>.odbc.ini</filename>で設定したデータベースが現れるはずです。<option>Host:</option>フィールドが空であることを確認してください（空でない場合、axnetはデータベースを検索するために他のマシンと接続しようとします）。
	</para>
       </step>
       <step performance="required">
	<para>
	 <!--Select the database in the box that was launched by <command>Browse</command>,
	 then click <command>OK</command>.-->

         <command>Browse</command>で開かれたダイアログボックスからデータベースを選択し、<command>OK</command>をクリックしてください。
	</para>
       </step>
       <step performance="required">
	<para>
	 <!--Enter username and password in the login identification dialog,
	 and click <command>OK</command>.-->

         認証ダイアログボックスでユーザー名とパスワードを入力し、<command>OK</command>をクリックしてください。
	</para>
       </step>
      </substeps>

      <para>
       <!--You should see "<literal>Starting elfodbc server</literal>"
       in the lower left corner of the
       data window.  If you get an error dialog box, see the debugging section
       below.-->

       左下の端に「<literal>Starting elfodbc server</literal>」と表示されているはずです。エラーメッセージのダイアログが表示された場合には、下記のデバッグ方法のセクションを参照してください。
      </para>
     </step>
     <step performance="required">
      <para>
       <!--The 'Ready' message will appear in the lower left corner of the data
       window.  This indicates that you can now enter queries.-->

       データウィンドウの左下に「Ready」メッセージが表示されます。これは問い合わせを入力できる状態であることを意味します。
      </para>
     </step>
     <step performance="required">
      <para>
       <!--Select a table from Query->Choose tables, and then select Query->Query
       to access the database.  The first 50 or so rows from the table should
       appear.-->

       <command>Query-&gt;Choose tables</command>でテーブルを選択し、データベースに接続するために<command>Query-&gt;Query</command>を選択してください。最初の50行ほどが表示されます。
      </para>
     </step>
    </procedure>
   </sect2>

   <sect2>
    <title><!--Common Problems-->よくある問題点</title>
<indexterm><primary>ODBC</primary><secondary>ApplixWare</secondary><tertiary sortas="よくあるもんだいてん">よくある問題点</tertiary></indexterm>
    <para>
     <!--The following messages can appear while trying to make an
     <acronym>ODBC</acronym> connection through 
     <productname>Applix Data</productname>:-->

     <productname>Applix Data</productname>を使って<acronym>ODBC</acronym>接続を行う際に、以下のようなメッセージが表示される場合があります。
</para>

     <variablelist>
      <varlistentry>
       <term>
	Cannot launch gateway on server
       </term>
       <listitem>
	<para>
	 <!--<literal>elfodbc</literal> can't find <filename>libodbc.so</filename>.  
	 Check your <filename>axnet.cnf</filename>.-->

          <literal>elfodbc</literal>が<filename>libodbc.so</filename>を見つけることができなかったことを意味します。<filename>axnet.cnf</filename>を確認してください。
	</para>
       </listitem>
      </varlistentry>

      <varlistentry>
       <term>
	Error from ODBC Gateway:
	IM003::[iODBC][Driver Manager]Specified driver could not be loaded
       </term>
       <listitem>
	<para>
	 <!--<filename>libodbc.so</filename> cannot find the driver listed in
	 <filename>.odbc.ini</filename>. Verify the settings.-->

         <filename>.odbc.ini</filename>で指定されているドライバを<filename>libodbc.so</filename>が見つけることができなかったことを意味します。設定を確認してください。
	</para>
       </listitem>
      </varlistentry>

      <varlistentry>
       <term>
	Server: Broken Pipe
       </term>

       <listitem>
	<para>
	 <!--The driver process has terminated due to some other
	 problem.  You might not have an up-to-date version
	 of the <productname>Postgres</productname>
	 <acronym>ODBC</acronym> package.-->

         ドライバのプロセスが、他の問題によって終了したことを意味します。<productname>Postgres</productname> <acronym>ODBC</acronym>の最新のバージョンではないことが原因として考えられます。
	</para>
       </listitem>
      </varlistentry>

      <varlistentry>
       <term>
	setuid to 256: failed to launch gateway
       </term>

       <listitem>
	<para>
	 <!--The September release of ApplixWare v4.4.1 (the first release with official
	 <acronym>ODBC</acronym> support under Linux) shows problems when usernames
	 exceed eight (8) characters in length.
	 Problem description ontributed by Steve Campbell
	 (<email>scampbell@lear.com</email>).-->

         <!--9月にリリースされた-->ApplixWare v4.4.1（Linuxの初の公式<acronym>ODBC</acronym>サポートがあるリリース）では、ユーザー名が8文字を越える長さの場合、少々問題が生じます。この問題の解説はSteve Campbellによるものです（<email>scampbell@lear.com</email>）。
	</para>
       </listitem>
      </varlistentry>

     </variablelist>

     <note>
      <title><!--Author-->著者</title>

      <para>
       <!--Contributed by-->寄稿：Steve Campbell（<email>scampbell@lear.com</email>）,
       1998-10-20
      </para>
     </note>

<para>
     <!--The <application>axnet</application> program's security system
     seems a little suspect. <application>axnet</application> does things
     on behalf of the user and on a true
     multiple user system it really should be run with root security 
     (so it can read/write in each user's directory).  
     I would hesitate to recommend this, however, since we have no idea what 
     security holes this creates.-->

      <application>axnet</application>プログラムのセキュリティには、少々問題があるようです。<application>axnet</application>はユーザーの代わりにさまざまなことを行うので、複数のユーザーシステムではrootのセキュリティを実行しながら（各ユーザーのディレクトリ内に読み書きができるため）使用すべきです。しかし、この方法をお勧めするのは少々躊躇してしまいます。この方法がどんなセキュリティホールを作りだすかわからないからです。
    </para>
   </sect2>

   <sect2>
    <title><!--Debugging ApplixWare ODBC Connections-->
           ApplixWare ODBC接続のデバッグ
    </title>
<indexterm><primary>ODBC</primary><secondary>ApplixWare</secondary><tertiary sortas="でばっぐ">デバッグ</tertiary></indexterm>
    <para>
     <!--One good tool for debugging connection problems uses the Unix system
     utility <application>strace</application>.-->

     接続問題のデバッグの方法としては、Unixシステムの<application>strace</application>ユーティリティを使用する方法があげられます。
    </para>
    <procedure>
     <title><!--Debugging with strace-->straceを使用してのデバッグ方法</title>
<indexterm><primary>strace</primary></indexterm><indexterm><primary>ODBC</primary><secondary>ApplixWare</secondary><tertiary sortas="straceでのでばっぐ">straceでのデバッグ</tertiary></indexterm>
     <step performance="required">
      <para>
       <!--Start applixware.-->ApplixWareを起動させてください。
      </para>
     </step>
     <step performance="required">
      <para>
       <!--Start an <application>strace</application> on
       the axnet process.  For example, if-->

      axnetプロセスに対して<application>strace</application>を開始させてください。たとえば、以下のようにしてみます。
</para>

<programlisting>
% ps -aucx | grep ax 
</programlisting>

<para>
       <!--shows-->この場合、下記のように表示されます。
</para>

<programlisting>
cary   10432  0.0  2.6  1740   392  ?  S  Oct  9  0:00 axnet
cary   27883  0.9 31.0 12692  4596  ?  S   10:24  0:04 axmain
</programlisting>

      <para>
       <!--Then run-->そして、下記のコマンドを実行してください。
	</para>

<programlisting>
% strace -f -s 1024 -p 10432
</programlisting>
     </step>

     <step performance="required">
      <para>
       <!--Check the strace output.-->
       straceの結果を確認してください。
      </para>
      <note>
       <title><!--Note from Cary-->Caryからの補足</title>

       <para>
	<!--Many of the error messages from <productname>ApplixWare</productname>
	go to <filename>stderr</filename>, 
	but I'm not sure where <filename>stderr</filename>
	is sent, so <application>strace</application> is the way to find out.-->

        <productname>ApplixWare</productname>からのエラーメッセージの多くは、<filename>stderr</filename>に出力されますが、その<filename>stderr</filename>が実際にどこに出力されるのかが不明なため、<application>strace</application>を使うことをお勧めします。
       </para>
      </note>
     </step>
    </procedure>

    <para>
     <!--For example, after getting
     a "<literal>Cannot launch gateway on server</literal>", 
     I ran strace on axnet and got-->

     一例として、「<literal>Cannot launch gateway on server</literal>」が表示された後、axnetにstraceを実行すると下記のように表示されました。
</para>

<programlisting>
[pid 27947] open("/usr/lib/libodbc.so", O_RDONLY) = -1 ENOENT
(No such file or directory)
[pid 27947] open("/lib/libodbc.so", O_RDONLY) = -1 ENOENT
(No such file or directory)
[pid 27947] write(2, "/usr2/applix/axdata/elfodbc:
can't load library 'libodbc.so'&bsol;n", 61) = -1 EIO (I/O error)
</programlisting>  

<para>
     <!--So what is happening is that applix elfodbc is searching for libodbc.so, but it
     can't find it.  That is why axnet.cnf needed to be changed.-->

     これは、applix elfodbcはlibodbc.soを見つけることができなかったということを意味しています。これからもわかるように、axnet.cnfを変更する必要があります。
    </para>
   </sect2>

   <sect2>
    <title><!--Running the ApplixWare Demo-->
           ApplixWare Demoを起動させる
    </title>

    <para>
     <!--In order to go through the 
     <citetitle>ApplixWare Data Tutorial</citetitle>, you need to create
     the sample tables that the Tutorial refers to.  The ELF Macro used to
     create the tables tries to use a NULL condition 
     on many of the database columns,
     and <productname>Postgres</productname> does not currently allow this option.-->

     <citetitle>ApplixWareデータチュートリアル</citetitle>を読み進める前に、まず、チュートリアルが扱っているサンプルテーブルを作成する必要があります。テーブルを作成する際に使用されているELFマクロは多くのデータベースの列をNULL状態にしようとしますが、現在の<productname>Postgres</productname>では、これは不可能となっています。
    </para>
    <para>
     <!--To get around this problem, you can do the following:-->
     この問題を解決するためには、下記のことを実行してください。
    </para>

    <procedure>
     <title><!--Modifying the ApplixWare Demo-->
            ApplixWare Demoを編集する
     </title>

     <step performance="required">
      <para>
       <!--Copy <filename>/opt/applix/axdata/eng/Demos/sqldemo.am</filename>
       to a local directory.-->

       ローカルディレクトリに<filename>/opt/applix/axdata/eng/Demos/sqldemo.am</filename>をコピーしてください。
      </para>
     </step>

     <step performance="required">
      <para>
       <!--Edit this local copy of <filename>sqldemo.am</filename>:-->
       コピーしたローカルの<filename>sqldemo.am</filename>の内容を以下のように編集してください。
      </para>

      <substeps>

       <step performance="required">
	<para>
	 <!--Search for 'null_clause = "NULL"-->
         「null_clause = "NULL"」という行を検索します。
	</para>
       </step>

       <step performance="required">
	<para>
	 <!--Change this to null_clause = ""-->
         これを「null_clause = ""」に変更します。
	</para>
       </step>

      </substeps>
     </step>
     <step performance="required">
      <para>
       <!--Start <application>Applix Macro Editor</application>.-->
       <application>Applix Macro Editor</application>を起動させてください。
      </para>
     </step>

     <step performance="required">
      <para>
       <!--Open the sqldemo.am file from the <application>Macro Editor</application>.-->
       <application>Macro Editor</application>でsqldemo.amファイルを開いてください。
      </para>
     </step>

     <step performance="required">
      <para>
       <!--Select <command>File->Compile and Save</command>.-->
       <command>File-&gt;Compile and Save</command>を選択してください。
      </para>
     </step>

     <step performance="required">
      <para>
       <!--Exit <application>Macro Editor</application>.-->
       <application>Macro Editor</application>を終了させてください。
      </para>
     </step>

     <step performance="required">
      <para>
       <!--Start <application>Applix Data</application>.-->
       <application>Applix Data</application>を起動させてください。
      </para>
     </step>

     <step performance="required">
      <para>
       <!--Select <command>*->Run Macro</command>-->
       <command>*-&gt;Run Macro</command>を選択してください。
      </para>
     </step>

     <step performance="required">
      <para>
       <!--Enter the value "<literal>sqldemo</literal>", then click <command>OK</command>.-->
       「<literal>sqldemo</literal>」と入力し、<command>OK</command>をクリックしてください。
      </para>

      <para>
       <!--You should see the progress in the status line of the data window
       (in the lower left corner).-->

       左下にあるデータウィンドウのステータスラインに、進行状況が表示されます。
      </para>
     </step>

     <step performance="required">
      <para>
       <!--You should now be able to access the demo tables.-->
       これでサンプルテーブルが参照できます。
      </para>
     </step>
    </procedure>
   </sect2>
   <sect2>
    <title><!--Useful Macros-->有用なマクロ</title>
<indexterm><primary>ODBC</primary><secondary>ApplixWare</secondary><tertiary sortas="まくろ">マクロ</tertiary></indexterm>
    <para>
     <!--You can add information about your
     database login and password to the standard Applix start-up
     macro file. This is an example 
     <filename>~/axhome/macros/login.am</filename> file:-->

     標準Applix起動マクロファイルにデータベースのログイン名とパスワード情報を追加することができます。以下に<filename>~/axhome/macros/login.am</filename>ファイルの例を示します。
</para>

<programlisting>
macro login
set_set_system_var@("sql_username@","tgl")
set_system_var@("sql_passwd@","no$way")
endmacro
</programlisting>

     <caution>
      <para>
       <!--You should be careful about the file protections on any file containing
       username and password information.-->
       ユーザー名やパスワード情報が書かれたファイルの保護には十分注意してください。
      </para>
     </caution>
   </sect2>

  </sect1>
 </chapter>

<!-- 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
sgml-parent-document:nil
sgml-default-dtd-file:"./reference.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:("/usr/lib/sgml/catalog")
sgml-local-ecat-files:nil
End:
-->
