SI
SI
discoversearch

We've detected that you're using an ad content blocking browser plug-in or feature. Ads provide a critical source of revenue to the continued operation of Silicon Investor.  We ask that you disable ad blocking while on Silicon Investor in the best interests of our community.  If you are not using an ad blocker but are still receiving this message, make sure your browser's tracking protection is set to the 'standard' level.
Strategies & Market Trends : TA-Quotes Plus -- Ignore unavailable to you. Want to Upgrade?


To: Al Greenleaf who wrote (3147)1/19/1998 8:16:00 PM
From: TechTrader42  Read Replies (1) | Respond to of 11149
 
That's Sean's department, I'm sorry to say. Maybe he'll step in and suggest something.



To: Al Greenleaf who wrote (3147)1/19/1998 10:11:00 PM
From: Jeff Grover  Read Replies (1) | Respond to of 11149
 
Al,

I used the following scripts.
You'll have to edit the scpec file for your needs.
You'll need winbatch from windowware.com.

Happy scanning

P.S.

Its gonna take two messages to post this....

XXXXXXXXXXXXXXXXXXXX SPEC FILE XXXXXXXXXXXXXXXXXXXXXXXXXXX
;
; define the directories
;
POINTERS:
;
qpInstallPath "e:\quotpls2"
qpDataPath "d:\qp2data\"
qpListArchPath "e:\quotplus\oldlists"
logFile "e:\Automation\qplusbat.log"
;
MS_DataDir "e:\ms\data"
;
; define web site params
;
;http://userid:passwd@www.quotes-plus.com/dailyfiles/download.html
;http://www.quotes-plus.com/dailyfiles/05081997.qpl
;
userid "Put_Your_Userid_Here" Quotes Plus Web Page Userid
passwd "Put_Your_Passwd_Here" Quotes Plus Web Page Password
webHost "www.quotes-plus.com"
webPath "/dailyfiles"
;
END_POINTERS:
;
;----------------------------------------------------
SCANS:
;
; define the scans to be performed
;
; Format: scan_name input_file output_file
;
DNS_6 bbb dns_6
DNS_7 dns_6 dns_7
;
END_SCANS:
;
;------------------------------------------------------
COPY:
;
; define files to copy into MetaStock format
;
; Format: target_directory list_file
;
current current
watch watch
;open open
;indicies indexes
;
END_COPY:
;
;------------------------------------------------------
ARCHIVE:
;
END_ARCHIVE:

XXXXXXXXXXXXXXXXXXX WINBATCH FILE XXXXXXXXXXXXXXXXXXXXXXXXXXXXX

;
; QPDAY.wbt - Automatically perform routine QuotesPlus functions
; original concept by Paul Beattie.
; heavily modified by Jeff Grover (1 Sept 1997)
;
; Event Sequence:
;
; 1) Download EOD Data from Web Site
; 2) QP Update database
; 3) QP Run scans
; 4) Archive Scan and List results for future back testing
; 5) QP Output Metastock files
; Files are output in full because the
; Automatic update feature of QP doesn't transfer
; splits properly to existing Metastock files.
;
; NOTE: (I changed this to update. NEED TO FIX ASAP!)
;
; Instructions: The following variables listed below must all be defined
; properly for the script to work.
;

;============================================================================

;debug(@ON) ; Un Comment this line to turn on debugger

gosub SetupDateFiles

; setup information from spec file
;

specs = FileOpen("qpday_spec1.txt","read")
while @TRUE
in_line = FileRead(specs)
If (in_line == "*EOF*") || (in_line == "POINTERS:") then Break
endwhile
while @TRUE ; Loop till break do us end
in_line = FileRead(specs)
If (in_line == "*EOF*") || (in_line == "END_POINTERS:") Then Break
If StrSub(in_line,1,1) != ";"
variable = ItemExtract (1, in_line, @TAB)
value = ItemExtract (2, in_line, @TAB)
%variable% = %value%
endif
endwhile
FileClose(specs)

maxConnectAttempts =100 ; Set the Maximum # of Tries to fetch EOD Data
; status = "startup"
code = 0

;============================================================================

; Include any extra modules we need.

AddExtender ("WWW9532I.DLL") ; Winsock Extenders
AddExtender ("wwwsk32i.dll") ;

;============================================================================

;;;;;
;;;;;;;;;;;; This Example ;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;; Drawing the Main Box ;;;;;;;;

;;;;;;;; Assorted Colors ;;;;;;;;;
DKBLUE="0,0,128"
BLUE="0,0,255"
LTGRAY="192,192,192"
GRAY="128,128,128"
DKGRAY="64,64,64"
GREEN="0,255,0"
RED="255,0,0"
BLACK="0,0,0"
WHITE="255,255,255"
YELLOW="255,255,0"

;;;;; Generic code for drawing a box and adding text to it.

;Get title on screen
;wbid = 99
;BoxNew(wbid,rectTitle,1)
;BoxColor(wbid,BLACK,0)
;BoxDrawRect(wbid,"0,0,1000,1000",2)
;BoxTextFont(wbid,"Arial",TitleHeight,170,0) ; san-srif, ariel, size 20, bold, noitalic
;BoxTextColor(wbid,RED)
;BoxDrawText(wbid,rectTitleText,"Acme Aardvarks",0,32)

;; Note the use of while 1. This use of while maintains
;; the boxes until a user clicks on a button and exits
;; the while construction
BoxesUp("100,100,600,600",@NORMAL)

while 1

BoxColor(1,"0,0,128",4)
BoxCaption(1,"Quote Plus Utilities")
;; Note: Here we specify 8 buttons numbered 1 to 8.
;; You can change this. Edit the list of buttons here,
;; go to the "Select a button" routine and add or subtract
;; your button selection information. Then create a subroutine
;; at the end of this script to do what you need done when
;; the button is pushed. There is a sample for you to use.

bExit=1
bHelp=2
bGet=3
bScan=4
bCopy=5
bArch=6
bUpdate=7
bText=8
bDoAll=9
bRevD=10

BoxDrawRect(1,"0,0,1000,1000",2)

BoxTextFont(1,"Times",150,80,0|0)
BoxTextColor(1,"255,255,0")
; BoxDrawText(1,"325,550,1000,1000","Invester Control Center",0,0);;;

;;;;; This section creates the fancy banner headline in a box
rectNote="100,30,900,270"
NoteHeight=400
rectNoteText="70,200,950,800"

rectnoteline1="0,0,1000,0"
rectNoteline2="1000,1000,1000,0"
rectNoteLine3="0,1000,1000,1000"
rectNoteLine4="0,0,0,1000"
notepenwidth=20
rectnoteline1b="40,150,960,150"
rectNoteline2b="960,840,960,150"
rectNoteLine3b="40,840,960,840"
rectNoteLine4b="40,150,40,840"
notepenwidthb=10
wbid=2
Thermid=3
Noteid=4
BoxNew(Noteid,rectNote,1)
BoxColor(Noteid,LTGRAY,0) ; Light Gray no gradient
BoxDrawRect(Noteid,"",2)
;;;;; --------- This line changes the headline font -----------------
BoxTextFont(Noteid,"Arial",NoteHeight,170,0)
BoxTextColor(Noteid,RED)

BoxPen(Noteid,WHITE,notepenwidth)
boxdrawline(Noteid,rectNoteLine1)
boxdrawline(Noteid,rectNoteLine4)
BoxPen(Noteid,GRAY,notepenwidth)
boxdrawline(Noteid,rectNoteLine2)
boxdrawline(Noteid,rectNoteLine3)
BoxPen(Noteid,WHITE,notepenwidthb)
boxdrawline(Noteid,rectNoteLine2b)
boxdrawline(Noteid,rectNoteLine3b)
BoxPen(Noteid,GRAY,notepenwidthb)
boxdrawline(Noteid,rectNoteLine1b)
boxdrawline(Noteid,rectNoteLine4b)

;BoxDataTag(Noteid,"NOTE")

; BoxDataClear(NoteId,"NOTE")

;;;;; ----------- The BoxDrawText line creates the headline text. Copy (don't move)
;;;;; this line anywhere in this script you need to change the headline text.

BoxDrawText(Noteid,rectNoteText,"Quote Plus Utilities",1,4)

BoxButtonDraw(1,bGet, "&Get Data", "50,320,250,390")
BoxButtonDraw(1,bRevD, "&Dates", "750,320,950,390")
BoxButtonDraw(1,bUpdate,"&Updt QP", "50,410,250,480")
BoxButtonDraw(1,bScan, "&Run Scans", "50,500,250,570")
BoxButtonDraw(1,bArch, "&Arc Lists", "50,590,250,660")
BoxButtonDraw(1,bCopy, "&DB Copy", "50,680,250,750")
BoxButtonDraw(1,bText, "&View Log", "50,770,250,840")
BoxButtonDraw(1,bDoAll, "&Do All", "50,860,250,930")
BoxButtonDraw(1,bHelp, "&Help", "550,860,700,930")
BoxButtonDraw(1,bExit, "E&xit", "750,860,900,930")

BoxTextFont(1,"Arial",45,0,0)

DOW = (TimeJulianDay("%TodayYear%:%TodayMonth%:%TodayDay%") + 5 ) mod 7 + 1
day=day_%DOW%
BoxDrawText(1, "320,320,500,390", "Date : %day% (%TodayMonth%/%TodayDay%)", 0, 0)

DOW = (TimeJulianDay("%LastYear%:%LastMonth%:%LastDay%") + 5 ) mod 7 + 1
day=day_%DOW%
BoxDrawText(1, "320,410,500,480", "Updated : %day% (%LastMonth%/%LastDay%)", 0, 0)

BoxDrawText(1, "320,500,500,570", "Scans :", 0, 0)
BoxDrawText(1, "320,590,500,660", "Archives :", 0, 0)

if (code == 0 ) then status="Start-up Initialization Complete"
if (code == 1 ) then status="qplus DATABASE UPDATED"
if (code == 4 ) then status="NO database UPDATE required"
if (code == 2 ) then status="qplus SCANS COMPLETED"
if (code == 3 ) then status="mswin FILES COPIED"
if (code == 999) then status="some kind of ERROR occured"
if (code == 404) then status="file NOT READY for download"
if (code == 200) then status="files DOWNLOADED successfully"

BoxDrawText(1, "320,680,500,750", "Status : %status%", 0, 0)



iBox=0
BoxButtonWait()
while iBox==0
for x=1 to 10
if BoxButtonStat(1,x) then iBox=x
next
end while

;;; Select a button ;;;;


if iBox
BoxDataClear(1,"TOP")
switch iBox
case bGet
gosub GetQuotes
break
case bUpdate
gosub QP_Update
break
case bRevD
code=RunWait("C:\WINDOWS\NOTEPAD.EXE","dates to get.lst")
comment="RC=%code% %qpListArchPath%\ibd\ibd_dates to get.lst edited! "
GoSub AddMessageToLog
code=0
break
case bScan
gosub QP_Run_scans
break
case bArch
gosub archQpLists
break
case bCopy
gosub QP_Copy_files
break
case bDoAll
gosub GetQuotes
gosub QP_Update
gosub QP_Run_scans
gosub archQpLists
gosub QP_Copy_files
break
case bExit
exit
break
end switch

endif
end while
exit
;;;;;



To: Al Greenleaf who wrote (3147)1/19/1998 10:12:00 PM
From: Jeff Grover  Read Replies (1) | Respond to of 11149
 
..... the rest of it (too big for one message)

;===========================================================================

:QP_Update ; Subroutine

if(FileExist("dates retrieved.lst"))

qpfilename="none"
dates = FileOpen("dates retrieved.lst","read")
while @TRUE ; Loop till break do us end
prevqpfilename = qpfilename
qpfilename = FileRead(dates)
If qpfilename == "*EOF*" Then Break
qpfilename = StrSub(qpfilename,1,12)
; gosub getQpWebData
code=Run("%qpInstallPath%\qp_view","%qpDataPath%\incoming\%qpFileName%"); Process Files
winWaitExist("File received.",30) ; Wait for the Completed Window
SendKeysTo("File received.","{Enter}") ; Close the Window

endwhile
FileClose(dates)
FileDelete("dates retrieved.lst")

comment="QP_VIEW.EXE executed and returned RC=%code%"
GoSub AddMessageToLog

; Note: seems that return code always = one. Is this QP or
; winbatch??

code=RunWait("%qpInstallPath%\qp_proc.exe", ""); Process Files
comment="QP_PROC.EXE executed and returned RC=%code%"
GoSub AddMessageToLog

WinWaitClose("Process daily quotes")

; QP routine opened a window named MMDDYYYY.RPT - Close it.
; - This doesn't always work. Not sure why..
; Sometimes Winbatch doesn't find the window we want to close.
;
; Get list of all windows. Check for Name of NNNNNNNN.rpt
; where NNNNNNNN is an integer
; Assume only QP's window has this form. Close the window.

allwins = WinItemize()
wincount = ItemCount(allwins, @TAB)
For pos = 1 to wincount
win = ItemExtract(pos, allwins, @TAB)
date = StrSub(win, 1, 8)
rpt = StrSub(win, 9, 4)

if (rpt == ".rpt" && IsInt(date)) then
WinClose(win)
break
endif
pos = pos + 1
Next
code = 1
Return
else
code = 4
return
endif

;===========================================================================

:QP_Run_scans ; Subroutine
; Run scans against QP database

specs = FileOpen("qpday_spec1.txt","read")
while @TRUE
in_line = FileRead(specs)
If (in_line == "*EOF*") || (in_line == "SCANS:") then Break
endwhile
while @TRUE ; Loop till break do us end
in_line = FileRead(specs)
If (in_line == "*EOF*") || (in_line =="END_SCANS:") Then Break
If StrSub(in_line,1,1) != ";"
scan = ItemExtract (1, in_line, @TAB)
in_file = ItemExtract (2, in_line, @TAB)
out_file = ItemExtract (3, in_line, @TAB)
FileCopy("%qpDataPath%\LISTS\%in_file%.lst","%qpDataPath%\LISTS\in_file.lst" ,@FALSE)
code=RunWait("%qpInstallPath%\qp_scan.exe", "%scan%.scn")
FileCopy ("%qpDataPath%\LISTS\out_file.lst", "%qpDataPath%\LISTS\%out_file%.lst" ,@FALSE)
FileDelete("%qpDataPath%\LISTS\in_file.lst")
FileDelete("%qpDataPath%\LISTS\out_file.lst")
comment="QP_SCAN.EXE executed and returned RC=%code%"
GoSub AddMessageToLog
endif
endwhile
FileClose(specs)
code = 2
Return

;===========================================================================

;-----------------------------------------------------------------
:QP_Copy_files ; Subroutine
; Output files in Metastock format based on scans
; Note: Multiple scans to various directories.
;

specs = FileOpen("qpday_spec1.txt","read")
while @TRUE
in_line = FileRead(specs)
If (in_line == "*EOF*") || (in_line == "COPY:") then Break
endwhile
while @TRUE ; Loop till break do us end
in_line = FileRead(specs)
If (in_line == "*EOF*") || (in_line =="END_COPY:") Then Break
If StrSub(in_line,1,1) != ";"
src = ItemExtract (1, in_line, @TAB)
dst = ItemExtract (2, in_line, @TAB)
DataDir="%MS_DataDir%\%dst%"
ListName="%qpDataPath%\LISTS\%src%.lst" ; Export the List
; pause("%DataDir%","%ListName%")
GoSub QP_Metastock
comment="%qpDataPath%\LISTS\%src%.lst exported to %MS_DataDir%\%dst%"
GoSub AddMessageToLog
endif
endwhile
FileClose(specs)
;
; update the files in MS directory
;
Run("%qpInstallPath%\QP_META.EXE", "")
Delay(1) ; Let program start - before sending keystrokes
SendKeysTo(MSOutWin, "{Tab}{Tab}{Tab}{Enter}{Enter}")
SendKeysTo(MSOutWin, "{Tab}{Enter}")
WinClose(MSOutWin)
code = 3
Return

;===========================================================================

:QP_Metastock ;Subroutine
; Output QP data to Metastock data directories
; Requires parameters:
; DataDir - full pathname of data directory
; ListName- full pathname of list file
; CleanDir- @TRUE to start with clean Datadir
; @FALSE to just add files
;

exefile="%qpInstallPath%\QP_META.EXE"
MSOutWin="Metastock Options"
timeperstock=1 ; Allow .5 seconds per stock for Output to Metastock
; This is specific to my PC, and generous, from observation.

; Find number entries in the List file. Use this number to plan delay
fs1 = FileSize( ListName )
binbuf1 = binaryalloc( fs1 )
BinaryRead( binbuf1, ListName )
numlines = BinaryStrCnt( binbuf1, 0, fs1 - 1, @CRLF)
BinaryFree( binbuf1 )

; Set to output to single dir. Lists less than 255 for this option only....
Run(exefile, "")
Delay(1) ; Let program start - before sending keystrokes

; Output to Multiple Directories (in case more than 256 tickers)
; I don't have to care how many hits occured in a scan.
SendKeysTo(MSOutWin, "{Tab}{Enter}")
; Fill in DataDir and ListName
SendKeysTo(MSOutWin, "%DataDir%{Tab}%ListName%{Tab}{Enter}")

Delay(numlines*timeperstock) ; Allow time for transfer

WinClose(MSOutWin)

comment="%listname%.lst was exported to %dataDir%"
GoSub AddMessageToLog

Delay(1)
Return

;===========================================================================

:SetupDateFiles

TodayDate=TimeYmdHms(); Get the Date in a String
TodayYear=StrSub(TodayDate,1,2); Parse the fields from date
TodayMonth=StrSub(TodayDate,4,2);
TodayDay=StrSub(TodayDate,7,2);
Today = "%TodayMonth%%TodayDay%19%TodayYear%"

days_01=31 ;
days_02=28 ;
if(TodayYear == 4 * int( TodayYear / 4 )) then days_2 =29
days_03=31 ;
days_04=30 ;
days_05=31 ;
days_06=30 ; Specifies the number of
days_07=31 ; days in each month
days_08=31 ;
days_09=30 ;
days_10=31 ;
days_11=30 ;
days_12=31 ;

day_1 = "Sun" ;
day_2 = "Mon" ;
day_3 = "Tue" ; Names the days of the weeks
day_4 = "Wed" ;
day_5 = "Thu" ;
day_6 = "Fri" ;
day_7 = "Sat" ;

month_1 = "Jan" ;
month_2 = "Feb" ;
month_3 = "Mar" ; Names the months of the year
month_4 = "Apr" ;
month_5 = "May" ;
month_6 = "Jun" ;
month_7 = "Jul" ;
month_8 = "Aug" ;
month_9 = "Sep" ;
month_10 = "Oct" ;
month_11 = "Nov" ;
month_12 = "Dec" ;

dates = FileOpen("Last date retrieved.lst","read")
LastQuoteDate = FileRead(dates)
LastYear = StrSub(LastQuoteDate,7,2)
LastMonth = StrSub(LastQuoteDate,1,2)
LastDay = StrSub(LastQuoteDate,3,2)
LastQuoteDate = "%lastMonth%%LastDay%19%LastYear%"

if( StrLen(LastDay) == 1 ) then LastDay ="0%LastDay%"
FileClose(dates)

GetYear = LastYear
GetMonth = LastMonth
GetDay = LastDay + 1

if (LastQuoteDate != Today )
dates = FileOpen("dates to get.lst","write")
while("%GetMonth%%GetDay%19%GetYear%" != Today)
DOW = (TimeJulianDay("%GetYear%:%GetMonth%:%GetDay%") + 5 ) mod 7 + 1
if( DOW > 1 && DOW < 7)
DOW_st = day_%DOW%
FileWrite( dates, "%DOW_st% %GetMonth%/%GetDay% - %GetMonth%%GetDay%19%GetYear%.qpl" )
endif
GetDay = GetDay+1
if( StrLen(GetDay) == 1 ) then GetDay ="0%GetDay%"
if(GetDay > days_%GetMonth%)
GetDay = "01"
GetMonth = GetMonth + 1
if( StrLen(GetMonth) == 1 ) then GetMonth ="0%GetMonth%"
if( GetMonth == 13)
GetMonth = "01"
GetYear = GetYear + 1
endif
endif
endwhile

DOW = (TimeJulianDay("%GetYear%:%GetMonth%:%GetDay%") + 5 ) mod 7 + 1
if( DOW > 1 && DOW < 7)
DOW_st = day_%DOW%
FileWrite( dates, "%DOW_st% %GetMonth%/%GetDay% - %GetMonth%%GetDay%19%GetYear%.qpl" )
endif
FileClose(dates)
endif

Return

;===========================================================================
:GetQuotes

Run("%qpInstallPath%\QP_NET.EXE", "go")

if(FileExist("dates to get.lst"))

qpfilename="none"
dates = FileOpen("dates to get.lst","read")
while @TRUE ; Loop till break do us end
prevqpfilename = qpfilename
qpfilename = FileRead(dates)
If qpfilename == "*EOF*" Then Break
qpfilename = StrSub(qpfilename,13,12)
code = 0
gosub getQpWebData
endwhile

FileClose(dates)

else

qpfilename="%month%%day%19%year%.qpl"
prevqpfilename = qpfilename
;Message("single fetch", qpfilename)
;gosub getQpWebData
endif

; if (code == 200)
; dates = FileOpen("Last date retrieved.lst","write")
; FileWrite(dates,prevqpfilename)
; FileClose(dates)
; endif

return
;===========================================================================
:getQpWebData
code=0

HTTPAuth(userid,passwd)
url = "http://%webHost%/%webPath%/%qpFileName%"

; Try to get file from Host. Successful download from web server
; returns 200. You set maxConnectAttempts to support variable
; timeout.
;
attempts=0
while ((code != 200) && (attempts < maxConnectAttempts)) ; 200 = Success
;Message("Download Quotes", qpfilename)
; Display(5,"",url)
BoxDrawRect(1,"480,680,950,750",2)
BoxColor(1,LTGRAY,0) ; Light Gray no gradient
BoxDrawText(1, "480,680,500,750", "%qpFileName% : downloading", 0, 0)
code=HttpRecvFile(webHost,"%webPath%/%qpFileName%","%qpDataPath%/incoming/%qpFileName%",0)

if (code == 404)
comment="file not ready %code% : %qpFileName%"
GoSub AddMessageToLog
BoxDrawRect(1,"480,680,950,750",2)
BoxColor(1,LTGRAY,0) ; Light Gray no gradient
BoxDrawText(1, "480,680,500,750", "%qpFileName%", 0, 0)
return
endif

if (code != 200)
; Delay(180)
endif
attempts=attempts+1

if (code == 404)
; pause("Download Failure", "data not up on server yet")
status = "Data not ready (try - #%attempts%)"
BoxDrawRect(1,"480,680,950,750",2)
BoxColor(1,LTGRAY,0) ; Light Gray no gradient
BoxDrawText(1, "480,680,500,750", "%qpFileName% : #%attempts%", 0, 0)
status="not"
; return
endif
endwhile

if (code == 200)
date = FileOpen("Last date retrieved.lst","write")
FileWrite(date,qpfilename)
FileClose(date)

date = FileOpen("dates retrieved.lst","append")
FileWrite(date,qpfilename)
FileClose(date)
endif

if (code == 200)
comment="Download Web Quotes RC: %code% Attempts: %attempts%"
else
comment="WARNING: Download Web Quotes Timed out after %attempts% attempts"
endif
GoSub AddMessageToLog

return

;===========================================================================

:archQpLists ; Create Archive of Daily scan results as well as archive
; of weekly IBD YWR Lists

code=0
date=TimeYmdHms()
year=StrSub(date,1,2);
month=StrSub(date,4,2);
day=StrSub(date,7,2);

; Do Daily Stuff First
;

; Backup IBD_BBB Daily Scan
code=FileCopy("%qpDataPath%\lists\ibd_bbb.lst", "%qpListArchPath%\ibd_bbb\ibd_bbb_%month%_%day%_%year%.lst", @TRUE)

comment="RC=%code% %qpListArchPath%\ibd_bbb\ibd_bbb_%month%_%day%_%year%.lst created! "
GoSub AddMessageToLog

; Use Julian Day to easily determine day of week
; This scan only checks for monday as this is
; the day I designated for to backup my friday
; IBD list. Program assumes it is only run
; on mon-friday. no real reason to run on weekend
;
a=TimeYmdHms()
b=TimeJulianDay(a)
c=(b+5) mod 7
dayOfWeek=ItemExtract(c+1, "Sun Mon Tue Wed Thu Fri Sat", " ")

if (dayOfWeek=="Mon")
code=FileCopy("%qpDataPath%\lists\ibd.lst", "%qpListArchPath%\ibd\ibd_%month%_%day%_%year%.lst", @TRUE)
comment="RC=%code% %qpListArchPath%\ibd\ibd_%month%_%day%_%year%.lst created! "
GoSub AddMessageToLog
endif
return

;===========================================================================

; Simple task to append a comment to logfile
;
:AddMessageToLog
handle=fileopen(logFile, "append")
stamp=TimeDate()
filewrite(handle, "%stamp% %comment%")
fileclose(handle)
return