Subject: Web interface for CDS/isis databases

I am sending herewith some info on IQUERY version 1.0.3 which would help=20
you interface a back end cds/isis database with a web based query form=20
via Iquery. The program is at: http://gti.net/iquery/binaries

If any Indian LIbrary succeesfully uses this IQUERY, I would like to=20
benefit from their experience!


>=20
> Interactive Query for CDS/ISIS Search System                   Access:
>                                                               [Image]
> [Image] Introducing IQUERY=A9 v1.0.3 Engine                  August 199=
6
>=20
> Description
>   IQUERY is a software designed to run under three plattforms, Linux,
>   SCO and DOS. The system was designed to act as an interactive
>   search engine for Mini Micro CDS/ISIS DataBases, it was developed
>   taking the directives showed in the ISIS 3.0 version. The software
>   can run in three different modes, as an interactive command shell,
>   as a CGI to run under WWW servers, and as an interpreter taking the
>   statements from a file.
>=20
> How it Works
>   When you start up IQUERY, the fisrt thing, is search for the
>   SYSPAR.PAR file in the default ISIS install path defined by IQUERY
>   ( '/usr/local/isis-3.0/' for Linux and SCO or 'C:\ISIS\' for DOS)
>   or the path that you can pass to the program with the '-conf
>   absolute_path' parameter, in that file is searched for the DataPath
>   that is where your databases files reside in ( IQUERY also
>   recognizes that you can have your files redirected by the dbn.PAR
>   file where dbn is the Data Base Name), from there, it changes to
>   one of the three modalities: shell, html or file. In any of the
>   modalities IQUERY reads and process one line at a time showing the
>   results in the standard output terminal.
>   Keep in mind that when you pass an 'absolute_path' with the '-conf'
>   parameter this path must have the final slash, this is, if your
>   'SYSPAR.PAR' is located in the 'isis' directory under '/usr' your
>   parameter would be '/usr/isis/' and NOT '/usr/isis'.
>   The Search Engine has two special parameters to play with, there
>   are '-nocase' permitting you the search of KeyWords case
>   insensitive, and '-nostrict' that consider all the blank spaces in
>   the beginning and end of the KeyWord to find for, case sensitive
>   searchs and strict delete of blank spaces is the default for
>   IQUERY.
>   The line below describes all the parameters to IQUERY, refer to the
>   Specification for HTML for a complete explanation on how IQUERY
>   works for httpd CGI interfaces.
>=20
>   iquery [ -conf isis_path ][ -html | -file absolute_path_to_file ] [
>   -nocase ] [ -nostrict ]
>=20
> Statements recognized.
>                                    Reads the file identified by
>                                    'FileName' and outputs its
>                                    contents. Note that 'FileName'
>   #FILEPRINT  FileName             would be an absolute file path or
>                                    a relative one ( relative to the
>                                    isis system path).
>                                    -----------------------------------
>                                    This statement prints the
>                                    'OutputString', this string can be
>                                    of any format, but be carefull
>   #STRPRINT   OutputString         when you are in HTML (read the
>                                    Specification for HTML later in
>                                    this document).
>                                    -----------------------------------
>                                    Open the Data Base file determined
>                                    by 'DBFile' and build inside
>                                    IQUERY all the structures
>   #OPEN       DBFile:DBAlias       necessary to manage the
>                                    information, from there, this Data
>                                    Base is refered as 'DBAlias'.
>                                    -----------------------------------
>                                    Closes and freeis the memory of
>                                    the Data Base file structure that
>   #CLOSE      DBAlias              was created by a previous OPEN
>                                    statement.
>                                    -----------------------------------
>                                    Do a 'CLOSE DBAlias' for any open
>   #CLOSEALL                        alias in the internal IQUERY Data
>                                    Base Structure.
>                                    -----------------------------------
>                                    First the SELECT statement opens
>                                    all the comma separated DBFile_x
>                                    associating DBAlias_x, and those
>                                    alias/files were maintained open
>                                    as long as IQUERY terminates or
>                                    when a CLOSE statement is
>                                    encountered. Iterates along the
>   #SELECT     OutputFormat         Data Base, secuential or indexed,
>    FROM       DBFile_1:DBAlias_1,  and for those registers that match
>    WHERE      ...                  the 'QueryCondition' prints in the
>               QueryCondition       standard output the
>                                    'OutputFormat', read later in this
>                                    document the Field Replacement
>                                    Section, to understand how to
>                                    build in IQUERY SELECT statements,
>                                    the 'OutputFormat' and
>                                    'QueryCondition' fields.
>                                    -----------------------------------
>                                    Prints IQUERY version and some
>                                    information about registered
>   #VERSION                         version or the Trial up expiration
>                                    date, only works in shell mode.
>                                    -----------------------------------
>=20
> Field Replacement
>   Each field in each register has two identifers, Field Tag and Field
>   Name, and also you may have more than one open Alias corresponding
>   to different Data Base Files, thus, we need to set a convention on
>   naming each field in each Alias in some part of the output string
>   or in a query condition of a SELECT statement.
>   When you are constructing the 'QueryCondition' you have to put your
>   query like: DBAlias, followed by a '.', the Tag Number, the match
>   separator '=3D', and finally the string that you have to match. The
>   matches will be reached by default when the string is part of the
>   field in the record, if you would like to change this type of match
>   be sure to check the Match String/Integers Modifiers below. For
>   example, i have to select in the alias CORPORATION those records
>   that have in the Tag number 40 ( that is identified also by the
>   Field Name 'Section') the string 'Sales', then my 'QueryCondition'
>   must be 'CORPORATION.40=3DSales'.
>   Also it's possible to write QueryConditions including boolean
>   operators joining two or more conditions in a query which is very
>   common in database searching to narrow down the search request, be
>   sure to check later the Boolean Operators section.
>   The format of the 'OutputFormat' is so similar, you can put
>   anything you want that will be printed when a match is found, and
>   when you would like to replace a Field Value in the string, you
>   have to put there a '%' Field Replacement Character folowed by the
>   DBAlias, a '.' and finally the Tag Number of the field. Continuing
>   with the example in the previous paragraph, now i would like to
>   output the Tag numer 20 ( that is identified also by the Field Name
>   'Employer's Name'), so, my 'OutputFormat' must be
>   '%CORPORATION.20', if you also would like to output the real
>   character '%' then you have to put a '%%' to say IQUERY that
>   ignores the Field Replacement function.
>   Of course this is not the format used in CDS/ISIS program, this is
>   because the software is oriented to WWW Clients that have its own
>   Format Macro Language, unless you can use it in text only format.
>   Also in this IQUERY version there isn't a way to extract a Sub
>   Field nor defining a block of repeatable extraction, i'm working
>   now in this features for a newer version...
>=20
>   Match String/Integer Modifiers
>     The match string modifier is the first character in the string
>     you want to match, and the actions taken are described below...
>=20
>       '=3D' Match exactly the string passed, i.e., 'ALIAS.40=3D=3DSales=
'
>       match for 'Sales' and do not match for 'Sales Representative'.
>       '!' Is the complement of the '=3D' modifier, do not match for
>       'Sales', and match for 'Sales Representative or any other
>       field string value.
>       '~' Do not match those fields that have the match string
>       inside, i.e, 'ALIAS.40=3D~Sales', do not match for 'Sales',
>       'Sales Representative' or 'Dept. of Sales', and do match for
>       'February Sale' or any other.
>       '^' Match those fields that begins with the match string
>       passed, the match were reached for 'Sales' and do not for
>       'Sales Representative' or 'Corp. Sales'.
>       '>' This applies only to a integer filed, this is, if you want
>       to match those fields that are greater than some integter you
>       must put this modifier. The condition 'ALIAS.60=3D>45' match
>       those records that have persons of 45 years old or more having
>       the tag 60 corresponding to the description Employee's name.
>       '<' This is the complement of the above modifier, that is, if
>       you want to match records having integer fields less than some
>       integer value, the last chance is if you want to match fields
>       having and exact integer value, you have to use the '=3D' sign
>       as for the string exact matching, the type conversion will be
>       done automatically.
>       '\' Is the escape char, for example if your fields have in its
>       first position any of the Modifiers Characters and you'd like
>       to match exactly for '^Sales-Rep', then your match string must
>       be '\^Sales-Rep'.
>=20
>   Boolean Operators
>     It's so difficult to think in good QueryConditions without
>     boolean operators, you need this feature to join two or more
>     conditions building more complex expressions, as an example,
>     suppose you have to do a query that match for some Country and
>     also a Description, so you need to put in your QueryCondition two
>     expressions joined by an AND. IQUERY have included the two
>     necessary boolean operators: %AND and %OR. As an example suppose
>     you has a Library DataBase and your job consist in matching those
>     books that were edited in 'Uruguay' and has 'Computers
>     Architecture' in it's Description, so your QueryCondition will
>     be: 'ALIAS.80=3D=3DUruguay %AND ALIAS.90=3DComputers Architecture'
>     having the tags 80 and 90 as Country and Description. You can
>     build QueryConditions of more than two match statements joining
>     with %AND and %OR's.
>=20
> Specification for HTML
>   In shell mode or file mode, there is no mystery, the statement you
>   enter is the order that IQUERY will process and the iquery program
>   could be installed in any directory; in html mode there are three
>   things that you have to keep in mind when you pass data to the
>   IQUERY CGI.
>   First, you have to link or copy your iquery program to your CGI
>   execute path and rename it to iquery.cgi or do anything you want
>   that permits the httpd server to execute iquery. Also, you have to
>   learn the HTML code to build FORMS (maybe you are a doctor in
>   that), and the convention to pass data to a CGI, the prefered
>   method of passing data to IQUERY is POST, in any case GET is also
>   covered by IQUERY.
>   Second, if you would like to pass more than one command line
>   parameter to a CGI, the HTML interface only can pass the first,
>   that's why I added a variable that you must call 'HTMLPARAMS' to
>   pass there the other parameters like '-nocase' and '-nostrict', and
>   you have to pass only '-html' parameter to the CGI.
>   Third, IQUERY takes the statements from the 'QUERY' variable, so
>   when you are writing an IQUERY code you must have to put it in a
>   variable called 'QUERY', inside this variable IQUERY takes its
>   order statements ignoring spaces and CR's/LF's (like HTML code),
>   and translate the ';' character as a CR/LF, so the line 'strprint
>   hi world; strprint bye', will be translated inside IQUERY as
>   strprint hi world
>   strprint bye
>   processing 'strprint hi world' and then 'strprint bye', if you
>   forget to put the ';' in the end of each statement in your code,
>   IQUERY understands nothing.
>=20
>   Macro Substitution
>     Up to here, you have the knowledge for writing IQUERY code for
>     static orders, now i will explain how you can write a code to
>     pass inside the 'QUERY' variable a macro substitution to tell
>     IQUERY to replace that macro with a real value.
>     A Macro Substitution will occur when you put the beginning macro
>     character '$' followed by a '{', the variable name and the close
>     macro character '}', when IQUERY finds a macro, try to obtain the
>     real value from the variable that has a name equal to the name of
>     the macro, for example the statement 'strprint ${SEARCH}' will be
>     interpreted inside IQUERY as a print out of the value of the
>     variable 'SEARCH' passed to IQUERY. Also you have to know that
>     IQUERY does the macro substitution before the execution of the
>     first statement has passed.
>=20
> IQUERY Examples
>   Employees Corporation Database. This is a simple example putting
>   all the information in this document together. I make a separate
>   html page for the real form & query code explanation so you can
>   view or save in a simple action of 'View -> Document Source'.
>=20
>   Spanish Web Servers This is a real IQUERY example of a search in a
>   CDS/ISIS DataBase that have information for all the Spanish Web
>   Hosts maintained here by Marcelo Kruk.
>=20
>                               DOWNLOAD!!!
>                     IQUERY=A9 v1.0.3b trial version
>=20
> ----------------------------------------------------------------------
> WebEdition and IQUERY Design by Alejandro Ferreira Guido.

--=20