# Presentation: 548842

## Crossnet Systems Limited 
------
Z39.50 Toolkits

**Crossnet Systems Limited **
**------**
**Z39.50 Toolkits**

## What toolkits ?

- Z39.50 toolkits for applications in C, C++ :
- ZedKit - UNIX platforms
- ZedKit - “Win-tel” platforms
- Z39.50 toolkit for applications in JAVA :
- ZedJAVA

## ZedKit - UNIX

- It’s a Z39.50-1995 toolkit for C, C++ developers supporting TCP/IP and OSI
- supports client and server development
- Originally developed for the German Library Project - DBV OSI II
- Its freeware
- compile it with the GNU compiler or native compiler
- for 32 or 64 bit platforms

## What’s in the Package ?

- toolkit libraries :
- static libraries, shared libraries
- daemon listener for server applications
- working client and server test programs
- test tool for batch testing
- documentation : postscript, html
- conventional GNU-like installation scripts
- ./configure   ./make
- all source code included.

## Using the API...

- Z39.50 PDUs are represented by C-structures
- structure naming closely matches ASN.1 naming in the Z39.50 standard annotated by the “Hungarian” notation
- To send a PDU:
- fill in a structure, call the appropriate send function
- Receiving a PDU:
- call the receive function, and the received PDU elements are put onto a C structure

## For Example :

**typedef struct DbvInitializeReq {**
**DbvOctetString         *psReferenceId;**
**DbvProtocolVersion      pcProtocolVersion;      **
**DbvOptions              pcOptions;              **
**Ulong                   ulPreferredMessageSize;     **
**Ulong                   ulMaximumMessageSize;      **
**DbvAuthentication      *psAuthentication;**
**DbvInternationalString *psImplementationId;**
**DbvInternationalString *psImplementationName;**
**DbvInternationalString *psImplementationVersion;**
**DbvASN1External        *psUserInformationField;**
**DbvOtherInformation   **ppsOtherInformation;**
**} DbvInitializeReq;**

**int DbvInitializeRequest( DbvAssocId lAssocId, **
**	****	****	****  ****DbvInitializeReq *psInitializeReq, **
**	****	****	****  ****DbvError **ppsDbvError );**

## API Library Features...

- API checks your structures when you call a function to send a PDU
- it reports an error if a structure is incomplete or contains an illegal value
- State Machine verifies orderly operations
- PDUs can be logged to files
- any bad or unknown PDUs are reported
- memory release functions supplied for freeing structure content

## Other Features...

- BER encoding/decoding code is derived from an ASN.1 compiler
- Client-side supports multiple associations
- Server side is multi-process
-    1 session per process
- Supports concurrent operations

## Test Facilities

- These provide many examples of working sample code
- Examples cover most of the API
- Menu driven options
- Test tool enables PDU parameters to be represented in files for batch testing

## What’s supported ?

- All Z39.50-1995 services
- Record formats including :
- GRS.1, MARC, OPAC, Explain, ES Task-Package, SUTRS, Summary
- Extended Services:
- periodic query schedule; export specification; export invocation; item order
- User-Info Format - search result 1

## What’s supported ?

- Character set and language negotiation
- ISO-ILL (request and status)
- some private externals registered by European Space Agency
- some private externals registered for the CIP profile.

## Zedkit - history

- Originally developed for German Library Project, DBV OSI II in 1995
- Subsequently extended for:
- German Library project - phase 2 with document ordering - version 1.9 in 1997
- Several services and externals added during the ONE project, producing version 2.1 in 1997
- Add-on for UCP Update, new sort response field and Char. Set/Language Negotiation 2
- All versions have been independently tested

## Complementary Utilities

- ONE project toolkit has some complimentary utilities:
- Explain database toolkit (Crossnet)
- CCL string to RPN conversion (Danish Library Centre)
- RPN/SQL conversion (Joanneum Research)

## Future Releases...

- ONE-2 Project will add more features:
- remaining extended services
- more ISO-ILL
- Z+SQL support has been added for use in the Z+SQL DSTC test-bed
- toolkit code is currently being tested by DSTC Pty Ltd. and built into applications

## Availability

- www.crxnet.com
- follow links from “Products” button
- anon. Ftp :  popeye.crxnet.com
- /pub/dbvosi               /pub/one

## ZedKit - Windows

- same API specification as UNIX version
- for Windows 95, 98, NT and seems to like beta of Windows 2000
- commercial - development license
- no run-time licenses, no royalties
- out-of-the-box package:
- Installshield installation
- suited for Microsoft Visual C++ versions 5, 6
- can supply Win-32s version for client side

## What’s in the Package ?

- pre-built API libraries
- sample client and server projects
- documentation, postscript, html
- warranty, support and updates

## Features...

- compliments UNIX application code
- server is a multi-threaded application
- same Z39.50 support as the UNIX version
- services, record formats etc.

## Future Releases... 

- Version 2.2 will compliment new features added to UNIX version later this year
- version to support Z+SQL testbed
- an OCX is in the labs

## Demos

- ZedKit - Windows server application linked to the US EPR database
- ICONE Windows client
- Web/Z39.50 client
- (http://batman.crxnet.com/zedlib/index2.html)

## Availability

- Enquiries to:
- info@crxnet.com
- can supply:
- electronic transfer
- ship CD-ROM

## ZedJAVA

- joint product from DSTC/Crossnet
- commercial - development license
- no run-time licenses, no royalties
- out-of-the-box:
- Installshield kit for Windows platform
- tar archive for UNIX platform
- supplied for:   JAVA 1.1     JAVA1.2

## What’s in the Package ?

- set of JAVA packages and classes for all of Z39.50-1995 specification
- application types:
- applet, servelet, application
- on-line documentation (javadoc)
- tutorial
- example applications

## Example code:

**PresentRequest pr = new PresentRequest();**
**pr.s_resultSetId = new ResultSetId();**
**pr.s_resultSetId.value = new InternationalString();****	****pr.s_resultSetId.value.value = new ASN1GeneralString("Default");****	****pr.s_resultSetStartPoint = new ASN1Integer(1);****	****pr.s_numberOfRecordsRequested = new ASN1Integer(1);**
**pr.s_recordComposition = new PresentRequest_recordComposition();****	****pr.s_recordComposition.c_simple = new ElementSetNames();****	****pr.s_recordComposition.c_simple.c_genericElementSetName = ****	****  new**
**    ****InternationalString();****	****pr.s_recordComposition.c_simple.c_genericElementSetName.value = ****	****  new ASN1GeneralString(“B”);**
**pr.s_preferredRecordSyntax =  new ASN1ObjectIdentifier(recordSyntax_USmarc);**
**PDU pdu = new PDU();**
**pdu.c_presentRequest = pr;****	****// Send the PresentRequest**
**pdu.ber_encode().output(dest);**
**dest.flush();**

## Features :

- Inherent object-oriented design
- ZedJAVA class code is created from an ASN.1 to JAVA tool from DSTC
- encoding methods
- decoding methods
- tostring methods
- sample code
- applications, MARC classes

## Future Releases...

- support for Z+SQL testbed and the SQL-RS record syntax
- support for ASN.1 real types
- support for Z39.50-1995 amendments
- possible version for XER

## Demos

- ZedJAVA documentation
- ZedJAVA with a test Applet

## Availability

- Enquiries to:
- info@crxnet.com
- can supply:
- electronic transfer
- ship CD-ROM

## Thank you for your time !!

- Any questions ?