+<tt/gw.description/. You might also consider specifying
+<tt/gw.account/, <tt/gw.bibset/, <tt/gw.resultset/ and <tt/gw.portno/
+in the target resource file. The user only needs to use the command
+<tt>target </tt><em>mytarget</em> to use the target. Also, since we
+already specified database names, the user doesn't need to use the
+<tt/base/ command.
+
+<sect1>CCL to RPN mapping
+
+<p>
+The mapping between CCL-queries and RPN are stored in files —
+normally with the suffix <tt>.bib</tt>. We will refer these
+files as bibset-files. You might consult the file <tt/default.bib/
+to see an example of such file.
+
+The mapping is necessary because targets usually only support a little
+subset of the Bib-1 attribute set and because the CCL qualifiers
+(field names) are not standardized. A bibset-file is specified
+by the <tt/gw.bibset/ resource.
+
+Column zero of a bib-file line either hold a hash character (<tt/#/)
+indicating a comment in which case the rest of the line is
+ignored; or a CCL qualifier.
+
+The name of the CCL qualifier is up to you. However, the special
+qualifier name <tt/term/ applies to the case where no qualifier
+is specified in CCL. The CCL qualifier is
+followed by one or more mapping specifications. A mapping
+specification takes the form:
+
+<em/type/<tt/=/<em/value/<tt/,/<em/value/...
+
+The type is simply one of the six Bib-1 attribute query types:
+<descrip>
+<tag/u/ Use attribute. Value is an integer.
+<tag/t/ Truncation attribute. Value is an integer; or the
+ value is a combination of:
+ <descrip>
+ <tag/l/ This character indicates that the CCL parser should allow
+ left truncation (2) if indicated by a <tt/?/ on the left side
+ of a term.
+ <tag/r/ This character indicates that the CCL parser should allow
+ right truncation (1) if indicated by a <tt/?/ on the right side
+ of a term.
+ <tag/b/ This character indicates that the CCL parser should allow
+ both left and right (3) truncation indicated by a <tt/?/ on both
+ left and right side of a term.
+ <tag/n/ This character indicates that the CCL parser should announce
+ no truncation (100) if no truncation was specified.
+ </descrip>
+<tag/p/ Position attribute. Valus is an integer.
+<tag/s/ Structure attribute. Value is an integer; or the
+ value is <tt/pw/ in which case the CCL parser announces word (2) or
+ phrase (1) depending on the number of adjacent terms.
+<tag/r/ Relation attribute. Value is an integer; or the value is
+ <tt/o/ in which case, the CCL parser will select <em/less than/,
+ <em/less than or equal/, ... <em/greater than/ — depending on
+ the relation specified in CCL.
+<tag/p/ Position attribute. Value is an integer.
+</descrip>
+
+Consider these bibset-lines:
+<tscreen><verb>
+term t=l,r,b s=pw
+au= u=1 t=l,r,b s=pw
+date u=30 r=o
+</verb></tscreen>
+The first line describes the mapping in when no qualifiers are
+present, as in:
+<tscreen><verb>
+find foo bar?
+</verb></tscreen>
+In this case the right truncation is enabled and the structure is
+<em/phrase/.
+
+The second line is used in this search:
+<tscreen><verb>
+find au=andersen
+</verb></tscreen>
+where the use attribute is <em/author/ and the structure is <em/word/.
+
+The third line is used in:
+<tscreen><verb>
+find date>1990
+</verb></tscreen>
+where the use attribute is <em/date/ and the relation is <em/greater than/.
+
+<sect>Implementation
+
+<p>
+The implementation of the email server includes all the modules described
+in the design deliverable.
+
+The work was roughly carried out as follows:
+<enum>
+<item>The logging facilities and resource management utilities were
+ implemented — virtually all other modules depend on these
+ modules.
+<item>A minimal ES was implemented — including a high-level
+ API to the Z39.50 sub-system and a CCL parser with a few
+ commands, such as FIND and SHOW. This version displayed MARC
+ records in a raw format. This version served as base for the URP.
+<item>The first version of the MARC display formatting tool, FML,
+ was implemented and included in the ES.
+<item>The ETI program was implemented along with the IPC
+ (interprocess communication) utilities based on FIFOs. Facilities
+ to keep connections alive (to Z39.50 targets) was implemented.
+ To identify a user, a file-resident symbol table (small database) was
+ implemented which maps a email username to a unique integer (email userid).
+<item>The protocol persistency was implemented and more CCL commands
+ were added.
+<item>The MONITOR program was implemented.
+</enum>
+
+The following sections cover the most important modules in the ES and
+deviations from the design.
+
+<sect1>Z39.50 Interface layer
+
+<p>
+The design report specified that the Zdist toolkit from CNIDR would
+be used in the ES to provide access to the Z39.50 protocol. The package
+was choosen bacause it is easy to use and, more important, we felt
+that the API would be reasonably stable and supported.
+
+Nevertheless it turned out that CNIDR choose to change the API
+completely around January 1995 and announced a new version
+called zdist102b1-1.
+
+<em>Note: As of this date the newest version of Zdist is still
+zdist102b1-1. CNIDR seems to concentracte on their Isite package
+which also includes a Zdist package presumably similar to the
+standalone Zdist package</em>
+
+During the work with the Zdist package a few bugs were discovered.
+Fortunately, they could be solved within a few days. We also
+discovered that the package lacks result-set references.
+We posted the bug fixes to Kevin Gamiel who is responsible for
+the package but we didn't get responses. So, eventually, we weren't
+satisfied with the package after all.
+
+In February some of us began the development of a new Z39.50 package
+called YAZ — in retrospect somewhat motivated by the
+experiences with existing Z39.50/SR toolkits.
+
+To support result-set references we chose to incorporate a YAZ
+interface in the ES also. And we designed and implemented a
+simple high-level Z39.50 origin API that supported both Zdist and YAZ.
+
+The protocol persistency module was implemented on top of
+the high-level API and not on top of Zdist. The obvious
+advantage is that the persistency module is not tied to one
+particular Z39.50/SR package.
+
+Persistency information stored for each user is simply:
+<itemize>
+<item>hostname and port number.
+<item>authentication string
+<item>selected database(s)
+<item>next result set number
+<item>next result set position
+<item>result set information
+</itemize>
+
+Information about each result set includes:
+<itemize>
+<item>name
+<item>size (number of hits)
+<item>database(s)
+<item>query
+</itemize>
+
+<sect1>CCL
+
+<p>
+The CCL was implemented as described in the design. A CCL utility
+was made as a separate module which implements a tokenization
+package and a parser which translates from FIND to RPN. The
+data structure used to represent the RPN query is also used in
+Z39.50 search API on top of YAZ or Zdist.
+
+The CCL parser is quite configurable. Token names can be redefined to
+one or more names (aliases). Also, the specification of mapping
+between CCL field names (qualifiers) and Bib-1 attributes can be
+specified in either the C API or a file.
+
+Although the Z39.50 system in the ES uses the Bib-1 attribute set, the
+CCL parser itself is not tied to Bib-1.
+
+<sect1>FML
+
+<p>
+
+<sect1>IPC
+
+<p>
+
+<sect>LICENSE
+
+<p>
+ Copyright © 1995, the EUROPAGATE consortium (see below).
+
+ The EUROPAGATE consortium members are:
+
+<itemize>
+<item>University College Dublin
+<item>Danmarks Teknologiske Videnscenter
+<item>An Chomhairle Leabharlanna
+<item>Consejo Superior de Investigaciones Cientificas
+</itemize>
+
+ Permission to use, copy, modify, distribute, and sell this software and
+ its documentation, in whole or in part, for any purpose, is hereby granted,
+ provided that:
+
+ 1. This copyright and permission notice appear in all copies of the
+ software and its documentation. Notices of copyright or attribution
+ which appear at the beginning of any file must remain unchanged.
+
+ 2. The names of EUROPAGATE or the project partners may not be used to
+ endorse or promote products derived from this software without specific
+ prior written permission.
+
+ 3. Users of this software (implementors and gateway operators) agree to
+ inform the EUROPAGATE consortium of their use of the software. This
+ information will be used to evaluate the EUROPAGATE project and the
+ software, and to plan further developments. The consortium may use
+ the information in later publications.
+
+ 4. Users of this software agree to make their best efforts, when
+ documenting their use of the software, to acknowledge the EUROPAGATE
+ consortium, and the role played by the software in their work.
+
+ THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS, IMPLIED, OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
+ WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+ IN NO EVENT SHALL THE EUROPAGATE CONSORTIUM OR ITS MEMBERS BE LIABLE
+ FOR ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF
+ ANY KIND, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA
+ OR PROFITS, WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND
+ ON ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE
+ USE OR PERFORMANCE OF THIS SOFTWARE.