Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

550 lines
19 KiB

  1. <%@ LANGUAGE = VBScript %>
  2. <% ' Option Explicit %>
  3. <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.0//EN" "html.dtd">
  4. <HTML>
  5. <HEAD>
  6. <!--#INCLUDE FILE="adovbs.inc" -->
  7. <BODY background="is2bkgnd.gif" OnLoad="SetAll()" LANGUAGE=JavaScript>
  8. <TITLE>Advanced Indexing Service Search Form</TITLE>
  9. <LINK REL=STYLESHEET HREF="is2style.css" TYPE="text/css">
  10. <META NAME="DESCRIPTION" CONTENT="Sample SQL query form for Indexing Service">
  11. <META NAME="AUTHOR" CONTENT="OLE DB Provider for Indexing Service Team">
  12. <META NAME="KEYWORDS" CONTENT="sql, query, content, hit">
  13. <META NAME="SUBJECT" CONTENT="sample form">
  14. <META NAME="MS.CATEGORY" CONTENT="Internet">
  15. <META NAME="MS.LOCALE" CONTENT="EN-US">
  16. <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=Windows-1252">
  17. <%
  18. Const STAT_BUSY = 0
  19. Const STAT_ERROR = &H1
  20. Const STAT_DONE = &H2
  21. Const STAT_REFRESH = &H3
  22. Const STAT_PARTIAL_SCOPE = &H8
  23. Const STAT_NOISE_WORDS = &H10
  24. Const STAT_CONTENT_OUT_OF_DATE = &H20
  25. Const STAT_REFRESH_INCOMPLETE = &H40
  26. Const STAT_CONTENT_QUERY_INCOMPLETE = &H80
  27. Const STAT_TIME_LIMIT_EXCEEDED = &H100
  28. Function GetCiOutOfDate(value)
  29. GetCiOutOfDate = value And STAT_CONTENT_OUT_OF_DATE
  30. end Function
  31. Function GetCiQueryIncomplete(value)
  32. GetCiQueryIncomplete = value And STAT_CONTENT_QUERY_INCOMPLETE
  33. end Function
  34. Function GetCiQueryTimedOut(value)
  35. GetCiQueryTimedOut = value And STAT_TIME_LIMIT_EXCEEDED
  36. end Function
  37. ' Customization variables
  38. DebugFlag = FALSE ' set TRUE for debugging
  39. UseSessions = FALSE ' set FALSE to disable use of session variables
  40. RecordsPerPage = 10 ' number of results on a page
  41. MaxResults = 300 ' total number of results returned
  42. FormLogo = "is2logo.gif" ' picture at top of page
  43. ' Hard-code some parameters that could be taken from the form
  44. ' SortBy = " order by rank desc" ' sort order
  45. ' Set initial conditions
  46. NewQuery = FALSE
  47. UseSavedQuery = FALSE
  48. SearchString = ""
  49. QueryForm = Request.ServerVariables("PATH_INFO")
  50. if Request.ServerVariables("REQUEST_METHOD") = "POST" then
  51. SearchString = Request.Form("SearchString")
  52. DocAuthorRestriction = Request.Form("DocAuthorRestriction")
  53. FSRest = Request.Form("FSRest")
  54. FSRestVal = Request.Form("FSRestVal")
  55. FSRestOther = Request.Form("FSRestOther")
  56. FMMod = Request.Form("FMMod")
  57. FMModDate = Request.Form("FMModDate")
  58. SortBy = Request.Form("SortBy")
  59. ' NOTE: this will be true only if the button is actually pushed.
  60. if Request.Form("Action") = "Execute" then
  61. NewQuery = TRUE
  62. NextPageNumber = -1
  63. elseif Request.Form("pg") <> "" then
  64. NextPageNumber = Request.Form("pg")
  65. UseSavedQuery = UseSessions
  66. NewQuery = not UseSessions
  67. end if
  68. End if
  69. %>
  70. </HEAD>
  71. <TABLE>
  72. <TR><TD><A HREF="http://www.microsoft.com/ntserver/search" target="_top">
  73. <IMG SRC ="is2logo.gif" border=0 VALIGN=MIDDLE ALIGN="LEFT"></a></TD></TR>
  74. <TR><TD ALIGN="RIGHT"><H3>Advanced SQL Sample</H3></TD></TR>
  75. </TABLE>
  76. <SCRIPT LANGUAGE=JavaScript>
  77. <!--
  78. function SetAll()
  79. {
  80. document.QForm.SearchString.value = "<%=SearchString%>";
  81. <%select case FSRest%>
  82. <%case " > "%>
  83. document.QForm.FSRest.selectedIndex = 1;
  84. <%case else%>
  85. document.QForm.FSRest.selectedIndex = 0;
  86. <%end select%>
  87. <%select case FSRestVal%>
  88. <%case "any"%>
  89. document.QForm.FSRestVal.selectedIndex = 0;
  90. <%case "100"%>
  91. document.QForm.FSRestVal.selectedIndex = 1;
  92. <%case "1024"%>
  93. document.QForm.FSRestVal.selectedIndex = 2;
  94. <%case "10240"%>
  95. document.QForm.FSRestVal.selectedIndex = 3;
  96. <%case "102400"%>
  97. document.QForm.FSRestVal.selectedIndex = 4;
  98. <%case "1048576"%>
  99. document.QForm.FSRestVal.selectedIndex = 5;
  100. <%case "10485760"%>
  101. document.QForm.FSRestVal.selectedIndex = 6;
  102. <%case "104857600"%>
  103. document.QForm.FSRestVal.selectedIndex = 7;
  104. <%case "other"%>
  105. document.QForm.FSRestVal.selectedIndex = 8;
  106. <%case else%>
  107. document.QForm.FSRestVal.selectedIndex = 0;
  108. <%end select%>
  109. document.QForm.FSRestOther.value = "<%=FSRestOther%>";
  110. <%select case FMMod%>
  111. <%case "any"%>
  112. document.QForm.FMMod.selectedIndex = 0;
  113. <%case "DATEADD(minute, -10, GETGMTDATE())"%>
  114. document.QForm.FMMod.selectedIndex = 1;
  115. <%case "DATEADD(hour, -1, GETGMTDATE())"%>
  116. document.QForm.FMMod.selectedIndex = 2;
  117. <%case "DATEADD(day, -1, GETGMTDATE())"%>
  118. document.QForm.FMMod.selectedIndex = 3;
  119. <%case "DATEADD(week, -1, GETGMTDATE())"%>
  120. document.QForm.FMMod.selectedIndex = 4;
  121. <%case "DATEADD(month, -1, GETGMTDATE())"%>
  122. document.QForm.FMMod.selectedIndex = 5;
  123. <%case "DATEADD(quarter, -1, GETGMTDATE())"%>
  124. document.QForm.FMMod.selectedIndex = 6;
  125. <%case "DATEADD(year, -1, GETGMTDATE())"%>
  126. document.QForm.FMMod.selectedIndex = 7;
  127. <%case "since"%>
  128. document.QForm.FMMod.selectedIndex = 8;
  129. <%case else%>
  130. document.QForm.FMMod.selectedIndex = 0;
  131. <%end select%>
  132. document.QForm.FMModDate.value = "<%=FMModDate%>";
  133. document.QForm.DocAuthorRestriction.value = "<%=DocAuthorRestriction%>";
  134. document.QForm.SearchString.focus();
  135. }
  136. //-->
  137. </SCRIPT>
  138. <FORM NAME="QForm" ACTION="<%=QueryForm%>" METHOD=POST>
  139. <table width=500>
  140. <tr>
  141. <td>Enter your query: </td>
  142. <td><INPUT TYPE="TEXT" NAME="SearchString" SIZE="51" MAXLENGTH="100" VALUE=""></td>
  143. </tr>
  144. <tr>
  145. <td align="right" colspan=2>Document author:
  146. <INPUT TYPE="TEXT" NAME="DocAuthorRestriction" SIZE="27" MAXLENGTH="100" VALUE="">
  147. </tr>
  148. <tr>
  149. <td align="right" colspan=2>Where File Size is:
  150. <SELECT NAME="FSRest">
  151. <!-- <OPTION VALUE=" &lt; " <%if FSRest = " < " then%>SELECTED <%end if%>>Less Than
  152. <OPTION VALUE=" &gt; " <%if FSRest = " > " then%>SELECTED <%end if%>>Greater Than
  153. -->
  154. <OPTION VALUE=" &lt; " SELECTED>Less Than
  155. <OPTION VALUE=" &gt; " >Greater Than
  156. </SELECT>
  157. <SELECT NAME="FSRestVal" DEFAULT VALUE="any">
  158. <OPTION VALUE="any" SELECTED>any size
  159. <OPTION VALUE="100" >100 bytes
  160. <OPTION VALUE="1024" >1K bytes
  161. <OPTION VALUE="10240" >10K bytes
  162. <OPTION VALUE="102400" >100K bytes
  163. <OPTION VALUE="1048576" >1M byte
  164. <OPTION VALUE="10485760" >10M bytes
  165. <OPTION VALUE="104857600" >100M bytes
  166. <OPTION VALUE="other" >Other
  167. </SELECT>
  168. <INPUT TYPE="TEXT" NAME="FSRestOther" SIZE="12" MAXLENGTH="9" VALUE="">
  169. </td>
  170. </tr>
  171. <tr>
  172. <td align="right" colspan=2>Modified:
  173. <SELECT NAME="FMMod">
  174. <OPTION VALUE="any" SELECTED >at any time.
  175. <OPTION VALUE="DATEADD(minute, -10, GETGMTDATE())">in the last 10 minutes.
  176. <OPTION VALUE="DATEADD(hour, -1, GETGMTDATE())">in the last hour.
  177. <OPTION VALUE="DATEADD(day, -1, GETGMTDATE())">in the last day.
  178. <OPTION VALUE="DATEADD(week, -1, GETGMTDATE())">in the last week.
  179. <OPTION VALUE="DATEADD(month, -1, GETGMTDATE())">in the last month.
  180. <OPTION VALUE="DATEADD(quarter, -1, GETGMTDATE())">in the last quarter.
  181. <OPTION VALUE="DATEADD(year, -1, GETGMTDATE())">in the last year.
  182. <OPTION VALUE="since">since GMT (yy/mm/dd) .
  183. </SELECT>
  184. <INPUT TYPE="TEXT" NAME="FMModDate" SIZE="12" MAXLENGTH="9" VALUE="">
  185. </td>
  186. </tr>
  187. <tr>
  188. <td align="left"><a href="ixtipsql.htm">SQL Syntax Tips</a></td>
  189. <td align="right">
  190. <INPUT TYPE="SUBMIT" NAME="Action" VALUE="Execute">
  191. <INPUT TYPE="RESET" NAME="Clear" VALUE="Clear">
  192. </td>
  193. </tr>
  194. </table>
  195. <INPUT TYPE="HIDDEN" NAME="SortBy" VALUE=" order by rank desc">
  196. </FORM>
  197. <BR>
  198. <%if DebugFlag then%>
  199. <PRE>
  200. SearchString = <%=SearchString%>
  201. DocAuthorRestriction = <%=DocAuthorRestriction%>
  202. FSRest = <%=FSRest%>
  203. FSRestVal = <%=FSRestVal%>
  204. FSRestOther = <%=FSRestOther%>
  205. FMMod = <%=FMMod%>
  206. FMModDate = <%=FMModDate%>
  207. SortBy = <%=SortBy%>
  208. NewQuery = <%=CStr(NewQuery)%>
  209. UseSavedQuery = <%=CStr(UseSavedQuery)%>
  210. </PRE>
  211. <%end if%>
  212. <%
  213. if NewQuery then
  214. ' First Reset the Connection, command and recordSet Object.
  215. if UseSessions then
  216. set session("AdoConnection") = nothing
  217. set session("AdoCommand") = nothing
  218. set session("Recordset") = nothing
  219. end if
  220. NextRecordNumber = 1
  221. set AdoConnection = Server.CreateObject("ADODB.Connection")
  222. set AdoCommand = Server.CreateObject("ADODB.Command")
  223. AdoConnection.ConnectionString = "provider=msidxs"
  224. AdoConnection.Open
  225. set AdoCommand.ActiveConnection = AdoConnection
  226. SelectColumns = "DocTitle, vpath, path, filename, size, write, characterization"
  227. SelectString = "Select " + SelectColumns + " from Web..Scope('Deep traversal of ""/""') "
  228. Composer = ""
  229. TheQuery = ""
  230. if SearchString <> "" then
  231. TheQuery = "Contains('""" + SearchString + """')"
  232. Composer = " and "
  233. end if
  234. if FSRestVal <> "any" then
  235. if FSRestVal <> "other" then
  236. if FSRestVal <> "" then
  237. TheQuery = "Size " + FSRest + FSRestVal + " " + Composer + TheQuery
  238. end if
  239. else
  240. TheQuery = "Size " + FSRest + FSRestOther + " " + Composer + TheQuery
  241. end if
  242. Composer = " and "
  243. end if
  244. if DocAuthorRestriction <> "" then
  245. TheQuery = "Contains(DocAuthor, '""" + DocAuthorRestriction + """') " + Composer + TheQuery
  246. Composer = " and "
  247. end if
  248. if FMMod <> "" AND FMMod <> "any" then
  249. if FMMod <> "since" then
  250. TheQuery = "(Write > " + FMMod + ") " + Composer + TheQuery
  251. else
  252. TheQuery = "(Write > '" + FMModDate + "') " + Composer + TheQuery
  253. end if
  254. end if
  255. if TheQuery <> "" then
  256. SelectString = SelectString + " where " + TheQuery +" "+ SortBy
  257. else
  258. SelectString = SelectString + SortBy +" "
  259. end if
  260. if DebugFlag then
  261. Response.Write "SelectString = " + SelectString + "<BR>"
  262. end if
  263. AdoCommand.CommandText = SelectString
  264. set RS = Server.CreateObject("AdoDB.Recordset")
  265. RS.CursorType = adOpenKeyset
  266. AdoCommand.Properties("Bookmarkable") = True
  267. if MaxResults <> -1 then
  268. RS.MaxRecords=MaxResults
  269. end if
  270. RS.Open AdoCommand
  271. RS.PageSize = RecordsPerPage
  272. ActiveQuery = TRUE
  273. %>
  274. <!-- BEGIN column header -->
  275. <%
  276. elseif UseSavedQuery then
  277. if IsObject( Session("AdoConnection") ) And IsObject( Session("AdoCommand")) AND IsObject( Session("RecordSet") ) then
  278. set AdoConnection = Session("AdoConnection")
  279. set AdoCommand = Session("AdoCommand")
  280. set RS = Session("RecordSet")
  281. ActiveQuery = TRUE
  282. else
  283. Response.Write "ERROR - No saved query"
  284. end if
  285. end if
  286. %>
  287. <!-- BEGIN first row of query results table -->
  288. <%
  289. if ActiveQuery then
  290. if RS.RecordCount <> -1 and NextPageNumber <> -1 then
  291. RS.AbsolutePage = NextPageNumber
  292. NextRecordNumber = RS.AbsolutePosition
  293. end if
  294. if not RS.EOF then
  295. %>
  296. <p>
  297. <HR WIDTH=80% ALIGN=center SIZE=3>
  298. <p>
  299. <%
  300. LastRecordOnPage = NextRecordNumber + RS.PageSize - 1
  301. CurrentPage = RS.AbsolutePage
  302. if RS.RecordCount <> -1 AND RS.RecordCount < LastRecordOnPage then
  303. LastRecordOnPage = RS.RecordCount
  304. end if
  305. Response.Write "Documents " & NextRecordNumber & " to " & LastRecordOnPage
  306. if RS.RecordCount <> -1 then
  307. Response.Write " of " & RS.RecordCount
  308. end if
  309. Response.Write " matching the query: "
  310. Response.Write "<P>" & chr(34) & AdoCommand.CommandText & "</I>" & chr(34) & ".<P>"
  311. %>
  312. <TABLE width=500>
  313. <%
  314. Do While Not RS.EOF and NextRecordNumber <= LastRecordOnPage %>
  315. <%
  316. ' This is the detail portion for Title, Abstract, URL, Size, and
  317. ' Modification Date.
  318. ' If there is a title, display it, otherwise display the virtual path.
  319. %>
  320. <tr class="RecordTitle">
  321. <td align="right" valign="top" class="RecordTitle">
  322. <%= NextRecordNumber%>.
  323. </td>
  324. <td><b class="RecordTitle">
  325. <%if VarType(RS("DocTitle")) = 1 or RS("DocTitle") = "" then%>
  326. <b><a href="<%=RS("vpath")%>"><%= Server.HTMLEncode( RS("filename") )%></a></b>
  327. <%else%>
  328. <b><a href="<%=RS("vpath")%>"><%= Server.HTMLEncode(RS("DocTitle"))%></a></b>
  329. <%end if%>
  330. </td>
  331. </tr>
  332. <tr>
  333. <td></td>
  334. <td>
  335. <%if VarType(RS("characterization")) = 8 and RS("characterization") <> "" then%>
  336. <b><i>Abstract: </I></b><%= Server.HTMLEncode(RS("characterization"))%>
  337. <br>
  338. <%end if%>
  339. </td>
  340. </tr>
  341. <tr>
  342. <td></td>
  343. <td class="RecordStats" height=40>
  344. <a href="<%=RS("vpath")%>" class="RecordStats" style="color:blue;">http://<%=Request("server_name")%><%=RS("vpath")%></a>
  345. <br><%if RS("size") = "" then%>(size and time unknown)<%else%>size <%=RS("size")%> bytes - <%=RS("write")%> GMT<%end if%></font>
  346. <%if SearchString <> "" then%>
  347. <%
  348. QueryString = CStr(RS.Properties("Query Restriction"))
  349. %>
  350. <BR>
  351. <%
  352. ' Construct the URL for hit highlighting
  353. WebHitsQuery = "CiWebHitsFile=" & Server.URLEncode( RS("vpath") )
  354. WebHitsQuery = WebHitsQuery & "&CiRestriction=" & Server.URLEncode( QueryString )
  355. WebHitsQuery = WebHitsQuery & "&CiBeginHilite=" & Server.URLEncode( "<b class=""Hit"">" )
  356. WebHitsQuery = WebHitsQuery & "&CiEndHilite=" & Server.URLEncode( "</b>" )
  357. WebHitsQuery = WebHitsQuery & "&CiUserParam3=" & QueryForm
  358. %>
  359. <a href="qsumrhit.htw?<%= WebHitsQuery %>">
  360. <IMG src="hilight.gif" align="left" alt="Highlight matching terms in document using Summary mode."> Summary</a>
  361. <br>
  362. <a href="qfullhit.htw?<%= WebHitsQuery %>&CiHiliteType=Full">
  363. <IMG src="hilight.gif" align="left" alt="Highlight matching terms in document."> Full</a>
  364. <%end if%>
  365. <br>
  366. </td>
  367. </tr>
  368. <%
  369. RS.MoveNext
  370. NextRecordNumber = NextRecordNumber+1
  371. Loop
  372. %>
  373. </TABLE>
  374. <%
  375. else
  376. if NextRecordNumber = 1 then
  377. Response.Write "No documents matched the query<P>"
  378. else
  379. Response.Write "No more documents in the query<P>"
  380. end if
  381. end if ' NOT RS.EOF
  382. if NOT GetCiOutofDate(RS.Properties("Rowset Query Status")) then
  383. ' If the index is current, display the fact %>
  384. <P>
  385. <I><B>The index is up to date.</B></I><BR>
  386. <%end if
  387. if GetCiQueryIncomplete(RS.Properties("Rowset Query Status")) then
  388. ' If the query was not executed because it needed to enumerate to
  389. ' resolve the query instead of using the index, but AllowEnumeration
  390. ' was FALSE, let the user know
  391. %>
  392. <P>
  393. <I><B>The query is too expensive to complete.</B></I><BR>
  394. <%end if
  395. if GetCiQueryTimedOut(RS.Properties("Rowset Query Status")) then
  396. ' If the query took too long to execute (for example, if too much work
  397. ' was required to resolve the query), let the user know %>
  398. <P>
  399. <I><B>The query took too long to complete.</B></I><BR>
  400. <%end if%>
  401. <TABLE>
  402. <%
  403. ' This is the "previous" button.
  404. ' This retrieves the previous page of documents for the query.
  405. SaveQuery = FALSE
  406. if CurrentPage > 1 and RS.RecordCount <> -1 then %>
  407. <td align="left">
  408. <form action="<%=QueryForm%>" method="post">
  409. <INPUT TYPE="HIDDEN" NAME="SearchString" VALUE="<%=SearchString%>">
  410. <INPUT TYPE="HIDDEN" NAME="DocAuthorRestriction" VALUE="<%=DocAuthorRestriction%>">
  411. <INPUT TYPE="HIDDEN" NAME="FSRest" VALUE="<%=FSRest%>">
  412. <INPUT TYPE="HIDDEN" NAME="FSRestVal" VALUE="<%=FSRestVal%>">
  413. <INPUT TYPE="HIDDEN" NAME="FSRestOther" VALUE="<%=FSRestOther%>">
  414. <INPUT TYPE="HIDDEN" NAME="FMMod" VALUE="<%=FMMod%>">
  415. <INPUT TYPE="HIDDEN" NAME="FMModDate" VALUE="<%=FMModDate%>">
  416. <INPUT TYPE="HIDDEN" NAME="SortBy" VALUE="<%=SortBy%>">
  417. <INPUT TYPE="HIDDEN" NAME="Scope" VALUE="<%=Scope%>">
  418. <INPUT TYPE="HIDDEN" NAME="pg" VALUE="<%=CurrentPage-1%>" >
  419. <input type="submit" value="Previous <%=RS.PageSize%> documents">
  420. </form>
  421. </td>
  422. <%SaveQuery = UseSessions%>
  423. <%end if%>
  424. <%if Not RS.EOF then
  425. ' This is the "next" button.
  426. ' This button retrieves the next page of documents for the query.
  427. %>
  428. <td align="right">
  429. <form action="<%=QueryForm%>" method="post">
  430. <INPUT TYPE="HIDDEN" NAME="SearchString" VALUE="<%=SearchString%>">
  431. <INPUT TYPE="HIDDEN" NAME="DocAuthorRestriction" VALUE="<%=DocAuthorRestriction%>">
  432. <INPUT TYPE="HIDDEN" NAME="FSRest" VALUE="<%=FSRest%>">
  433. <INPUT TYPE="HIDDEN" NAME="FSRestVal" VALUE="<%=FSRestVal%>">
  434. <INPUT TYPE="HIDDEN" NAME="FSRestOther" VALUE="<%=FSRestOther%>">
  435. <INPUT TYPE="HIDDEN" NAME="FMMod" VALUE="<%=FMMod%>">
  436. <INPUT TYPE="HIDDEN" NAME="FMModDate" VALUE="<%=FMModDate%>">
  437. <INPUT TYPE="HIDDEN" NAME="SortBy" VALUE="<%=SortBy%>">
  438. <INPUT TYPE="HIDDEN" NAME="Scope" VALUE="<%=Scope%>">
  439. <INPUT TYPE="HIDDEN" NAME="pg" VALUE="<%=CurrentPage+1%>" >
  440. <%
  441. NextString = "Next "
  442. if RS.RecordCount <> -1 then
  443. NextSet = (RS.RecordCount - NextRecordNumber) + 1
  444. if NextSet > RS.PageSize then
  445. NextSet = RS.PageSize
  446. end if
  447. NextString = NextString & NextSet & " documents"
  448. else
  449. NextString = NextString & " page of documents"
  450. end if
  451. %>
  452. <input type="submit" value="<%=NextString%>">
  453. </form>
  454. </td>
  455. <%SaveQuery = UseSessions%>
  456. <%end if%>
  457. </TABLE>
  458. <% ' Display the page number
  459. if RS.PageCount <> 0 then
  460. Response.Write "Page " & CurrentPage
  461. if RS.PageCount <> -1 then
  462. Response.Write " of " & RS.PageCount
  463. end if
  464. end if
  465. ' If either of the previous or back buttons were displayed, save
  466. ' the query and the recordset in session variables.
  467. if SaveQuery then
  468. set Session("AdoConnection") = AdoConnection
  469. set Session("AdoCommand") = AdoCommand
  470. set Session("RecordSet") = RS
  471. else
  472. RS.close
  473. AdoConnection.Close
  474. Set RS = Nothing
  475. Set AdoCommand = Nothing
  476. Set AdoConnection = Nothing
  477. if UseSessions then
  478. set Session("AdoConnection") = Nothing
  479. set Session("AdoCommand") = Nothing
  480. set Session("RecordSet") = Nothing
  481. end if
  482. end if
  483. end if
  484. %>
  485. <BR>
  486. <!--#include file ="is2foot.inc"-->
  487. </BODY>
  488. </HTML>