home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gold Fish 2
/
goldfish_vol2_cd1.bin
/
files
/
comm
/
misc
/
cyberpager
/
rexx
/
caw
/
pageoncall
< prev
next >
Wrap
Text File
|
1993-06-23
|
3KB
|
151 lines
/*
* PageOnCall
*
* Copyright © 1993 by Christopher A. Wichura (caw@miroc.chi.il.us)
* All rights reserved.
*
* This script will read the pager:schedule file to try and determine
* who is on call. It will then call SpoolPage to send the page text
* to the person or persons indicated.
*
* If URGENT is the first word on the command line, PageOnCall will operate
* in urgent mode. This means it will continue looking through multiple
* schedules until it can satisfy the request. Thus, it is possible
* have a 'normal duty' schedule and an 'emergency duty' schedule in
* the same schedule file. When the URGENT switch is used, SpoolPage
* will also be started in URGENT mode.
*
* The text of the message to be sent will be read from stdin if it is not
* provided on the command line.
*/
scheduleFile = 'PAGER:schedule'
/*
* No general user modifiable code is found below this point.
* Make changes here at your own risk.
*/
/*
* First we want to figure out what the date and time is so we know
* where to look in the schedule file.
*/
weekDay = date('Weekday')
select
when upper(left(weekDay, 3)) = 'SUN' then weekDay = 0
when upper(left(weekDay, 3)) = 'MON' then weekDay = 1
when upper(left(weekDay, 3)) = 'TUE' then weekDay = 2
when upper(left(weekDay, 3)) = 'WED' then weekDay = 3
when upper(left(weekDay, 3)) = 'THU' then weekDay = 4
when upper(left(weekDay, 3)) = 'FRI' then weekDay = 5
when upper(left(weekDay, 3)) = 'SAT' then weekDay = 6
end
halfHour = time('Minutes') % 30
/*
* Look at the command line we got and see if we are in urgent mode
* or if we have the page text specified, etc.
*/
parse arg pageText
if upper(word(pageText, 1)) = 'URGENT' then do
urgentMode = TRUE
parse var pageText . pageText
end
else
urgentMode = FALSE
pageText = strip(pageText)
/*
* Now open the schedule file and start looking for a match.
*/
if open(fh, scheduleFile, 'R') then do
want = weekDay
exitVal = 0
do until eof(fh)
line = readln(fh)
if left(line, length(want)) = want then do
if want = weekDay then do
who = substr(line, halfHour + 2, 1)
if (who ~= '' & who ~= '-') then
want = who'='
else if urgentMode = FALSE then
leave
end
else do
exitVal = doPage(substr(line, 3), urgentMode, pageText)
want = ''
leave
end
end
end
call close(fh)
if want = weekDay then do
say 'No one scheduled at this time. Message not sent.'
exitVal = 1
end
else if want ~= '' then do
say 'Couldn''t find '''want''' target list identifier. Message not sent.'
exitVal = 2
end
end
else do
say 'Couldn''t open' scheduleFile'.'
exitVal = 5
end
exit exitVal
/*
* The doPage procedure takes a list of comma separated names and
* builds the command line to call SpoolPage with.
*/
doPage: procedure
theCommand = 'spoolpage'
targetList = arg(1)
if targetList = '' then do
say 'Empty target list found. Message not sent.'
return 3
end
do while targetList ~= ''
index = pos(',', targetList)
if index > 0 then do
target = left(targetList, index - 1)
targetList = substr(targetList, index + 1)
end
else do
target = targetList
targetList = ''
end
theCommand = theCommand '"'target'"'
end
if arg(2) = TRUE then
theCommand = theCommand 'URGENT'
if arg(3) ~= '' then
theCommand = theCommand 'MESSAGE' arg(3)
address command theCommand
if rc ~= 0 then
return 4
else
return 0