PROGRAM Watcher
LastUpdated... = "Rev: 19:30 17SEP89 ANDREW <COMDE2>EMAIL 115 Z <COMDE2>EMAIL>BP>WATCHER"
***
* Copyright (C) 2000, Andrew McLaughlin.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
* or http://www.fsf.org/copyleft/gpl.html
*
*   Enjoy, Andrew McLaughlin - andrew@mclaughlin.orange.ca.us
***     
     OPEN '','VOC' TO VocFile ELSE STOP "No VOC file."
     eMailId = FIELD(@COMMAND," ",2)
     IF LEN(eMailId) EQ 0 THEN
        READ eMailId FROM VocFile, "LASTEMAILWATCH" ELSE
           eMailId = 1
        END
     END
     LineCount = 0
     MaxLines = 23
     IF @(0,0) THEN NULL
     LowerCase = "abcdefghijklmnopqrstuvwxyz"
     UpperCase = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
     OPEN "","EMAIL.USERS" TO eMailUsersFile ELSE STOP "No EMAIL.USERS file."
     OPEN "","EMAIL.DATA"  TO eMailDataFile  ELSE STOP "No EMAIL.DATA file."
     Response = ""
     LOOP
        READ Next FROM eMailDataFile, "NEXT.MSG" ELSE
           STOP "Unable to read NEXT from EMAIL.DATA file."
        END
        FOR eMailId = eMailId TO Next-1
           GOSUB PrintMsg
        UNTIL Response EQ "Q"
        NEXT eMailId
        WRITE eMailId TO VocFile, "LASTEMAILWATCH"
     UNTIL Response EQ "Q"
     REPEAT
     RETURN

PrintMsg:
     READ MSGRec FROM eMailDataFile,eMailId ELSE
        CRT "Message #":eMailId:" not found."
        RETURN
     END

     Response = ""

     PL = "#":eMailId
     GOSUB PrintPL
     IF Response EQ "Q" THEN RETURN
     IF MSGRec<1> EQ "ANY" THEN
        Name = "Anonymous (User ":MSGRec<8>:")"
     END ELSE
        READV Name FROM eMailUsersFile, MSGRec<1>, 1 ELSE Name = "Unknown sender."
     END
     PL = "From:    ":Name :" [":MSGRec<1>:"]"
     GOSUB PrintPL
     IF Response EQ "Q" THEN RETURN
     ToList = MSGRec<7>
     MoreTo = LEN(ToList) GT 0
     k = 1
     LOOP WHILE MoreTo
        REMOVE ToId FROM ToList SETTING MoreTo
        IF k EQ 1 THEN PL = "To:      " ELSE PL = SPACE(9)
        READV Name FROM eMailUsersFile, ToId, 1 ELSE Name = "Unknown receiver."
        PL := Name:" [":ToId:"]"
        GOSUB PrintPL
        IF Response EQ "Q" THEN RETURN
        k += 1
     REPEAT
     PL = ""
     PL := "Date:    "
     PL := OCONV(MSGRec<4>,"MTS")
     PL := "  "
     PL := OCONV(MSGRec<3>,"D")
     GOSUB PrintPL
     PL = "Subject: ": MSGRec<5>
     IF Response EQ "Q" THEN RETURN
     GOSUB PrintPL
     IF Response EQ "Q" THEN RETURN
     PL = ""
     GOSUB PrintPL
     IF Response EQ "Q" THEN RETURN
     MSGList = MSGRec<6>
     MoreMSG = LEN(MSGList) GT 0
     LOOP WHILE MoreMSG AND Response NE "Q"
        REMOVE PL FROM MSGList SETTING MoreMSG
        GOSUB PrintPL
     REPEAT
     PL = "***"
     GOSUB PrintPL
     IF Response EQ "Q" THEN RETURN
     IF MSGRec<11> NE "" THEN
        READV Name FROM eMailUsersFile, MSGRec<11>, 1 ELSE Name = "Unknown"
        PL = "Message removed by ":Name:" [":MSGRec<11>:"] on ":OCONV(MSGRec<12>,"D"):"."
     END ELSE
        PL = "Message active."
     END
     LineCount = MaxLines
     GOSUB PrintPL
     IF Response EQ "Q" THEN RETURN
     RETURN

PrintPL:
     LineCount += 1
     CRT PL[1,79]
     IF LineCount GE MaxLines THEN
        CRT "Press <RETURN> to continue . . . ":
        INPUT Response,1
        CONVERT LowerCase TO UpperCase IN Response
        LineCount = 0
        IF Response NE "Q" THEN
           CRT @(-1):
        END
        FirstDist = 0
     END
     RETURN

  END
