10 DEFFNS="WorkRot" 20 MODE7 30 VDU23;8202;0;0;0; 40 *FX4 1 50 READ W%:REM WEEKS IN ROTA 60 DIM R$(W%,7):REM ROTA 70 DIM D$(7):REM DAY OF WEEK 80 DIM M$(12):REM MONTHS 90 DIM MD%(12):REM DAYS IN MONTH 100 PROCReadInfo 110 PRINT'' 120 PROCcent("Shift Calculator By C.J.Richardson.") 130 PROCcent("ƒShift Calculator By C.J.Richardson.") 140 PRINT'' 150 PROCcent("„ƒ6.6.96 œ") 160 PROCcent("„ƒ6.6.96 œ") 170 PRINT' 180 PROCcent("„ƒInfo Y/N? œ") 190 PROCcent("„ƒInfo Y/N? œ") 200 *FX21 210 REPEAT 220 A$=GET$ 230 UNTILINSTR("YyNn",A$) 240 IF INSTR("Yy",A$)PROCinfo 250 REPEAT 260 PROCGetDate 270 PROCGetShift 280 VDU28,0,24,39,15 290 A$="." 300 REPEAT 310 VDU12 320 PROCDispWeek 330 PROCAgain 340 UNTILINSTR("AaEe",A$) 350 VDU26 360 UNTILINSTR("Ee",A$) 370 END 380 DEFPROCAgain 390 PRINT'"… > < (A)nother (P)rint/(C)ont (E)nd"; 400 *FX21 410 REPEAT 420 A$=GET$ 430 IF INSTR("Cc",A$)PROCcont 440 IF INSTR("Pp",A$)PROCPrintOut 450 UNTILINSTR(",<.>AaEe",A$) 460 ENDPROC 470 DEFPROCcont 480 ONERRORRUN 490 PROCPrintOut 500 REPEAT 510 CLS 520 PROCDispWeek 530 PRINT'TAB(11);"…ESCAPE TO FINISH"; 540 PROCPrintOut 550 UNTILFALSE 560 ENDPROC 570 DEFPROCPrintOut 580 FORL%=&7E80 TO &7F97 STEP 40 590 FORI%=0 TO 39 600 A%=?(L%+I%) 610 IF A%<32 OR A%>127 A%=32 620 VDU2,1,A%,3 630 NEXT 640 VDU2,1,13,3 650 NEXT 660 ENDPROC 670 DEFPROCDispWeek 680 PRINTTAB(9,0);"„ƒDate œ ";TAB(26,0)"„ƒDuty œ" 690 FORL%=0TO6 700 IF L%=0:IF INSTR("<,",A$):PROCDecDay 710 Y$=LEFT$(STR$(Y%)+"00",4) 720 PRINT"‚";D$(DOW%);TAB(11);STR$(D%);TAB(14);M$(M%);" ";Y$;TAB(29)"ƒ";R$(S%,DOW%) 730 PROCIncDay 740 NEXT 750 ENDPROC 760 DEFPROCGetShift 770 PROCcent("„ƒCalculating "+STR$(Day%)+" "+M$(Month%)+" "+STR$(Year%)+" œ") 780 D%=SD% 790 M%=SM% 800 Y%=SY% 810 S%=SS% 820 DOW%=1 830 IF D%=Day% AND M%=Month% AND Y%=Year% ENDPROC 840 REPEAT 850 PROCIncDay 860 UNTILD%=Day% AND M%=Month% AND Y%=Year% 870 ENDPROC 880 DEFPROCIncDay 890 D%=D%+1:DOW%=DOW%+1:IF DOW%=8 DOW%=1:S%=S%+1:IF S%>W% S%=1 900 IF D%>MD%(M%):PROCchange 910 ENDPROC 920 DEFPROCDecDay 930 FOR I%=1TO14 940 D%=D%-1:DOW%=DOW%-1:IF DOW%=0 DOW%=7:S%=S%-1:IF S%=0 S%=W% 950 IF D%=0:PROCchangeDown 960 NEXT 970 ENDPROC 980 DEFPROCchange 990 D%=1 1000 M%=M%+1 1010 IF M%=13:M%=1:Y%=Y%+1 1020 IF Y% MOD 4=0 MD%(2)=29 ELSE MD%(2)=28 1030 ENDPROC 1040 DEFPROCchangeDown 1050 IF Y% MOD 4=0 MD%(2)=29 ELSE MD%(2)=28 1060 M%=M%-1 1070 IF M%=0:M%=12:Y%=Y%-1 1080 D%=MD%(M%) 1090 IF Y% MOD 4=0 MD%(2)=29 ELSE MD%(2)=28 1100 ENDPROC 1110 DEFPROCReadInfo 1120 FORL%=1TO7 1130 READD$(L%) 1140 NEXT 1150 FORL%=1TO12 1160 READM$(L%),MD%(L%) 1170 NEXT 1180 FORL%=1 TO W% 1190 FORI%=1 TO 7 1200 READR$(L%,I%):REM READ IN ROTA 1210 NEXT, 1220 READ SD%,SM%,SY%,SS% 1230 ENDPROC 1240 DEFPROCGetDate 1250 *FX21 1260 REPEAT 1270 CLS 1280 PROCcent("Shift Calculator By C.J.Richardson.") 1290 PROCcent("ƒShift Calculator By C.J.Richardson.") 1300 PRINT 1310 PROCcent("„ƒWhen to Ring 8BS. œ") 1320 PRINT 1330 PROCcent("„ƒEnter Date to Search For. œ") 1340 PRINT'' 1350 PROCcent("†(Use the format "+STR$(SD%)+"."+STR$(SM%)+"."+STR$(SY%)+")") 1360 INPUT'"‚";D$ 1370 VDU11 1380 Day%=VAL(LEFT$(D$,INSTR(D$,".")-1)) 1390 Year%=VAL(RIGHT$(D$,4)) 1400 Month%=VAL(MID$(D$,LEN(STR$(Day%))+2,LEN(STR$(Year%)))) 1410 UNTILYear%>=SY% AND Day%>0 AND Day%<32 AND Month%>0 AND Month%<13 1420 IF Year%>SY%+4 OR Year%SY%. This line"'"…prints a warning that the"'"…calculation may be incorrect due to"'"…possible rota changes." 1670 PRINT'"PRESS A KEY FOR MAIN PROGRAM." 1680 REPEATUNTILGET 1690 ENDPROC 1700 REM Weeks In Rota 1710 DATA 10 1720 DATA Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday 1730 DATA January,31,February,28,March,31,April,30,May,31,June,30,July,31,August,31,September,30,October,31,November,30,December,31 1740 REM ROTA 1750 DATA OFF,OFF,OFF,1800-0600,1800-0600,1800-0600,1800-0600 1760 DATA OFF,OFF,0600-1800,0600-1800,0600-1800,OFF,OFF 1770 DATA FLOAT 1,FLOAT 1,FLOAT 1,FLOAT 1,FLOAT 1,FLOAT 1,FLOAT 1 1780 DATA 1800-0600,1800-0600,1800-0600,OFF,OFF,0600-1800,0600-1800 1790 DATA 0600-1800,0600-1800,OFF,OFF,OFF,OFF,OFF 1800 DATA OFF,OFF,OFF,1800-0600,1800-0600,1800-0600,1800-0600 1810 DATA OFF,OFF,0600-1800,0600-1800,0600-1800,OFF,OFF 1820 DATA FLOAT 2,FLOAT 2,FLOAT 2,FLOAT 2,FLOAT 2,FLOAT 2,FLOAT 2 1830 DATA 1800-0600,1800-0600,1800-0600,OFF,OFF,0600-1800,0600-1800 1840 DATA 0600-1800,0600-1800,OFF,OFF,OFF,OFF,OFF 1850 REM DAY,MONTH,YEAR 4 FIG 1860 DATA 1,1,1996 1870 REM START SHIFT ON THE ABOVE DATE 1880 DATA 2