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