#!/opt/isis/OpenIsis/tcl/bin/tspr <%-- test Tcl server page $Id: demo.cgi,v 1.1 2003/04/29 19:01:14 kripke Exp $ --%><%! # package require mime; # namespace import ::mime::*; # a procedure to make live with requests easier: # it uses the current value of the $isis server variable to send a request # so we can switch servers by setting isis, yet use a single command proc ::isis {request args} { global isis $isis .req delete $isis .req set -type $request # eval so that the single list of args becomes multiple parameters eval $isis req $args ::puts stderr "###req\n[$isis .req serialize]###res\n[$isis .res serialize]###" # we don't clone the result rec, but provide a procedure # if {"read" == $request} { # clone result data as v; throws exception if no such record # $isis .res .rec clone v # } # return the size (number of records or mfns) $isis .res get size } # convenient access to the result proc ::res {args} { global isis eval $isis .res $args } # wrapper for current result record # add the "rowid" command, which the record is lacking for some reason # add a "get first", if args is a single integer proc ::v {args} { global isis if {"rowid" == $args} { return [$isis .res get rowid] } if {[string is integer $args]} { # v 24 return [lindex [$isis .res .rec get $args] 0] } eval $isis .res .rec $args } %><% # request standard tags # -10 SCRIPT_NAME # -11 PATH_INFO # -12 REMOTE_USER # global env set script [lindex [request get -10] 0] set path [lindex [request get -11] 0] set query [lindex [request get 1] 0] set db cds set ::isis [openIsis] ;# contact local server $::isis add -syspath /opt/isis/db -dbpath $db -defaultdb $db isis open # query max row isis maxrow set max [res get rowid] %> max mfn in <%=db%> is <%=max%>
enter query or mfn:

<% if [string is integer $query] { set mfns $query } else { # query isis query -mode 128 -key $query set mfns [res get rowid] %> found mfns <% foreach mfn $mfns { %> <%=mfn%> <% } } %> <% foreach mfn $mfns { isis read -rowid $mfn %> <% ::openIsis::Tspr detail.tsp } %>
MFN<%=mfn%>