-# $Id: zoomtst3.pl,v 1.1 2006-04-06 13:47:55 mike Exp $
-#
# See ../README for a description of this program.
# perl -I../../blib/lib -I../../blib/arch zoomtst3.pl <t1> [...] <tN> <query>
+# for example:
+# perl -I../../blib/lib -I../../blib/arch zoomtst3.pl z3950.loc.gov:7090/Voyager z3950.indexdata.com:210/gils endeavor.flo.org:7090/Voyager mineral
use strict;
use warnings;
if (@ARGV < 2) {
print STDERR "Usage: $0 target1 target2 ... targetN query\n";
- print STDERR " eg. $0 bagel.indexdata.dk/gils localhost:9999 fish\n";
+ print STDERR " eg. $0 z3950.indexdata.dk/gils localhost:9999 fish\n";
exit 1;
}
# Preferred record syntax
Net::Z3950::ZOOM::options_set($o, preferredRecordSyntax => "usmarc");
-Net::Z3950::ZOOM::options_set($o, elementSetName => "F");
+Net::Z3950::ZOOM::options_set($o, elementSetName => "B");
# Connect to all targets: options are the same for all of them
for (my $i = 0; $i < $n; $i++) {
}
# Network I/O. Pass number of connections and array of connections
-while ((my $i = Net::Z3950::ZOOM::event([ @z ])) != 0) {
- print("n = ", $i-1, " event = ",
- Net::Z3950::ZOOM::connection_last_event($z[$i-1]), "\n");
+while ((my $i = Net::Z3950::ZOOM::event(\@z)) != 0) {
+ my $ev = Net::Z3950::ZOOM::connection_last_event($z[$i-1]);
+ print("connection ", $i-1, ": event $ev (",
+ Net::Z3950::ZOOM::event_str($ev), ")\n");
+ # It would be nice to display results as they come in, but the
+ # ability to do so is dependent on the END event, which was
+ # introduced only in YAZ 2.1.17. If you have a sufficiently new
+ # YAZ, please use the alternative "async.pl", which is similar to
+ # this program except in its asynchronous display.
}
# No more to be done. Inspect results
# Go through all records at target
$size = 10 if $size > 10;
for (my $pos = 0; $pos < $size; $pos++) {
- my $len; # length of buffer rec
- print "$tname: fetching $pos of $size\n";
+ print "$tname: fetching ", $pos+1, " of $size\n";
my $tmp = Net::Z3950::ZOOM::resultset_record($r[$i], $pos);
- my $rec = Net::Z3950::ZOOM::record_get($tmp, "render", $len);
- # if rec is non-null, we got a record for display
- if (defined $rec) {
- print $pos+1, "\n", $rec, "\n";
+ if (!defined $tmp) {
+ print "$tname: can't get record ", $pos+1, "\n";
+ next;
}
+ my $rec = Net::Z3950::ZOOM::record_get($tmp, "render");
+ if (!defined $rec) {
+ print "$tname: can't render record ", $pos+1, "\n";
+ next;
+ }
+ print $pos+1, "\n", $rec, "\n";
}
}