$ device == f$parse(f$environment("PROCEDURE"),,,"DEVICE")
$ define ANP_DISK 'device'
$ wrtnet = "write net_link"
$ wrtnet "<DNETRECMODE>"      ! Set implied carriage control.
$ CGI_SYMBOLS "WWW_" "FORM_"
$!wrtnet "Content-type: text/html"      ! CGI header
$!wrtnet "Refresh: 5; URL=""http://www.geo.ed.ac.uk"""  !server pull-Netscape Navigator only
$!wrtnet "Content-type: text/plain"     ! Debugging
$ wrtnet "Content-type: multipart/x-mixed-replace;boundary=End"
$ wrtnet ""
$ wrtnet "--End"
$ on warning then goto error
$ assign net_link: sys$output
$!set verify 
$!-----------------------------------------------------------------------------------------------------------------
$! DEFINE VARIABLES
$ htmlfile = "anp_disk:[ANP.WWW]robot.htm"
$ htmlurl = "http://www.geo.ed.ac.uk/~anp/robot.htm"
$ scripturl = "http://www.geo.ed.ac.uk/anpexe/robot"
$ urlaltavista = "http://altavista.digital.com/cgi-bin/query"
$ urlinfoseek = "http://www2.infoseek.com/Titles"
$ urlwebcrawler = "http://www.webcrawler.com/cgi-bin/WebQuery"
$ urlinktomi = "http://inktomi.cs.berkeley.edu:1234/query/"
$ urlexcite = "http://www.excite.com/search.gw"
$ urllycos = "http://www.lycos.com/cgi-bin/pursuit"
$ null = ""
$! ------------------------------------------------------------------------------------------------------------------
$ wrtnet "Content-type: text/html"
$ wrtnet ""     
$ wrtnet "<HTML>"
$ wrtnet "<HEAD>
$ wrtnet "<TITLE>ROBOT QUERY HTML</TITLE>"
$ wrtnet "</HEAD>"
$ wrtnet "<BODY>"
$! show sym FORM*
$ wrtnet "<H1>Summary of Query</H1><br>"
$ wrtnet "<H3>You typed in these keywords to the following search robots</H3><br>"
$ wrtnet "To <A HREF=""http://altavista.digital.com"">AltaVista</A>---"
$ show sym FORM_FLD_Q
$ wrtnet "<br>To <A HREF=""http://www2.infoseek.com"">InfoSeek</A>---"
$ show sym FORM_FLD_QT
$ wrtnet "<br>To <A HREF=""http://www.webcrawler.com"">WebCrawler</A>---"
$ show sym FORM_FLD_SEARCHTEXT
$ wrtnet "<br>To <A HREF=""http://inktomi.berkeley.edu"">Inktomi</A>---"
$ show sym   FORM_FLD_QUERY1
$ wrtnet "<br>To <A HREF=""http://www.excite.com"">Excite</A>---"
$ show sym  FORM_FLD_SEARCH
$ wrtnet "<br>To <A HREF=""http://www.lycos.com/lycos-form.html"">LYCOS</A>---"
$ show sym   FORM_FLD_QUERY2

$ wrtnet "<br><FORM ACTION=""",htmlurl,""" METHOD="GET">"
$ wrtnet "<INPUT TYPE=SUBMIT VALUE=""GO BACK AND RESET FORM?"">"
$ wrtnet "</FORM>"


$ queryAltaVista = urlaltavista + "?q=" + FORM_FLD_Q + "&what=" + FORM_FLD_WHAT + "&fmt=" + FORM_FLD_FMT + "&pg=" + FORM_FLD_PG 
$ show sym queryAltaVista
$! call AltaVista
$ wrtnet "<br>"
$ queryInfoSeek = urlinfoseek + "?qt=" + FORM_FLD_QT + "&col=" + FORM_FLD_COL + "&sv=" + FORM_FLD_SV + "&lk=" + FORM_FLD_LK
$ show sym queryInfoSeek
$! call InfoSeek
$ wrtnet "<br>"
$ queryInktomi = urlinktomi + "?query=" + FORM_FLD_QUERY1 + "&hits=" + FORM_FLD_HITS + "&disp=" + FORM_FLD_DISP
$ show sym queryInktomi
$!call Inktomi
$ wrtnet "<br>"
$ queryExcite = urlexcite + "?search=" +  FORM_FLD_SEARCH + "&collection=" + FORM_FLD_COLLECTION + "&searchType=" +  FORM_FLD_SEARCHTYPE + "&mode=" + FORM_FLD_MODE3 + "&showqbe=" +  FORM_FLD_SHOWQBE + "&display=" + FORM_FLD_DISPLAY
$ show sym queryExcite
$!call Excite
$ wrtnet "<br>"
$ queryLycos = urllycos + "?query=" + FORM_FLD_QUERY2 + "&matchmode=" + FORM_FLD_MATCHMODE + "&minscore=" + FORM_FLD_MINSCORE + "&maxhits=" + FORM_FLD_MAXHITS2 + "&terse=" +  FORM_FLD_TERSE
$ show sym queryLycos
$!call Lycos
$ wrtnet "<br>"

$ wrtnet "</BODY></HTML>"
$ wrtnet "--End"
$ wait 00:00:05.00


$! call system
$ exit


$ AltaVista: Subroutine
$ If  FORM_FLD_Q  .eqs.  "" then exit
$ wrtnet "Refresh: 5; URL=""",queryAltaVista,"""  
$ wrtnet "Content-type: text/html"
$ wrtnet ""     
$ wrtnet "<HTML>"
$ wrtnet "<HEAD>"
$ wrtnet "<TITLE>AltaVista query HTML</TITLE>"
$ wrtnet "</HEAD>"
$ wrtnet "<BODY>"
$ wrtnet "<br>"
$ wrtnet "<P><A HREF=""",queryAltaVista,""">Send AltaVista Query</A></P>"
$ wrtnet "</BODY></HTML>"
$ wrtnet "--End"
$ wait 00:00:00.00
$ exit
$ ENDSubroutine


$ error:
$   wrtnet "<HEAD><TITLE>Error!</TITLE></HEAD><BODY>
$   wrtnet "<HR><H2>A DCL Error Occurred</H2><HR></BODY></HTML>
$   exit



$ SYSTEM: Subroutine
$ wrtnet "<HEAD>"
$ wrtnet "<TITLE>DCL for Web Robot HTML page</TITLE>"
$ wrtnet "</HEAD>"
$ wrtnet "<BODY>"
$ wrtnet "<H1> The Environment Variables: </H1>"
$ wrtnet "<pre>"
$! show sym/all
$ show sym WWWEXEC_RUNDOWN_STRING
$ show sym WWW_GATEWAY_INTERFACE
$ show sym WWW_HTTP_ACCEPT
$ show sym WWW_HTTP_CONNECTION
$ show sym WWW_HTTP_HOST
$! When sending variables directly via GET, this envirnment variable must be explicitly stated.  
$! WWW_HTTP_REFERER = "http://www.geo.ed.ac.uk:81/~anp/robotex.htm" 
$ show sym WWW_HTTP_REFERER    
$ show sym WWW_HTTP_USER_AGENT
$ show sym WWW_PATH_INFO
$ show sym WWW_QUERY_STRING
$ show sym WWW_REMOTE_ADDR
$ show sym WWW_REMOTE_HOST
$ show sym WWW_REMOTE_PORT
$ show sym WWW_REQUEST_METHOD
$ show sym WWW_SCRIPT_NAME
$ show sym WWW_SCRIPT_PATH
$ show sym WWW_SERVER_NAME
$ show sym WWW_SERVER_PORT
$ show sym WWW_SERVER_PROTOCOL
$ show sym WWW_SERVER_SOFTWARE
$ wrtnet "</pre><br>"
$ wrtnet "<H3>The FORMS varialbles are listed as follows:</H3>"
$ wrtnet "<pre>"
$ wrtnet "AltaVista form variables:"
$ show sym   FORM_FLD_Q
$ show sym   FORM_FLD_WHAT
$ show sym   FORM_FLD_FMT
$ show sym   FORM_FLD_PG
$ wrtnet "InfoSeek form variables:"
$ show sym   FORM_FLD_QT
$ show sym FORM_FLD_COL
$ show sym   FORM_FLD_SV
$ show sym   FORM_FLD_LK
$ wrtnet "WebCrawler form variables:"
$ show sym   FORM_FLD_SEARCHTEXT
$ show sym   FORM_FLD_MODE1  
$ show sym   FORM_FLD_MAXHITS1
$ show sym  FORM_FLD_COOKIE
$ wrtnet "Inktomi form variables:"
$ show sym   FORM_FLD_QUERY1
$ show sym   FORM_FLD_HITS
$ show sym   FORM_FLD_DISP
$ wrtnet "Excite form variables:"
$ show sym   FORM_FLD_SEARCH
$ show sym   FORM_FLD_COLLECTION
$ show sym   FORM_FLD_SEARCHTYPE
$ show sym   FORM_FLD_MODE3 
$ show sym   FORM_FLD_SHOWQBE
$ show sym   FORM_FLD_DISPLAY
$ wrtnet "LYCOS form variables:"
$ show sym   FORM_FLD_QUERY2
$ show sym   FORM_FLD_MATCHMODE
$ show sym   FORM_FLD_MINSCORE
$ show sym   FORM_FLD_MAXHITS2
$ show sym   FORM_FLD_TERSE
$ wrtnet "</pre>"
$ wrtnet "</BODY>"
$ exit
$ ENDSubroutine

