X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=shell.tcl;h=5fc0415844b8b3489fca5d5bc1cb83dffe70c87d;hb=3d7011401ecf4caad2d95d31d184aeebb43ed2c8;hp=d9d32d86c349b44105e9a6c90f9366641804633a;hpb=4b96df0e1f1db0983dff2d019373fea918b8b6ec;p=ir-tcl-moved-to-github.git diff --git a/shell.tcl b/shell.tcl index d9d32d8..5fc0415 100644 --- a/shell.tcl +++ b/shell.tcl @@ -1,33 +1,74 @@ -# $Id: shell.tcl,v 1.2 1995-08-28 12:21:22 adam Exp $ +# $Id: shell.tcl,v 1.5 1998-05-20 12:27:45 adam Exp $ # + +if {[catch {ir-log-init all irtcl shell.log}]} { + set e [info sharedlibextension] + puts "Loading irtcl$e ..." + load ./irtcl$e irtcl + ir-log-init all irtcl shell.log +} + source display.tcl ir z +set pref(base) Default +set pref(format) usmarc + proc help {} { puts "Commands:" - puts " target " + puts " target " + puts " base " + puts " format " puts " find " puts " show " puts "" } -proc target {name database} { +proc fail-response {} { + global ok + set ok -1 +} +proc target {name} { + global ok pref + + set ok 0 z disconnect - z failback {puts "Connection failed"} + z failback {fail-response} z callback {connect-response} - z databaseNames $database - z connect $name + if [catch "z connect $name"] { + fail-response + } elseif {$ok == 0} { + vwait ok + } + if {$ok == 1} { + puts "Connected and initialized." + } else { + puts "Failed." + } return {} } +proc base {base} { + global pref + set pref(base) $base +} + +proc format {format} { + global pref + set pref(format) $format +} + proc connect-response {} { z callback {init-response} z init } proc init-response {} { - puts "Connect and initialized." + global ok pref + + set ok 1 + ir-set z.1 z } proc find-response {z} { @@ -42,20 +83,24 @@ proc find-response {z} { } proc common-response {z from} { - set status [lindex [$z responseStatus] 0] - switch $status { + global ok pref + + set ok 1 + set status [$z responseStatus] + switch [lindex $status 0] { NSD { puts -nonewline "NSD" - puts -nonewline [lindex [$z responseStatus] 1] + puts -nonewline [lindex $status 1] puts -nonewline " " - puts -nonewline [lindex [$z responseStatus] 2] + puts -nonewline [lindex $status 2] puts -nonewline ": " - puts -nonewline [lindex [$z responseStatus] 3] + puts -nonewline [lindex $status 3] puts "" } DBOSD { puts "DBOSD" - for {set i $from} {$i < [$z nextResultSetPosition]} {incr i} { + set to [expr $from + [$z numberOfRecordsReturned]] + for {set i $from} {$i < $to} {incr i} { if {[$z type $i] == ""} { break } @@ -66,15 +111,37 @@ proc common-response {z from} { } } -proc show {from number} { +proc show {{from 1} {number 1}} { + global ok pref + + set ok 0 z callback "common-response z.1 $from" z.1 present $from $number + vwait ok + return {} +} + +proc explain {query} { + global ok pref + + set ok 0 + z.1 databaseNames IR-Explain-1 + z.1 preferredRecordSyntax explain + z callback {find-response z.1} + z.1 search "@attrset exp1 @attr 1=1 @attr 2=3 @attr 3=3 @attr 4=3 $query" + vwait ok + return {} } proc find {query} { - ir-set z.1 z - z failback {puts "Connection closed"} + global ok pref + + set ok 0 + z.1 databaseNames $pref(base) + z.1 preferredRecordSyntax $pref(format) z callback {find-response z.1} z.1 search $query + vwait ok + return {} }