yaz-client — Z39.50/SRU client for implementors
yaz-client  [-a ] [apdulog-b ] [berdump-c ] [cclfile-d ] [dump-f ] [cmdfile-k ] [size-m ] [marclog-p ] [proxy-addr-q ] [cqlfile-t ] [dispcharset-u ] [auth-v ] [loglevel-V] [-x] [server-addr]
yaz-client is a Z39.50/SRU client (origin) with a simple command line interface that allows you to test behavior and performance of Z39.50 targets and SRU servers.
   If the server-addr is specified, the client creates
   a connection to the Z39.50/SRU target at the address given.
  
When yaz-client is started it tries to read commands from one of the following files:
Command file if it is given by option -f.
      .yazclientrc in current working directory.
     
      .yazclientrc in the user's home directory.
      The value of the HOME is used to determine
      the home directory. Normally, HOME is only set
      on POSIX systems such as Linux, FreeBSD, Solaris.
     
filename
       If specified, logging of protocol packages will be appended
       file given. If filename is
       specified as -, the output is written
       to stdout.
      
filename
       If specified, YAZ will dump BER data in readable notation
       to the file specified. If filename
       is specified as - the output is written
       to stdout.
      
filenameIf specified, CCL configuration will be read from the file given.
dump
       If specified, YAZ will dump BER data for all PDUs sent and received 
       to individual files, named
       dump.DDD.raw, 
       where DDD is 001, 002, 003, ..
      
cmdfile
      Reads commands from cmdfile. When
      this option is used, YAZ client does not read .yazclientrc
      from current directory or home directory.
      
sizeSets preferred messages and maximum record size for Initialize Request in kilobytes. Default value is 1024 (1 MB).
filenameIf specified, retrieved records will be appended to the file given.
proxy-addrIf specified, the client will use the proxy at the address given. YAZ client will connect to a proxy on the address and port given. The actual target will be specified as part of the InitRequest to inform the proxy about actual target.
filenameIf specified, CQL configuration will be read from the file given.
displaycharsetIf displaycharset is given, it specifies name of the character set of the output (on the terminal on which YAZ client is running).
auth
       If specified, the auth string
       will be used for authentication.
      
-v level
     level.
       Level is a sequence of tokens separated by comma. Each token
       is a integer or a named LOG item - one of 
       fatal,
       debug,
       warn,
       log,
       malloc,
       all,
       none.
      Prints YAZ version.
Makes the YAZ client print hex dumps of packages sent and received on standard output.
The YAZ client accepts the following commands.
open zurl
  Opens a connection to a server. The syntax for
    zurl is the same as described
    above for connecting from the command line.
   
Syntax:
    [(tcp|ssl|unix|http)':']host
    [:port][/base]
   
quit
  Quits YAZ client
find querySends a Search Request using the query
    given. By default the query is assumed to be PQF. See command
    querytype for more information.
   
delete setnameDeletes result set with name setname
    on the server.
base base1
   base2 ...
  Sets the name(s) of the database(s) to search. One or more
    databases may be specified separated by blanks. This commands overrides
    the database given in zurl.
   
show 
   [start[+number]]
  Fetches records by sending a Present Request from the start
    position given by
    start
    a number of records given by number. If
    start is not given, then the client
    will fetch from position of the last retrieved record plus 1. If
    number is not given, then one record will
    be fetched at a time.
   
scan term
  Scans
    database index for a term. The syntax resembles the syntax
    for find.
    If you want to scan for the word water you could
    write
   
    scan water
   but if you want to scan only in, say the title field, you would write
    scan @attr 1=4 water
   setscan set term
  scanpos pos
  scansize size
  scanstep step
  sort sortspecs
  Sorts a result set. The sort command takes a
    sequence of space-separated sort specifications, with each sort
    specification consisting of two space-separated words (so that the
    whole specification list is made up of an even number of words).
    The first word of each specification
    holds a field (sort criterion) and the second holds flags.
    If the sort criterion includes = it is assumed
    that the SortKey is of type
    sortAttributes using Bib-1: in this case
    the integer before = is
    the attribute type and the integer following =
    is the attribute value.
    If no = is in the criterion it is treated as a
    sortfield of type InternationalString.
    The flags word of each sort specification must consist of
    s 
    for case sensitive or i for case insensitive, and
    < for ascending order or >
    for descending order.
   
sort+
  Same as sort but stores the sorted
    result set in a new result set.
   
authentication openauth
  Sets up a authentication string if a server requires
    authentication (v2 OpenStyle). The authentication string is first
    sent to the server when the 
    open command is
    issued and the Z39.50 Initialize Request is sent, so this command
    must be used before open in order to be effective.
    A common convention for the authopen string
    is that the username - and password is separated by a slash, e.g.
    myusername/mysecret.
   
sru method version
  Selects SRU method and version.
    Must be one of POST,
    GET, SOAP (default). Version
    should be either 1.1 or 1.2. Other versions are allowed - for testing
    purposes (version negotiation with SRU server).
   
list_all
  This command displays status and values for many settings.
lslb n
  Sets the limit for when no records should be returned together with the search result. See the Z39.50 standard for more details.
ssub n
  Sets the limit for when all records should be returned with the search result. See the Z39.50 standard for more details.
mspn n
  Sets the number of records should be returned if the
    number of records in the result set is between the values of
    lslb and ssub.
    See the
    
     Z39.50 standard
    
    for more details.
   
status
  Displays the values of lslb,
    ssub and mspn.
   
setname
  Switches named result sets on and off. Default is on.
cancel
  Sends a Trigger Resource Control Request to the target.
format oid
  Sets the preferred transfer syntax for retrieved records. yaz-client supports all the record syntaxes that currently are registered. See Z39.50 Standard for more details. Commonly used records syntaxes include usmarc, sutrs, grs1 and xml.
elements e
  Sets the element set name for the records. Many targets support element sets are B (for brief) and F (for full).
close
  Sends a Z39.50 Close APDU and closes connection with the peer
querytype type
  Sets the query type as used by command 
   find.
    The following is supported:
    prefix for
	Prefix Query Notation (Type-1 Query);
    ccl for CCL search (Type-2 Query),
    cql for CQL (Type-104 search with CQL OID),
    ccl2rpn for
	CCL to RPN conversion (Type-1 Query).
    cql2rpn for
	CQL to RPN conversion (Type-1 Query).
   
attributeset set
  Sets attribute set OID for prefix queries (RPN, Type-1).
refid id
  Sets reference ID for Z39.50 Request(s).
itemorder
   type no
  Sends an Item Order Request using the ILL External. 
    type is either 1 or 2 which corresponds to
    ILL-Profile 1 and 2 respectively. The no
    is the Result Set position of the record to be ordered.
   
update
   action
   recid
   doc
  Sends Item Update Request. The action
    argument must be the action type: one of insert,
    replace, delete and
    update. The second argument, 
    recid, is the
    record identifier (any string). Third argument which is optional is
    the record document for the request. If doc is a quoted string
    (double quotes) the string content is used verbatim. If doc is not
    a quoted string, it is assumed to be a filename which is read, then
    sent as the docuemnt content. If doc is omitted, the last received
    record (as parf of present response or piggybacked search response) 
    is used for the update.
   
source
   filename
  Executes list of commands from
    file filename, just like source on
    most UNIX shells. A single dot (.) can be used
    as an alternative.
   
!
   args
  Executes command args in subshell
    using the system call.
   
push_command
   command
  The push_command takes another command as its argument. That command is then added to the history information (so you can retrieve it later). The command itself is not executed. This command only works if you have GNU readline/history enabled.
set_apdufile
   filename
  Sets that APDU should be logged to file
    filename. Another way to achieve
    APDU log is by using command-line option -a.
   
set_auto_reconnect
   flag
  Specifies whether YAZ client automatically reconnect if target closes connection (Z39.50 only).
    flag must be either
    on or off.
   
set_auto_wait
   flag
  Specifies whether YAZ client should wait for
   response protocol packages after a request.
   By default YAZ client waits (on) for response packages immediately
   after a command (find, show) has been issued. If off
   is used, YAZ client does not attempt to receive packages automatically.
   These will have to be manually received when command 
   
    wait_response
    is used.
   
   flag must be either
   on or off.
   
set_marcdump
   filename
  Specifies that all retrieved records should be appended to
    file filename. This command does the
    thing as option -m.
   
schema
   schemaid
  Specifies schema for retrieval. Schema may be specified as an OID for Z39.50. For SRU, schema is a simple string URI.
charset
   negotiationcharset
   [displaycharset]
   [[marccharset]]
  Specifies character set (encoding) for Z39.50 negotiation / SRU encoding and/or character set for output (terminal).
    negotiationcharset is the name
    of the character set to be negotiated by the server. The special name
    - for negotiationcharset
    specifies no character set to be negotiated.
   
    If displaycharset is given, it specifies name
    of the character set of the output (on the terminal on which
    YAZ client is running). To disable conversion of characters
    to the output encoding, the special name - (dash)
    can be used.
    If the special name auto is given, YAZ client will
    convert strings to the encoding of the
    terminal as returned by nl_langinfo call.
   
    If marcharset is given, it specifies name
    of the character set of retrieved MARC records from server. See
    also marcharset command.
   
     Since character set negotation takes effect in the Z39.50
     Initialize Request you should issue this command before
     command open
     is used.
    
MARC records are not covered by Z39.50 character set negotiation, so that's why there is a separate character that must be known in order to do meaningful converson(s).
negcharset
   charset
  Specifies character set for negotiation (Z39.50). The
    argument is the same as second argument for command
    charset.
   
displaycharset
   charset
  Specifies character set for output (display). The
    argument is the same as second argument for command 
    charset.
   
marccharset
   charset
  Specifies character set for retrieved MARC records so
    that YAZ client can display them in a character suitable
    for your display. See charset command.
    If auto is given, YAZ will assume
    that MARC21/USMARC is using MARC8/UTF8 and ISO-8859-1
    for all other MARC variants. The charset argument is the
    same as third argument for command
    charset.
   
querycharset
   charset
  Specifies character set for query terms for Z39.50 RPN queries and Z39.50 Scan Requests (termListAndStartPoint). This is a pure client-side conversion which converts from displayCharset to queryCharset.
set_cclfile
   filename
  Specifies that CCL fields should be read from file
    file filename. This command does the
    thing as option -c.
   
set_cqlfile
   filename
  Specifies that CQL fields should be read from file
    file filename. This command does the
    thing as option -q.
   
register_oid
   name
   class
   OID
  This command allows you to register your own object
    identifier - so that instead of entering a long dot-notation
    you can use a short name instead.
    The name is your
    name for the OID, class is the
    class, and OID is the raw OID in
    dot notation. Class is one appctx,
    absyn, attet,
    transyn, diagset,
    recsyn, resform,
    accform, extserv,
    userinfo, elemspec,
    varset, schema,
    tagset, general.
    If you're in doubt use the general
    class.
   
register_tab
   command
   string
  This command registers a TAB completion string for the command given.
sleep
   seconds
  This command makes YAZ client sleep (be idle) for the number of seconds given.
wait_response
   [ number]
  This command makes YAZ client wait for a number of
    response packages from target. If number is
    omitted, 1 is assumed. 
   
This command is rarely used and is only useful if command
    
     set_auto_wait
     is set to off.
   
xmles
   OID
   doc
  Sends XML Extended Services request using the OID and doc given.
zversion
   ver
  This command sets Z39.50 version for negotiation. 
    Should be used before 
    open.
    By default 3 (version 3) is used.
   
options
   op1 op2..
  This command sets Z39.50 options for negotiation. 
    Should be used before 
   open.
   
    The following options are supported:
    search,  
    present,  
    delSet,  
    resourceReport,  
    triggerResourceCtrl,  
    resourceCtrl,  
    accessCtrl,  
    scan,  
    sort,  
    extendedServices,  
    level_1Segmentation,  
    level_2Segmentation,  
    concurrentOperations,  
    namedResultSets,  
    encapsulation,  
    resultCount,  
    negotiationModel,  
    duplicationDetection,  
    queryType104,  
    pQESCorrection,  
    stringSchema.
   
The simplest example of a Prefix Query would be something like
    f knuth
   or
    f "donald knuth"
   In those queries no attributes was specified. This leaves it up to the server what fields to search but most servers will search in all fields. Some servers does not support this feature though, and require that some attributes are defined. To add one attribute you could do:
    f @attr 1=4 computer
   where we search in the title field, since the use(1) is title(4). If we want to search in the author field and in the title field, and in the title field using right truncation it could look something like this:
    f @and @attr 1=1003 knuth @attr 1=4 @attr 5=1 computer
   Finally using a mix of Bib-1 and GILS attributes could look something like this:
    f @attrset Bib-1 @and @attr GILS 1=2008 Washington @attr 1=21 weather