<html>
{
-# $Id: search.egw,v 1.1 1995/10/23 17:04:17 adam Exp $
+# $Id: search.egw,v 1.4 1995/10/31 10:03:53 adam Exp $
+
+proc ok-response {} {
+ global sessionWait
+ set sessionWait 1
+}
+
+proc fail-response {} {
+ global sessionWait
+ set sessionWait -1
+}
+
+proc display-rec {from to} {
+ while {$from < $to} {
+ htmlr {<b>} $from {</b><br>}
+ if {![catch {
+ set title [lindex [z39.1 getMarc $from field 245 * a] 0]
+ set year [lindex [z39.1 getMarc $from field 260 * c] 0]
+ } ] } {
+ htmlr $title { <i> } $year {</i><br>}
+ }
+ incr from
+ }
+}
+
+proc build-query {} {
+ global targets
+ global t
+
+ set op {}
+ set q {}
+ for {set i 1} {$i < 4} {incr i} {
+ set term [form entry$i]
+ if {$term != ""} {
+ set field [form menu$i]
+ foreach x [lindex $targets($t) 2] {
+ if {[lindex $x 0] == $field} {
+ set attr [lindex $x 1]
+ }
+ }
+ switch $op {
+ And
+ { set q "@and $q ${attr} ${term}" }
+ Or
+ { set q "@or $q ${attr} ${term}" }
+ {And not}
+ { set q "@not $q ${attr} ${term}" }
+ {}
+ { set q "${attr} ${term}" }
+ }
+ set op [form logic$i]
+ }
+ }
+ return $q
+}
+
+ global sessionWait
+ z39 callback ok-response
+ z39 failback fail-response
+ set sessionWait 0
+ ir-set z39.1 z39
+ z39.1 databaseNames [form base]
+ htmlr {<head><title> WWW/Z39.50 Gateway Search } $t { </title>}
+ htmlr {</head><body>}
+ set query [build-query]
+ htmlr {query: } $query {<br>}
+ z39.1 search $query
+ htmlr {sessionId: } $sessionId {<br>}
+ htmlr {sessionParms: } $sessionParms {<br>}
+ htmlr {form: } [form] { <br>}
+ htmlr {databases: } $databases { <br>}
+ zwait sessionWait
+ if {$sessionWait == 1} {
+ set r [z39.1 resultCount]
+ htmlr {<strong> } $r { hits</strong><br>}
+ } else {
+ set status [z39.1 searchStatus]
+ set msg [lindex $status 2]
+ set addinfo [lindex $status 3]
+ html {<strong>Search fail: } $msg
+ if {$msg != ""} {
+ html {, } $addinfo
+ }
+ htmlr {</strong><br></body></html>}
+ wabort
+ }
+ set setOffset [z39.1 numberOfRecordsReturned]
+ display-rec 0 $setOffset
+ set setMax [z39.1 resultCount]
+ if {$setMax > 30} {
+ set setMax 30
+ }
+ set toGet [expr $setMax - $setOffset]
+ while {$toGet > 0} {
+ z39.1 present $setOffset $toGet
+ set got [z39.1 numberOfRecordsReturned]
+ display-rec $setOffset [expr $got + $setOffset]
+ set $setOffset [expr $got + $setOffset]
+ set toGet [expr $setMax - $setOffset]
+ set sessionWait 0
+ zwait sessionWait
+ if {$sessionWait != "1"} {
+ break
+ }
+ }
}
-<head>
-<title> WWW/Z39.50 Gateway Search Result</title>
-</head>
-<body>
-sessionId: {html $sessionId} <br>
-sessionParms: {html $sessionParms} <br>
-form: {html [form]} <br>
-target: {html $t} <br>
-databases: {html $databases} <br>
-<h2> Search in databases </h2>
-<h1> <blink> Not Functional Yet </blink> </h1>
</body>
</html>
+