'=========================================================================== ' Subject: HTML LISTING OF ABC PACKETS Date: 11-05-96 ' Author: Charlie Quante Code: QB, PDS ' Origin: charlie@charlie.seanet.com Packet: HTML.ABC '=========================================================================== 'FULL Header Extraction for this Source Code has been Enabled 'Program Name : ABCINDEX 'Programmed by: Charlie Quante 'Last revised : 11-04-96 'Purpose : Create an HTML page that lists the contents of any ABC ' packet. '---------------------------------------------------------------------------- DECLARE SUB CheckHeading (Heading$(), ABCName$, HeadCount!, TableTitle$, Target) DECLARE FUNCTION ULCASE$ (X$) CLS DIM ABCIndex AS STRING * 78 DIM Heading$(2, 50) DIM GraphicNumber(50) IndexFile = 1 AbcList = 2 HtmlPage = 3 TYPE ABCIndexType Code AS STRING * 1 Position AS STRING * 10 NumLines AS STRING * 5 Subject AS STRING * 31 From AS STRING * 31 END TYPE DIM IndexABC AS ABCIndexType PacketDate$ = COMMAND$ 'TestDIR$ = "H:\ABC\" IF PacketDate$ = "" THEN PageName$ = "ABCLIST.HTM" PacketDate$ = DATE$ ELSE PageName$ = "LIST" + PacketDate$ + ".HTM" END IF Q$ = CHR$(34) LCount = 1 '---------------------------------------------------------------------------- OPEN "I", IndexFile, "ABCINDEX.DAT" 'ABCKeyword,SectionTitle,# for graphic ' ABCINDEX.DAT is an ASCII file that contains the ABC packet keywords, ' such as MOUSE, TEXT, DOS, etc. The keyword is followed by a more ' informative description, and then an integer number that indicates ' which graphic to use. '---------------------------------------------------------------------------- DO WHILE NOT EOF(IndexFile) HeadCount = HeadCount + 1 '---------------------------------------------------------------------------- ' Read the ABC keyword into Heading$(1,HeadCount) INPUT #IndexFile, Text$ Heading$(1, HeadCount) = Text$ '---------------------------------------------------------------------------- ' Read the description into Heading$(2,HeadCount) INPUT #IndexFile, Text$ Heading$(2, HeadCount) = Text$ '---------------------------------------------------------------------------- ' Read the graphic number into GraphicNumber(HeadCount) INPUT #IndexFile, GraphicNumber(HeadCount) '---------------------------------------------------------------------------- LOOP CLOSE #IndexFile '---------------------------------------------------------------------------- ' Use a simple bubble sort to alphabetize the keyword array Flag = -1 DO WHILE Flag = -1 Flag = 0 FOR I = 1 TO HeadCount - 1 IF Heading$(1, I) > Heading$(1, I + 1) THEN SWAP Heading$(1, I), Heading$(1, I + 1) SWAP Heading$(2, I), Heading$(2, I + 1) SWAP GraphicNumber(I), GraphicNumber(I + 1) Flag = -1 END IF NEXT I LOOP '---------------------------------------------------------------------------- ' Use the SHELL command to get a directory listing of all the ' *.ABC files, and store the results in ABC.LST DosCommand$ = "DIR /A /O:N " + TESTDIR$ + "*.ABC >ABC.LST" SHELL DosCommand$ '---------------------------------------------------------------------------- ' Open ABC.LST so we can read the names of the *.ABC files. ' Also open the PageName$ file so we can start creating our html ' page listing the contents of the ABC packet. OPEN "I", AbcList, "ABC.LST" OPEN "O", HtmlPage, PageName$ '---------------------------------------------------------------------------- ' The first five lines of ABC.LST contain directory information that ' we wont need. The For/Next loop skips past them. FOR I = 1 TO 5 LINE INPUT #AbcList, Trash$ NEXT I '---------------------------------------------------------------------------- ' Add the opening HTML code, the HEAD code, and the TITLE code to ' the HTML page. PRINT #HtmlPage, "" PRINT #HtmlPage, "" PRINT #HtmlPage, ""; PRINT #HtmlPage, "ABC packet contents for: " + PacketDate$ + "" PRINT #HtmlPage, "" '---------------------------------------------------------------------------- ' Write the BODY command so that it will use a background .GIF file. PRINT #HtmlPage, "" PRINT #HtmlPage, " " '---------------------------------------------------------------------------- ' Write the main heading for the page. PRINT #HtmlPage, "
" PRINT #HtmlPage, "

 + Q$ +

" PRINT #HtmlPage, " " '---------------------------------------------------------------------------- ' Write the table for the main menu, and all the hyperlinks to the ' different ABC catagories included in the packet. PRINT #HtmlPage, "

" PRINT #HtmlPage, "" PRINT #HtmlPage, "" PRINT #HtmlPage, " " PRINT #HtmlPage, "" TotalCount = 1 RowCount = 1 PRINT #HtmlPage, "" DO WHILE NOT (EOF(2)) LINE INPUT #AbcList, ABCName$ CheckHeading Heading$(), ABCName$, HeadCount, TableTitle$, Target IF LEFT$(ABCName$, 1) <> " " THEN HyperLink$ = LTRIM$(STR$(TotalCount)) PRINT #HtmlPage, " " RowCount = RowCount + 1 TotalCount = TotalCount + 1 END IF IF RowCount = 4 THEN RowCount = 1 PRINT #HtmlPage, "" PRINT #HtmlPage, " " PRINT #HtmlPage, "" END IF LOOP PRINT #HtmlPage, "" PRINT #HtmlPage, "
 + Q$ +
"; PRINT #HtmlPage, " + Q$ + "; PRINT #HtmlPage, "" + TableTitle$ + ""; PRINT #HtmlPage, "
" PRINT #HtmlPage, " " RESTORE IndexABC READ Text$ PRINT #HtmlPage, "
"; PRINT #HtmlPage, ""; PRINT #HtmlPage, Text$; PacketDate$ + CHR$(34) + ">Previous page
|" PRINT #HtmlPage, "" PRINT #HtmlPage, " " CLOSE #AbcList OPEN "I", AbcList, "ABC.LST" FOR I = 1 TO 5 LINE INPUT #AbcList, Trash$ NEXT I DO WHILE NOT EOF(2) LINE INPUT #AbcList, ABCName$ IF LEFT$(ABCName$, 1) <> " " THEN CheckHeading Heading$(), ABCName$, HeadCount, TableTitle$, Target GraphicCode$ = LTRIM$(STR$(GraphicNumber(Target))) HyperLink$ = LTRIM$(STR$(LCount)) PRINT #HtmlPage, "


" PRINT #HtmlPage, "" PRINT #HtmlPage, "" PRINT #HtmlPage, " " PRINT #HtmlPage, "" PRINT #HtmlPage, " " LCount = LCount + 1 DEX$ = RTRIM$(LEFT$(ABCName$, 8)) + ".IDX" IndexFile$ = DEX$ ' and make sure they exist. COUNT = 0 OPEN TESTDIR$ + IndexFile$ FOR BINARY AS #IndexFile ' Open the .IDX file DO WHILE NOT EOF(1) GET #IndexFile, , ABCIndex ' Get first record (Nah, too easy, always 1) Temporary$ = ABCIndex IndexABC.Code = LEFT$(Temporary$, 1) IndexABC.Position = MID$(Temporary$, 2, 10) IndexABC.NumLines = MID$(Temporary$, 12, 5) IndexABC.Subject = MID$(Temporary$, 17, 31) IndexABC.From = RIGHT$(Temporary$, 31) COUNT = COUNT + 1 LOCATE 1, 1, 0 R = INT(RND * 16) + 1 COLOR 15, 0 PRINT "ABC Index processing:"; LOCATE 1, 23, 0 PRINT STRING$(30, 32); IP = IP + 1 IF IP > 20 THEN IP = 20 LOCATE 1, 23, 0 COLOR R, 0 PRINT STRING$(IP, "þ"); IF VAL(IndexABC.NumLines) > 0 THEN IndexABC.Subject = RTRIM$(IndexABC.Subject) IndexABC.Subject = ULCASE$(IndexABC.Subject) PRINT #HtmlPage, "" PRINT #HtmlPage, " "; PRINT #HtmlPage, " " PRINT #HtmlPage, "" END IF LOOP PRINT #HtmlPage, "

" PRINT #HtmlPage, "  + Q$ + TableTitle$ + Q$ + "; "" PRINT #HtmlPage, "

"; PRINT #HtmlPage, ""; RTRIM$(IndexABC.Subject); ""; PRINT #HtmlPage, ""; PRINT #HtmlPage, RTRIM$(IndexABC.From); PRINT #HtmlPage, "
" PRINT #HtmlPage, " " PRINT #HtmlPage, "
" RESTORE IndexABC READ Text$ PRINT #HtmlPage, ""; PRINT #HtmlPage, Text$; PacketDate$ + CHR$(34) + ">Previous page
|" PRINT #HtmlPage, "" PRINT #HtmlPage, " " CLOSE #IndexFile END IF LOOP PRINT #HtmlPage, "
" PRINT #HtmlPage, "" CLOSE IndexABC: DATA | Menu |