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