<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><!-- InstanceBegin template="../Templates/DocTemp.dwt" codeOutsideHTMLIsLocked="false" -->
<head>
<!-- InstanceBeginEditable name="doctitle" -->
<title>Omnidex Environments</title>
<!-- InstanceEndEditable --> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="../docs.css" rel="stylesheet" type="text/css">
<script language="JavaScript1.2" src="../docs.js"></script>
<!-- InstanceBeginEditable name="head" --><!-- InstanceEndEditable -->
</head>

<body>
<table width="100%" class="lightblue" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td><a href="http://www.omnidex.com"><img src="../images/flatlogo.gif" width="95" height="25" hspace="3" vspace="3" border="0"></a></td>
    <td><img src="../images/omnidex.gif" width="109" height="25" hspace="3" vspace="3"></td>
    <td align="right" valign="top"><p class="banner"><a href="../Contents.htm">Contents</a> 
        | <a href="../Quick%20Links.htm">Quick Links</a></p></td>
  </tr>
</table>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
  <tr> 
    <td width="175" class="bar"><p class="banner">&nbsp;</p></td>
    <td align="right" class="bar"> <!-- InstanceBeginEditable name="Section Title" -->
      <h1>Omnidex Environments</h1>
      <!-- InstanceEndEditable --></td>
  </tr>
  <tr> 
    <td width="175" class="left1 lightblue"><img src="../images/blank.gif" width="10" height="20"> 
    </td>
    <td valign="top" class="left1 lightblue">&nbsp; </td>
  </tr>
  <tr> 
    <td width="175" valign="top" class="left"><!-- InstanceBeginEditable name="leftnav" --> 
      <p><a href="#create">Create an Environment Catalog</a></p>
      <p><a href="#syntax">Syntax</a></p>
      <p class="line">&nbsp;</p>
      <p><a href="Column%20Statement.htm">Column Statement</a></p>
      <p><a href="Database%20Statement.htm">Database Statement</a></p>
      <p><a href="Environment%20Statement.htm">Environment Statement</a></p>
      <p><a href="Index%20Statement.htm">Index Statement</a></p>
      <p><a href="Message%20Statement.htm">Message Statement</a></p>
      <p><a href="Rule%20Statement.htm">Rule Statement</a></p>
      <p><a href="Table%20Statement.htm">Table Statement</a></p>
      <p>Environment Catalog</p>
      <!-- InstanceEndEditable --></td>
    <td valign="top" class="content"> <!-- InstanceBeginEditable name="Content" --> 
      <h2>Omnidex Environment Catalog</h2>
      <p>The Omnidex Environment Catalog is the starting point for constructing 
        an Omnidex application. It is the primary source of information used by 
        Omnidex to access a database and the Omnidex indexes. </p>
      <p>An Environment Catalog is a collection of information, objects that include 
        descriptions of databases, tables, columns and indexes, as well as Omnidex 
        specific information like optimization options and configuration details. 
        Omnidex uses this information to determine how to access the databases. 
        It can also store supplemental information about the databases, that can 
        enhance Omnidex's ability to optimize queries.</p>
      <p>The Environment Catalog is both a superset and subset of information 
        about the database. It is a superset of database information because a 
        single Environment Catalog can contain information about multiple databases, 
        including databases from different database management systems. However, 
        it contains only a subset of the information tracked in the database management 
        system about each of those databases, limited to the few details required 
        by Omnidex.</p>
      <p>Omnidex is aware only of the objects defined in the Environment Catalog. 
        Any databases, tables, columns, etc... not defined in the Environment 
        Catalog do not exist, as far as Omnidex is concerned, providing a fundamental 
        level of security.</p>
      <p>In the case of flat-file databases, the Environment Catalog plays a special 
        role. Since plain flat-files rarely have meta-data stored in them, the 
        Environment Catalog acts as the database management system, describing 
        the tables and columns and their relationships to each other, as well 
        as providing standard SQL, ODBC and JDBC access to the data.</p>
      <p class="line">&nbsp;</p>
      <h3><a name="create"></a>Create an Environment Catalog</h3>
      <p>An Omnidex Environment begins as an environment source file, a text file 
        containing all the environment definitions, then is compiled into the 
        Environment Catalog used by Omnidex.</p>
      <p>The Omnidex utility OACOMP is compiles the environment source file into 
        the Environment Catalog.</p>
      <p>Environment source files can be created using any system text editor. 
        Alternatively, the Omnidex utility, OAHELPER, can automatically generate 
        an environment source file for Oracle and Informix databases.</p>
      <p>The Omnidex utility OADECOMP can be used to de-compile an existing environment 
        catalog into an editable source file.</p>
      <p>An environment file is divided into several statements beginning with 
        the ENVIRONMENT statement. </p>
      <ul>
        <li>The <strong>ENVIRONMENT</strong> declaration contains overall configuration 
          settings and is followed by one or more DATABASE statements. </li>
        <li>Each <strong>DATABASE</strong> declaration descibes the basic database 
          characteristics and access instructions, followed by a series of TABLE 
          statements. </li>
        <li>Each <strong>TABLE</strong> declaration describes the table including 
          a series of COLUMN statements. </li>
        <li>Each <strong>COLUMN</strong> declaration describes the database column, 
          including datatype and length. </li>
        <li><strong>INDEX</strong> statements describing the native indexes in 
          the database, follow the TABLE declarations. </li>
      </ul>
      <p>This sequence is then repeated, in this order, for each database being 
        described in this environment.</p>
      <p>The following is a simple example Environment source file with a single 
        database and a single table:</p>
      <p class="ex">Environment start_env</p>
      <p class="ex"><img src="../images/blank.gif" width="10" height="10">Database 
        start</p>
      <p class="ex"><img src="../images/blank.gif" width="10" height="10">Type 
        flatfile</p>
      <p class="ex">table sales_facts</p>
      <p class="ex"><img src="../images/blank.gif" width="10" height="10">column 
        odx_seq_ID datatype INTEGER length 2</p>
      <p class="ex"><img src="../images/blank.gif" width="10" height="10">column 
        acct datatype CHAR length 10</p>
      <p class="ex"><img src="../images/blank.gif" width="10" height="10">column 
        amount datatype INTEGER length 4</p>
      <p class="line">&nbsp;</p>
      <h3><a name="syntax"></a>Syntax</h3>
      <p>Statements in an environment catalog must follow a certain hierarchy. 
        For example, COLUMN definition statements must follow the TABLE definition 
        statement that defines the table to which the columns belong.</p>
      <p>See the individual statement topics for specific details.</p>
      <p align="center"> <img name="envheirarchy" src="envheirarchy.gif" width="318" height="192" border="0" usemap="#m_envheirarchy" alt="">
        <map name="m_envheirarchy">
          <area shape="poly" coords="233,54,317,54,317,88,233,88,233,54" href="Message Statement.htm" alt="" >
          <area shape="poly" coords="1,157,85,157,85,191,1,191,1,157" href="Column Statement.htm" alt="" >
          <area shape="poly" coords="140,54,224,54,224,88,140,88,140,54" href="Message Statement.htm" alt="" >
          <area shape="poly" coords="95,105,179,105,179,139,95,139,95,105" href="Index Statement.htm" alt="" >
          <area shape="poly" coords="2,105,86,105,86,139,2,139,2,105" href="Table Statement.htm" alt="" >
          <area shape="poly" coords="47,54,131,54,131,88,47,88,47,54" href="Database Statement.htm" alt="" >
          <area shape="poly" coords="134,0,228,0,228,34,134,34,134,0" href="Environment Statement.htm" alt="" >
        </map>
      </p>
      <p>A single environment can contain multiple databases, which can be any 
        combination of supported database types.</p>
      <p> </p>
      <p>Logical names can be up to 32 characters long and must begin with a letter 
        (upper or lower case). They can contain letters, numbers or any of the 
        following characters:</p>
      <p class="ex">_ ^ % @ ! #</p>
      <p> </p>
      <p>Spaces and periods (.) cannot be used in names. Names containing other 
        characters, or OACOMP or SQL reserved words, must be enclosed in double 
        quotes (&quot; &quot;).</p>
      <p> </p>
      <p>You can comment the Environment source file using conventional C-style 
        comment notation:</p>
      <p class="ex">/* This is a comment<br>
        which can span multiple lines. */</p>
      <h5>Syntax Convention</h5>
      <p> <span class="ex">[ ]</span> Optional syntax</p>
      <p><span class="ex">{ }</span> Required, choose one from the set.</p>
      <p>option1 | option2 - Choose option1 or option2</p>
      <p>option1 / option2 - option1 and option2 have the same meaning, both work.</p>
      <p>&nbsp;</p>
      <!-- InstanceEndEditable --><P align="right"><a href="#">Top</a> </P>
	  </td>
  </tr>
  <tr>
    <td width="175" class="bbar">
<p>&nbsp;</p></td>
    <td align="right" valign="middle" class="bbar"> <p class="banner">Omnidex 
        Version 4.1 Build 1 - E10.04 - Dynamic Information Systems Corporation 
        - Copyright &copy; 2004</p></td>
  </tr>
</table>
<div class="menu0" id="m1" onMouseOver="changeClass('menu1','m1'); changeVisibility('visible','s1');" onMouseOut="changeClass('menu0','m1'); changeVisibility('hidden','s1');"> 
  <a href="../index.htm">Home</a></div>      
<div class="menu0" id="m2" onMouseOver="changeClass('menu1','m2'); changeVisibility('visible','s2');" onMouseOut="changeClass('menu0','m2'); changeVisibility('hidden','s2');"> 
  <a href="../Omnidex%20Concepts/Omnidex%20Overview.htm">Omnidex</a></div>      
<div class="menu0" id="m3" onMouseOver="changeClass('menu1','m3'); changeVisibility('visible','s3');" onMouseOut="changeClass('menu0','m3'); changeVisibility('hidden','s3');"> 
  <a href="../Getting%20Started/Getting%20Started.htm">Getting Started </a></div>      
<div class="menu0" id="m4" onMouseOver="changeClass('menu1','m4'); changeVisibility('visible','s4');" onMouseOut="changeClass('menu0','m4'); changeVisibility('hidden','s4');"> 
  <a href="../Development/Development.htm">Development</a></div>      
<div class="menu0" id="m5" onMouseOver="changeClass('menu1','m5'); changeVisibility('visible','s5');" onMouseOut="changeClass('menu0','m5'); changeVisibility('hidden','s5');"> 
  <a href="../Utilities/Utilities.htm">Utilities</a></div>      
<div class="menu0" id="m6" onMouseOver="changeClass('menu1','m6'); changeVisibility('visible','s6');" onMouseOut="changeClass('menu0','m6'); changeVisibility('hidden','s6');"> 
  <a href="../Appendix/Appendix.htm">Appendix</a></div>
    <td>&nbsp;</td>
  </tr>
</table> 
<table id="s1" border="0" cellspacing="0" cellpadding="0" onMouseOver="changeClass('menu1','m1'); changeVisibility('visible','s1');" onMouseOut="changeClass('menu0','m1'); changeVisibility('hidden','s1');">
  <tr> 
    <td id="s11" class="menu1" onMouseOver="changeClass('menu0','s11');" onMouseOut="changeClass('menu1','s11');"><a href="../Whats%20New.htm">What's 
      New!</a></td>
  </tr>
  <tr> 
    <td id="s12" class="menu1" onMouseOver="changeClass('menu0','s12');" onMouseOut="changeClass('menu1','s12');"><a href="../Quick%20Links.htm">Quick 
      Links</a></td>
  </tr>
  <tr> 
    <td id="s13" class="menu1" onMouseOver="changeClass('menu0','s13');" onMouseOut="changeClass('menu1','s13');"><a href="../Contents.htm">Contents</a></td>
  </tr>
</table>
<table id="s2" border="0" cellspacing="0" cellpadding="0" onMouseOver="changeClass('menu1','m2'); changeVisibility('visible','s2');" onMouseOut="changeClass('menu0','m2'); changeVisibility('hidden','s2');">
  <tr> 
    <td id="s21" class="menu1" onMouseOver="changeClass('menu0','s21');" onMouseOut="changeClass('menu1','s21');"><a href="../Omnidex%20Concepts/Features/Features.htm">Features</a></td>
  </tr>
  <tr> 
    <td id="s22" class="menu1" onMouseOver="changeClass('menu0','s22');" onMouseOut="changeClass('menu1','s22');"><a href="../Omnidex%20Concepts/Indexing%20Strategies/Indexing%20Strategies.htm">Indexing 
      Strategies</a></td>
  </tr>
  <tr> 
    <td id="s23" class="menu1" onMouseOver="changeClass('menu0','s23');" onMouseOut="changeClass('menu1','s23');"><a href="../Omnidex%20Concepts/Indexing%20Options/Indexing%20Options.htm">Indexing 
      Options </a></td>
  </tr>
  <tr> 
    <td id="s24" class="menu1" onMouseOver="changeClass('menu0','s24');" onMouseOut="changeClass('menu1','s24');"><a href="../Omnidex%20Concepts/Index%20Maintenance/Index%20Maintenance.htm">Index 
      Maintenance </a></td>
  </tr>
  <tr> 
    <td id="s25" class="menu1" onMouseOver="changeClass('menu0','s25');" onMouseOut="changeClass('menu1','s25');"><a href="../Omnidex%20Concepts/Partitioning/Partitioning.htm">Optimization</a></td>
  </tr>
  <tr> 
    <td id="s26" class="menu1" onMouseOver="changeClass('menu0','s26');" onMouseOut="changeClass('menu1','s26');"><a href="../Omnidex%20Concepts/Index%20Maintenance/Index%20Maintenance.htm">Partitioning</a></td>
  </tr>
  <tr> 
    <td id="s27" class="menu1" onMouseOver="changeClass('menu0','s27');" onMouseOut="changeClass('menu1','s27');"><a href="../Omnidex%20Concepts/Text/Omnidex%20Text.htm">Omnidex Text</a></td>
  </tr>
</table>
<table id="s3" border="0" cellspacing="0" cellpadding="0" onMouseOver="changeClass('menu1','m3'); changeVisibility('visible','s3');" onMouseOut="changeClass('menu0','m3'); changeVisibility('hidden','s3');">
  <tr> 
    <td id="s31" class="menu1" onMouseOver="changeClass('menu0','s31');" onMouseOut="changeClass('menu1','s31');"><a href="../Getting%20Started/1%20-%20Installation%20and%20Setup.htm">Server 
      Setup Guides</a></td>
  </tr>
  <tr> 
    <td id="s32" class="menu1" onMouseOver="changeClass('menu0','s32');" onMouseOut="changeClass('menu1','s32');"><a href="../Getting%20Started/Omnidex%20Client/Windows%20Client.htm">Windows 
      Client</a></td>
  </tr>
  <tr> 
    <td id="s33" class="menu1" onMouseOver="changeClass('menu0','s33');" onMouseOut="changeClass('menu1','s33');"><a href="../Database%20Platforms/Supported%20Database%20Platforms.htm">Database 
      Platforms </a></td>
  </tr>
  <tr> 
    <td id="s34" class="menu1" onMouseOver="changeClass('menu0','s34');" onMouseOut="changeClass('menu1','s34');"><a href="../Environment%20Catalog/Environment%20Catalog.htm">Environment 
      Catalog</a> </td>
  </tr>
</table>
<table id="s4" border="0" cellspacing="0" cellpadding="0" onMouseOver="changeClass('menu1','m4'); changeVisibility('visible','s4');" onMouseOut="changeClass('menu0','m4'); changeVisibility('hidden','s4');">
  <tr> 
    <td id="s41" class="menu1" onMouseOver="changeClass('menu0','s41');" onMouseOut="changeClass('menu1','s41');"><a href="../SQL%20Reference/SQL%20Reference.htm">SQL 
      Reference</a> </td>
  </tr>
  <tr> 
    <td id="s42" class="menu1" onMouseOver="changeClass('menu0','s42');" onMouseOut="changeClass('menu1','s42');"><a href="../Development/ODBC/ODBC.htm">ODBC</a></td>
  </tr>
  <tr> 
    <td id="s43" class="menu1" onMouseOver="changeClass('menu0','s43');" onMouseOut="changeClass('menu1','s43');"><a href="../Development/JDBC/JDBC.htm">JDBC</a></td>
  </tr>
  <tr> 
    <td id="s44" class="menu1" onMouseOver="changeClass('menu0','s44');" onMouseOut="changeClass('menu1','s44');"><a href="../Development/OmniAccess%20API/OmniAccess%20API.htm">OmniAccess 
      API</a></td>
  </tr>
  <tr> 
    <td id="s45" class="menu1" onMouseOver="changeClass('menu0','s45');" onMouseOut="changeClass('menu1','s45');"><a href="../Development/Debugging/OMNIDEX_DEBUG.htm">Debugging</a></td>
  </tr>
</table>
<table id="s5" border="0" cellspacing="0" cellpadding="0" onMouseOver="changeClass('menu1','m5'); changeVisibility('visible','s5');" onMouseOut="changeClass('menu0','m5'); changeVisibility('hidden','s5');">
  <tr> 
    <td id="s51" class="menu1" onMouseOver="changeClass('menu0','s51');" onMouseOut="changeClass('menu1','s51');"><A href="../Utilities/DBINSTAL/DBINSTAL.htm">DBINSTAL</A></td>
  </tr>
  <tr> 
    <td id="s52" class="menu1" onMouseOver="changeClass('menu0','s52');" onMouseOut="changeClass('menu1','s52');"><a href="../Utilities/DSEDIT/DSEDIT.htm">DSEDIT</a></td>
  </tr>
  <tr> 
    <td id="s53" class="menu1" onMouseOver="changeClass('menu0','s53');" onMouseOut="changeClass('menu1','s53');"><a href="../Utilities/NSADMIN/NSADMIN.htm">NSADMIN</a></td>
  </tr>
  <tr> 
    <td id="s54" class="menu1" onMouseOver="changeClass('menu0','s54');" onMouseOut="changeClass('menu1','s54');"><a href="../Utilities/OACOMP/OACOMP.htm">OACOMP</a></td>
  </tr>
  <tr> 
    <td id="s55" class="menu1" onMouseOver="changeClass('menu0','s55');" onMouseOut="changeClass('menu1','s55');"><a href="../Utilities/OADECOMP/OADECOMP.htm">OADECOMP</a></td>
  </tr>
  <tr> 
    <td id="s56" class="menu1" onMouseOver="changeClass('menu0','s56');" onMouseOut="changeClass('menu1','s56');"><a href="../Utilities/OAHELPER/OAHELPER.htm">OAHELPER</a></td>
  </tr>
  <tr> 
    <td id="s57" class="menu1" onMouseOver="changeClass('menu0','s57');" onMouseOut="changeClass('menu1','s57');"><A href="../Utilities/ODXAIM/ODXAIM.htm">ODXAIM</A></td>
  </tr>
  <tr> 
    <td id="s58" class="menu1" onMouseOver="changeClass('menu0','s58');" onMouseOut="changeClass('menu1','s58');"><a href="../Utilities/ODXMAKE/ODXMAKE.htm">ODXMAKE</a></td>
  </tr>
  <tr> 
    <td id="s59" class="menu1" onMouseOver="changeClass('menu0','s59');" onMouseOut="changeClass('menu1','s59');"><a href="../Utilities/ODXNET/ODXNET.htm">ODXNET</a></td>
  </tr>
  <tr> 
    <td id="s510" class="menu1" onMouseOver="changeClass('menu0','s510');" onMouseOut="changeClass('menu1','s510');"><A href="../Utilities/ODXQUERY/ODXQUERY.htm">ODXQUERY</A></td>
  </tr>
  <tr> 
    <td id="s511" class="menu1" onMouseOver="changeClass('menu0','s511');" onMouseOut="changeClass('menu1','s511');"><a href="../Utilities/ODXSQL/ODXSQL.htm">ODXSQL</a></td>
  </tr>
  <tr> 
    <td id="s512" class="menu1" onMouseOver="changeClass('menu0','s512');" onMouseOut="changeClass('menu1','s512');"><a href="../Utilities/REGMAINT/REGMAINT.htm">REGMAINT</a></td>
  </tr>
  <tr> 
    <td id="s513" class="menu1" onMouseOver="changeClass('menu0','s513');" onMouseOut="changeClass('menu1','s513');"><A href="../Utilities/REGTEST/REGTEST.htm">REGTEST</A></td>
  </tr>
  <tr> 
    <td id="s514" class="menu1" onMouseOver="changeClass('menu0','s514');" onMouseOut="changeClass('menu1','s514');"><a href="../Utilities/SNOWGEN/SNOWGEN.htm">SNOWGEN</a></td>
  </tr>
  <tr> 
    <td id="s515" class="menu1" onMouseOver="changeClass('menu0','s515');" onMouseOut="changeClass('menu1','s515');"><a href="../Utilities/SYSINFO/SYSINFO.htm">SYSINFO</a></td>
  </tr>
  <tr> 
    <td id="s516" class="menu1" onMouseOver="changeClass('menu0','s516');" onMouseOut="changeClass('menu1','s516');"><a href="../Utilities/VERSIONS/VERSIONS.htm">VERSIONS</a></td>
  </tr>
  <tr> 
    <td id="s517" class="menu1" onMouseOver="changeClass('menu0','s517');" onMouseOut="changeClass('menu1','s517');"><a href="../Utilities/VIEWGEN/VIEWGEN.htm">VIEWGEN</a></td>
  </tr>
</table>
<table id="s6" border="0" cellspacing="0" cellpadding="0" onMouseOver="changeClass('menu1','m6'); changeVisibility('visible','s6');" onMouseOut="changeClass('menu0','m6'); changeVisibility('hidden','s6');">
  <tr> 
    <td id="s61" class="menu1" onMouseOver="changeClass('menu0','s61');" onMouseOut="changeClass('menu1','s61');"><a href="../Appendix/Cardinality.htm">Cardinality</a></td>
  </tr>
  <tr> 
    <td id="s62" class="menu1" onMouseOver="changeClass('menu0','s62');" onMouseOut="changeClass('menu1','s62');"><a href="../Appendix/Date%20Formats.htm">Date 
      Formats </a></td>
  </tr>
  <tr> 
    <td id="s63" class="menu1" onMouseOver="changeClass('menu0','s63');" onMouseOut="changeClass('menu1','s63');"><a href="../Appendix/Environment%20Variables.htm">Environment 
      Variables </a></td>
  </tr>
  <tr> 
    <td id="s64" class="menu1" onMouseOver="changeClass('menu0','s64');" onMouseOut="changeClass('menu1','s64');"><a href="../Appendix/File%20Name%20Handling.htm">File 
      Name Handling</a></td>
  </tr>
  <tr> 
    <td id="s65" class="menu1" onMouseOver="changeClass('menu0','s65');" onMouseOut="changeClass('menu1','s65');"><a href="../Appendix/Glossary%20A.htm">Glossary</a></td>
  </tr>
  <tr> 
    <td id="s66" class="menu1" onMouseOver="changeClass('menu0','s66');" onMouseOut="changeClass('menu1','s66');"><a href="../Appendix/Null.htm">Null</a></td>
  </tr>
  <tr> 
    <td id="s67" class="menu1" onMouseOver="changeClass('menu0','s67');" onMouseOut="changeClass('menu1','s67');"><a href="../Appendix/OAGLOBAL.htm">OAGLOBAL</a></td>
  </tr>
  <tr> 
    <td id="s68" class="menu1" onMouseOver="changeClass('menu0','s68');" onMouseOut="changeClass('menu1','s68');"><a href="../Appendix/Operating%20Limits.htm">Operating 
      Limits</a></td>
  </tr>
  <tr> 
    <td id="s69" class="menu1" onMouseOver="changeClass('menu0','s69');" onMouseOut="changeClass('menu1','s69');"><a href="../Appendix/Provided%20Managed%20Synonym%20Lists.htm">Managed 
      Synonym Lists</a></td>
  </tr>
  <tr> 
    <td id="s70" class="menu1" onMouseOver="changeClass('menu0','s70');" onMouseOut="changeClass('menu1','s70');"><a href="../Appendix/Reserved%20Words.htm">Reserved 
      Words</a></td>
  </tr>
  <tr> 
    <td id="s71" class="menu1" onMouseOver="changeClass('menu0','s71');" onMouseOut="changeClass('menu1','s71');"><a href="../Appendix/Supported%20Datatypes.htm">Supported 
      Data Types</a></td>
  </tr>
</table>
<p>&nbsp;</p>
</body>
<!-- InstanceEnd --></html>
