'===========================================================================
' 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, "
"
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, " ";
PRINT #HtmlPage, " ";
PRINT #HtmlPage, "" + TableTitle$ + "";
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, "
"
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, " | "
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, ""; RTRIM$(IndexABC.Subject); "";
PRINT #HtmlPage, " | ";
PRINT #HtmlPage, " ";
PRINT #HtmlPage, RTRIM$(IndexABC.From);
PRINT #HtmlPage, " | "
PRINT #HtmlPage, "
"
END IF
LOOP
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 |