PROGRAM WATCHR,1.0
!
! ============================
! // BACKGROUND PROGRAM TO \\
! // WATCH FOR REMINDER MESSAGE \\
! //==============================\\
! << BY THE GREAT & MIGHTY OZ >>
! //==============\\==============================//==============\\
! || * * * * * E D I T H I S T O R Y * * * * * ||
! || ||
! || 8/27/85 program created. /dmm ||
! || Companion program to REMIND.RUN ||
! || Must have SYSMEM.SBR loaded into system memory. ||
! || Because of the number of times it is called I ||
! || suggest that you have RDATE.SBR loaded into ||
! || either SYSTEM or USER memory. /dmm ||
! || ||
! \\==============<<============================>>================//
! \\==========================//
!
!
! //=============================\\
! || REMINDER FILE RECORD LAYOUT ||>>>----------->+
! \\=============================// !
! !
MAP1 REMIND !<-------------------<<<+
MAP2 RDATE,S,6 !<--date to send-----<<<+
MAP2 RSEND !<--message area-----<<<+
MAP3 RTIME !<--time to send-----<<<+
MAP4 RHOUR,S,2 ! <--hour------<<<+
MAP4 RMIN,S,2 ! <--minute----<<<+
MAP3 RNAME,S,6 !<--job name---------<<<+
MAP3 RMESAG,S,70 !<--message to send--<<<+
MAP3 RBEEPS,B,1 !<--number of beeps--<<<+
MAP1 RRECSIZE,F,,102
MAP1 DUMREM
MAP2 JUNK,S,2
MAP2 ORGREM,F
MAP2 RECREM,F
MAP2 MAXREM,F
MAP2 DELREM,F
! //===========================\\
! || SYSMEM TRANSFER WORK AREA ||>>>------------->+
! \\===========================// !
! !
MAP1 RECV !<-------------------<<<+
MAP2 F'RCV,B,1,1 !<--set to receive---<<<+
MAP2 RCVFLG,B,1,0 !<--status flag------<<<+
MAP1 MSGTXT !<--message received-<<<+
MAP2 JTIME !
MAP3 JHOUR,S,2 !
MAP3 JMIN,S,2 !
MAP2 JNAME,S,6 !
MAP2 JMESAG,S,70 !
MAP2 JBEEPS,B,1 ! v
MAP1 MSGNAM,S,6,"TICKLE" !<--recv message name<<<+
MAP1 SEND,B,1,0 !<--set to send------<<<+
MAP1 SNDTXT,S,1 !<--dummy area-------<<<+
MAP1 SNDNAM,S,6,"GOTCHA" !<--send message name<<<+
MAP1 MESSAGES(200) !<--hold 200 messages<<<+
MAP2 MTIME
MAP3 MHOUR,S,2
MAP3 MMIN,S,2
MAP2 MNAME,S,6
MAP2 MMESAG,S,70
MAP2 MBEEPS,B,1
MAP1 USERS
MAP2 JOBNAMS(30),S,6
MAP2 TRMDEFS(30),S,6
MAP1 STORAGE
MAP2 FILENAME,S,10,"USERS.DAT"
MAP2 RECSIZ99,F,6,LEN(USERS)
MAP2 BEEPS(30),F
MAP2 OLD'DATE,S,6
MAP2 FILNAM,S,20
MAP2 NUMFIL,F,6,30
MAP2 TODAY,S,6
MAP1 STIME
MAP2 SHOUR,S,2
MAP2 SMIN,S,2
FILEBASE 1
XCALL RDATE,FLTDAY : TODAY=FLTDAY USING "#ZZZZZ"
OPEN #99, FILENAME, RANDOM, RECSIZ99, FILE99
FILE99 = 1 : READ #99, USERS : CLOSE #99
CALL LOADEM
BEGIN:
XCALL SYSMEM,RECV,MSGNAM,MSGTXT
IF RCVFLG CALL SET'MSG
CALL GET'TIME
CALL GET'DATE
IF VAL(MTIME(1))=0 GOTO BEGIN
IF STIME >= MTIME(1) CALL SEND'IT
GOTO BEGIN
SET'MSG:
FOR I = 1 TO 200
IF MNAME(I)="" MESSAGES(I)=MSGTXT : GOTO SET'OK
IF JTIME < MTIME(I) GOTO SHIFT
NEXT I
SET'OK:
IF LOADING=0 XCALL SYSMEM,SEND,SNDNAM,SNDTXT
RETURN
SHIFT:
FOR X = 200 TO I+1 STEP -1
MESSAGES(X)=MESSAGES(X-1)
NEXT X
MESSAGES(I)=MSGTXT
IF LOADING=0 XCALL SYSMEM,SEND,SNDNAM,SNDTXT
RETURN
GET'TIME:
T=TIME
CLOCK=60
HOURS=INT(T/(CLOCK^2))
MINS=INT(T/CLOCK)-(HOURS*60)
IF LSTMIN # MINS CALL CHK'BEEPS
SHOUR=HOURS USING "#Z"
SMIN=MINS USING "#Z"
RETURN
GET'DATE:
XCALL RDATE,FLTDAY
TODAY=FLTDAY USING "#ZZZZZ"
IF OLD'DATE # TODAY CALL LOADEM
RETURN
CHK'BEEPS:
LSTMIN=MINS
FOR X = 1 TO NUMFIL
IF BEEPS(X) # 0 CALL BEEP
NEXT X
RETURN
BEEP:
BEEPS(X)=BEEPS(X)-1
FOR J = 1 TO 5
OPEN #1,"TRM:"+TRMDEFS(X),OUTPUT
? #1;CHR(7);
CLOSE #1
FOR I = 1 TO 1000
NEXT I
NEXT J
RETURN
SEND'IT:
FOR X = 1 TO NUMFIL
IF JOBNAMS(X)=MNAME(1) GOTO THIS'ONE
NEXT X
RETURN
THIS'ONE:
OPEN #1,"TRM:"+TRMDEFS(X),OUTPUT
IF MMESAG(1)="" GOTO CLEAR'MSG
BEEPS(X)=MBEEPS(1)
? #1;CHR(7);"";
? #1;"f"+MMESAG(1)+" "+MHOUR(1)+":"+MMIN(1)
? #1;"g";
CLEAR:
CLOSE #1
FOR X=1 TO 199
MESSAGES(X)=MESSAGES(X+1)
MESSAGES(X+1)=""
NEXT X
RETURN
CLEAR'MSG:
? #1;"";
? #1;"f"+SPACE(78)
? #1;"g";
? #1;"h";
GOTO CLEAR
LOADEM:
FOR I = 1 TO 200
MESSAGES(I)=""
NEXT I
FILID=9999
FILNAM="REMIND.DAT"
OPEN #FILID,FILNAM,RANDOM,RRECSIZE,RECNUM
CALL GET'TIME
RECNUM=1
READ #FILID,DUMREM
? TAB(24,1);TAB(-1,9);"Loading messages, please wait...";
FOR RECNUM=2 TO RECREM
READ #FILID,REMIND
IF RDATE=TODAY AND RTIME >= STIME CALL LOADIT
NEXT RECNUM
? TAB(24,1);TAB(-1,9);
CLOSE #FILID
OLD'DATE=TODAY
RETURN
LOADIT:
LOADING=1
MSGTXT=RSEND
CALL SET'MSG
LOADING=0
RETURN