home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Shareware Overload
/
ShartewareOverload.cdr
/
busi
/
vac_sc.zip
/
VAC.BAS
< prev
next >
Wrap
BASIC Source File
|
1986-11-24
|
14KB
|
325 lines
5 REM =================== PROGRAM LOADING ROUTINE ============================
10 CLS:COLOR 3,0:KEY OFF
15 CLEAR,,2500
20 DIM A$(50):DIM B(50,30):DIM C(485,10):DIM D(50,6)
25 DIM CAL$(485):DIM WK$(69)
26 LOCATE 9,31:PRINT "--VACATION SCHEDULE--"
27 LOCATE 10,35:PRINT"** LOADING **"
28 LOCATE 11,39:PRINT "WAIT !"
30 OPEN "VACCAL" FOR INPUT AS #1
35 FOR Z=1 TO 485:INPUT#1,CAL$(Z):NEXT Z
40 FOR Z=1 TO 69:INPUT #1,WK$(Z):NEXT Z
45 CLOSE#1
50 OPEN"VACDATA.1"FOR INPUT AS#2
55 FOR Z=1 TO 50:INPUT #2,A$(Z)
60 FOR Y=1 TO 6:INPUT #2,D(Z,Y):NEXT Y
65 NEXT Z:CLOSE#2
68 OPEN"VACDATA.2"FOR INPUT AS#3
70 FOR Z=1 TO 50
75 FOR Y=1 TO 30:INPUT #3,B(Z,Y):NEXT Y
80 NEXT Z
83 FOR Z=1 TO 485
85 FOR Y=1 TO 10:INPUT #3,C(Z,Y):NEXT Y
90 NEXT Z:CLOSE#3
190 SOUND 523,8:SOUND 1046,8:SOUND 130,10
195 REM ========================= MENU MODULE ================================
200 CLS:COLOR 3:PRINT STRING$(80,61);
202 ON KEY(9) GOSUB 2000:KEY(9) ON
205 COLOR 12:PRINT TAB(30)"MENU";TAB(74)"(200)"
207 COLOR 3:PRINT TAB(24)"VACATION SCHEDULE"
210 PRINT STRING$(80,61);
215 COLOR 14:PRINT TAB(20)"1:ENTER INDIVIDUAL SCHEDULE";TAB(74)"(600)":PRINT
220 PRINT TAB(20)"2:CANCEL INDIVIDUAL SCHEDULE";TAB(74)"(800)":PRINT
225 PRINT TAB(20)"3:ENTER ROSTER AND CONFLICTS";TAB(74)"(300)"
227 COLOR 3:PRINT TAB(19) STRING$(36,45)
230 PRINT TAB(20)"4:READ INDIVIDUAL SCHEDULE";TAB(74)"(700)":PRINT
232 PRINT TAB(20)"5:READ WEEKLY SCHEDULE";TAB(74)"(500)":PRINT
235 PRINT TAB(20)"6:READ ROSTER AND CONFLICTS";TAB(74)"(400)":PRINT
240 PRINT TAB(20)"7:READ LIST OF OPEN/CLOSED DAYS";TAB(74)"(900)"
242 PRINT TAB(19) STRING$(36,45)
243 COLOR 12:PRINT TAB(19)"10:DELETE ALL VACATION DATA &RESET";TAB(74)"(5000)"
244 PRINT
245 PRINT TAB(19)"12:DELETE VACATION CALENDER & RESET";TAB(74)"(5100)":COLOR 3
250 PRINT STRING$(80,61);
255 INPUT "ENTER MENU NUMBER:----OR ENTER (0) TO EXIT PROGRAM: ----OR ENTER (20) TO BACKUP DATA:",M
256 IF M=20 THEN 6000
257 IF M=0 THEN SYSTEM
260 ON M GOTO 600,800,300,700,500,400,900,200,200,5000,200,5100
295 REM ================= ROSTER ENTRY MODULE ================================
300 CLS:GOSUB 3000:PRINT TAB(30)"***VACATION PRIORITY LIST***"
305 PRINT STRING$(80,61);
310 INPUT "ENTER NUMBER OF NAMES TO LIST:";R
315 INPUT "ENTER FIRST SEQUENTIAL SENIORITY NO.(1 TO 50)";S
320 PRINT STRING$(80,61);
325 FOR Z=S TO S+R-1
330 PRINT Z;:INPUT"ENTER NAME:";A$(Z)
335 FOR X=1 TO 6
340 INPUT "ENTER CONFLICT# (0 IF NONE)";D(Z,X)
345 IF D(Z,X)=0 THEN 355
350 NEXT X
355 NEXT Z
360 GOSUB 1000
365 GOTO 200
395 REM ================= ROSTER READOUT MODULE ==============================
400 CLS:X=1:GOSUB 3000
402 N=0
405 FOR Z=1 TO 24:PRINT TAB(38) CHR$(179):NEXT:LOCATE 1,1
410 FOR Z=1 TO 50
420 IF A$(Z)="" THEN 480
425 IF Z=24 THEN X=40:N=0
430 N=N+1:LOCATE N,X:PRINT Z;
435 PRINT A$(Z);
437 LOCATE CSRLIN,15+X
440 FOR Y=1 TO 6
450 IF D(Z,Y)=0 THEN 470
460 PRINT USING "###";D(Z,Y);:NEXT Y
470 NEXT Z
480 LOCATE 25,23:INPUT"",X
490 GOTO 200
495 REM ================= SCHEDULE READOUT MODULE ============================
500 CLS
502 PRINT"**WEEKLY VACATION SCHEDULE**"
503 COLOR 12:INPUT"DO YOU WANT HARD COPY?(Y/N)",HC$:COLOR 3
505 INPUT "ENTER WEEK# (1-70) OR ENTER A MONDAY DATE (mm-dd-yy)";X$:CLS
506 IF LEN(X$)<3 THEN X=VAL(X$):GOTO 510
507 FOR X=1 TO 69:IF WK$(X)=X$ THEN 510
508 NEXT X
509 IF X=70 THEN PRINT "INVALID DATE--ENTER AGAIN":GOTO 505
510 PRINT TAB(18)"*** VACATION SCHEDULE-WEEK #";X$;"***":PRINT STRING$(68,61)
512 IF HC$="Y"THEN LPRINT TAB(20)"*** VACATION SCHEDULE-WEEK#";X$;"***":LPRINT STRING$(68,61)
515 FOR Y=1 TO 485
520 IF MID$(CAL$(Y),3,8)=WK$(X) THEN 530
525 NEXT Y
530 FOR N=Y TO Y+4:PRINT" ";MID$(CAL$(N),1,2);":";MID$(CAL$(N),3,5),:NEXT N
535 FOR S=1 TO 5:PRINT "------------",:NEXT S
544 XX=1:YY=5
545 FOR N=Y TO Y+4
550 FOR Z=1 TO 10
552 LOCATE YY,XX
554 IF C(N,Z)<>0 THEN PRINT A$(C(N,Z))
555 IF C(N,Z)=0 THEN 558
557 YY=YY+1
558 NEXT Z
559 IF Z>=10 THEN YY=5:XX=XX+14
560 NEXT N
562 XX=1:FOR N=Y TO Y+4
564 IF MID$(CAL$(N),11,2)="HL"THEN LOCATE 5,XX:PRINT "** HOLIDAY**";
566 XX=XX+14:NEXT N
570 LOCATE 24,1:PRINT STRING$(68,61);
572 IF HC$="Y" THEN 576
573 LOCATE 25,1:INPUT"READ ANOTHER WEEK?(Y/N):",I$
574 IF I$="Y" THEN 500
575 GOTO 200
576 X=1:FOR N=Y TO Y+4:LPRINT TAB(X) MID$(CAL$(N),1,2);":";MID$(CAL$(N),3,5);
577 X=X+14:NEXT N
578 X=1:FOR S=1 TO 5:LPRINT TAB(X)"------------";:X=X+14:NEXT S
580 X=1:FOR N=Y TO Y+4
581 IF MID$(CAL$(N),11,2)<>"HL" THEN X=X+14
582 IF MID$(CAL$(N),11,2)="HL"THEN LPRINT TAB(X)"**HOLIDAY**";:X=X+14
583 NEXT N
584 FOR Z=1 TO 10:X=1
585 FOR N=Y TO Y+4
586 IF C(N,Z)<>0 THEN LPRINT TAB(X)A$(C(N,Z));:X=X+14
587 IF C(N,Z)=0 THEN X=X+14
588 NEXT N
589 NEXT Z
590 LPRINT CHR$(10);:LPRINT STRING$(68,61)
592 FOR N=1 TO 5:LPRINT CHR$(10);:NEXT N:GOTO 573
595 REM ============== WEEKLY SCHEDULE INPUT MODULE ==========================
600 CLS:W=1
605 PRINT TAB(20)"**VACATION SCHEDULE INPUT**"
608 PRINT STRING$(80,61);
609 GOSUB 3000
610 PRINT "ENTER LAST NAME:";:COLOR 12:INPUT"",N$:COLOR 3
611 FOR ZZ=1 TO 50:IF A$(ZZ)=N$ THEN Z=ZZ:ZZ=50:GOTO 613
612 IF ZZ=50 AND A$(ZZ)<>N$ THEN LOCATE 3,1:PRINT"INVALID NAME:";:GOTO 610
613 NEXT ZZ
614 PRINT "ENTER DATE OF FIRST VACATION DAY (mm-dd-yy):";:COLOR 12:INPUT"",DAY$:COLOR 3
616 FOR YY=1 TO 485:IF MID$(CAL$(YY),3,8)=DAY$ THEN Y=YY:YY=485
617 NEXT YY
618 PRINT "ENTER NO. OF CONSECUTIVE VACATION DAYS:";:COLOR 12:INPUT"",N:NN=N:COLOR 3
619 ON ERROR GOTO 5500
620 DIM DAYS(30):FOR X=Y TO Y+N-1
621 IF MID$(CAL$(X),1,1)="S" THEN N=N+1
622 IF MID$(CAL$(X),1,1)="S" THEN 630
623 IF MID$(CAL$(X),11,2)="HL" THEN N=N+1
624 IF MID$(CAL$(X),11,2)="HL" THEN 630
626 DAYS(W)=X:W=W+1
627 IF DAYS(NN)<>0 THEN 635
630 NEXT X
632 IF DAYS(NN)=0 THEN ERASE DAYS:W=1:GOTO 620
635 PRINT STRING$(80,61);
636 FOR X=Y TO Y+N-1
637 FOR W=1 TO 30:IF B(Z,W)=X THEN PRINT "INVALID--DUPLICATE DATE SCHEDULED--PRESS ANY KEY/ENTER TO RE-SCHEDULE":INPUT "",I$:GOTO 694
638 NEXT W
639 NEXT X
640 FOR W=1 TO 30
642 IF DAYS(W)=0 THEN 658
645 PRINT MID$(CAL$(DAYS(W)),1,2);": ";MID$(CAL$(DAYS(W)),3,8);" (";
650 FOR M=1 TO 10:IF C(DAYS(W),M)=0 THEN 652
651 NEXT M
652 PRINT M-1;") "
654 IF (M-1)=>4 THEN LOCATE CSRLIN-1,20:PRINT "<CONFLICT:";M-1;"SCHEDULED!"
656 NEXT W
658 LOCATE 7,40
660 FOR W=1 TO 30:IF DAYS(W)=0 THEN 674
662 FOR N=1 TO 4:IF D(Z,N)=0 THEN 672
664 FOR M=1 TO 10
666 IF C(DAYS(W),M)=D(Z,N)THEN LOCATE CSRLIN,46:PRINT "CONFLICT WITH:";A$(D(Z,N));":";MID$(CAL$(DAYS(W)),3,8)
668 NEXT M
670 NEXT N
672 NEXT W
674 LOCATE 21,1:PRINT STRING$(80,61);
676 INPUT "APPROVE SCHEDULE?(Y/N)";I$
677 LOCATE 23,1
678 IF I$="N" THEN PRINT"SCHEDULE NOT APPROVED FOR PROCESSING-RESCHEDULE":GOTO 694
682 FOR Y=1 TO 30:IF B(Z,Y)=0 THEN 686
683 NEXT Y
686 FOR W=1 TO 30:IF DAYS(W)=0 THEN 690
688 B(Z,Y)=DAYS(W):Y=Y+1:NEXT W
690 W=1
691 FOR Y=1 TO 10:IF C(DAYS(W),Y)=0 THEN GOTO 698
692 NEXT Y
693 GOSUB 4000
694 LOCATE 22,30:PRINT"*PROCESSING*":GOSUB 1500
696 ERASE DAYS:LOCATE 25,1:INPUT"PRESS ANY KEY/ENTER TO CONTINUE ",I$:GOTO 200
698 C(DAYS(W),Y)=Z:W=W+1:IF DAYS(W)<>0 THEN 691 ELSE GOTO 693
699 REM ============== INDIVIDUAL SCHEDULE READOUT MODULE ====================
700 CLS:GOSUB 3000
705 INPUT "TO READ VACATION SCHEDULE--ENTER LAST NAME";N$
710 FOR ZZ=1 TO 50:IF A$(ZZ)=N$ THEN Z=ZZ:ZZ=50:CLS:PRINT TAB(20)"VACATION SCHEDULE FOR: ";A$(Z):GOTO 720
715 IF ZZ=50 THEN PRINT "INVALID NAME--ENTER AGAIN":GOTO 705
720 NEXT ZZ
725 PRINT STRING$(68,61)
730 FOR Y=1 TO 30
735 IF B(Z,Y)<>0 THEN PRINT MID$(CAL$(B(Z,Y)),1,2);":";MID$(CAL$(B(Z,Y)),3,8),
740 IF B(Z,Y)=0 THEN Y=30
745 NEXT Y
747 IF POS(0)<>1 AND POS(0)<60 THEN LOCATE CSRLIN+1,1
750 FOR N=1 TO 5:PRINT STRING$(11,45),:NEXT N
752 IF M=2 THEN RETURN
753 COLOR 12:LOCATE 23,1:INPUT"DO YOU WANT HARDCOPY?(Y/N):",HC$
754 COLOR 3:IF HC$="Y"THEN GOSUB 770
755 LOCATE 24,1:INPUT "READ ANOTHER SCHEDULE ?(Y/N):",I$
760 IF I$="Y"THEN 700
765 GOTO 200
770 LPRINT TAB(20)"VACATION SCHEDULE FOR: ";A$(Z)
772 LPRINT STRING$(68,61)
774 X=1:FOR Y=1 TO 30
776 IF B(Z,Y)<>0 THEN LPRINT TAB(X)MID$(CAL$(B(Z,Y)),1,2);":";MID$(CAL$(B(Z,Y)),3,8);
778 IF B(Z,Y)=0 THEN Y=30:GOTO 782
780 X=X+14:IF X>60 THEN X=1
782 NEXT Y
784 LPRINT CHR$(141);:X=1:FOR N=1 TO 5:LPRINT TAB(X) STRING$(11,45);:X=X+14:NEXT N
786 FOR N=1 TO 10:LPRINT CHR$(10);:NEXT N
788 LPRINT CHR$(7):RETURN
795 REM ============== CANCEL INDIVIDUAL SCHEDULE MODULE =====================
800 CLS:GOSUB 3000
805 PRINT "TO CANCEL SCHEDULED VACATION--ENTER LAST NAME:";:COLOR 12:INPUT "",N$:COLOR 3:GOSUB 710
810 PRINT "DAYS MUST BE CANCELLED ONE AT A TIME":GOSUB 3000
815 PRINT "ENTER DATE TO CANCEL (mm-dd-yy) OR ENTER (0) TO STOP:";:COLOR 12:INPUT "",C$:COLOR 3
820 IF C$="0"THEN LOCATE 22,36:PRINT"**PROCESSING**":GOTO 860
825 FOR NN=1 TO 485:IF MID$(CAL$(NN),3,8)=C$ THEN N=NN:NN=485:GOTO 827
826 IF NN=485 THEN COLOR 12:PRINT "INVALID ENTRY--ENTER AGAIN":COLOR 3:GOTO 815
827 NEXT NN
830 FOR YY=1 TO 30:IF B(Z,YY)=N THEN B(Z,YY)=0:Y=YY:YY=30:GOTO 835
835 NEXT YY
840 FOR W=Y TO 29:B(Z,W)=B(Z,W+1):NEXT W
845 FOR Y=1 TO 10:IF C(N,Y)=Z THEN C(N,Y)=0:GOTO 850
847 NEXT Y
850 FOR W=Y TO 9:C(N,W)=C(N,W+1):NEXT W
855 GOTO 815
860 GOSUB 1500
865 CLS:M=4:GOTO 710
895 REM =============== NO. OF PEOPLE SCHEDULED MODULE =======================
900 CLS:GOSUB 3000:INPUT "ENTER MAX NUMBER ALLOWED TO BE SCHEDULED PER DAY (1 TO 10)";X:CLS
915 GOSUB 980
920 FOR Z=1 TO 485
921 IF Z=126 OR Z=252 OR Z=378 THEN GOSUB 960
922 IF MID$(CAL$(Z),1,1)="S" THEN 950
930 IF MID$(CAL$(Z),1,1)<>"S" THEN PRINT " ";MID$(CAL$(Z),3,5);" (";
932 IF MID$(CAL$(Z),11,2)="HL" THEN COLOR 12:PRINT "HL";:COLOR 3:PRINT ")",:GOTO 950
935 FOR Y=1 TO 10:IF C(Z,Y)=0 THEN 938
937 NEXT Y
938 COLOR 14
940 IF Y-1>=X THEN COLOR 12:PRINT STR$(Y-1);:COLOR 3:PRINT ")*",:GOTO 950
945 PRINT STR$(Y-1);:COLOR 3:PRINT ")",
950 NEXT Z
955 LOCATE 22,1:PRINT "KEY F5 FOR MENU":END:GOTO 200
960 PRINT STRING$(68,45)
965 INPUT "WANT TO CONTINUE? (Y/N)";I$
970 IF I$="N" THEN 200
975 CLS:GOSUB 980:RETURN
980 COLOR 14:PRINT TAB(10)"OPEN";:COLOR 3:PRINT "/";:COLOR 12:PRINT "CLOSED";:COLOR 3:PRINT " VACATION DAYS--( )=NO. OF PEOPLE SCHEDULED"
981 PRINT STRING$(68,61)
983 PRINT " MON"," TUE"," WED"," THU"," FRI"
984 FOR N=1 TO 5:PRINT "------------",:NEXT N
985 RETURN
995 REM =============== WRITE TO ROSTER FILE SUB-ROUTINE =====================
1000 OPEN "VACDATA.1" FOR OUTPUT AS #2
1005 FOR Z=1 TO 50:WRITE#2,A$(Z)
1010 FOR Y=1 TO 6:WRITE#2,D(Z,Y):NEXT Y
1015 NEXT Z:CLOSE#2
1060 RETURN
1095 REM =============== WRITE TO SCHEDULE FILE SUB-ROUTINE ==================
1500 OPEN"VACDATA.2" FOR OUTPUT AS #3
1505 FOR Z=1 TO 50
1510 FOR Y=1 TO 30:WRITE#3,B(Z,Y):NEXT Y
1520 NEXT Z
1525 FOR Z=1 TO 485
1530 FOR Y=1 TO 10:WRITE#3,C(Z,Y):NEXT Y
1535 NEXT Z:CLOSE#3
1537 SOUND 523,8:SOUND 1046,8:SOUND 130,10
1540 RETURN
2000 RETURN 200
2095 REM =================== ESCAPE SUB-ROUTINE ==============================
3000 LIN=CSRLIN
3005 COLOR 12:LOCATE 25,1:PRINT "TO EXIT---KEY F9/ENTER";:COLOR 3
3010 LOCATE LIN,1:RETURN
3095 REM =============== SCHEDULE APPROVAL SUB- ROUTINE ======================
4000 COLOR 12:PRINT "*SCHEDULE APPROVED*";
4010 INPUT "WANT TO SCHEDULE ANOTHER? (Y/N):";I$
4020 IF I$="Y" THEN ERASE DAYS:COLOR 3:GOTO 600
4025 IF I$="N" THEN COLOR 3:RETURN
4095 REM =============== SCHEDULE FILE RE-INITIALIZATION MODULE ==============
5000 CLS:PRINT "YOU ARE ABOUT TO ERASE ALL VACATION DATES FOR ALL PERSONNEL!!"
5005 INPUT "OK TO PROCEED? (Y/N)",I$
5010 IF I$<>"Y" THEN 200 ELSE 7000
5015 ERASE B:ERASE C:DIM B(50,30):DIM C(485,10)
5017 LOCATE 12,30:PRINT"**ERASING**":GOSUB 1500:LOCATE 12,30:PRINT " ":LOCATE 4,1
5020 INPUT "DO YOU WANT TO ERASE THE PERSONNEL ROSTER & CONFLICT LIST? (Y/N)",I$
5025 IF I$<>"Y" THEN RUN ELSE 5027
5027 ERASE A$:ERASE D:DIM A$(50):DIM D(50,6)
5028 LOCATE 12,30:PRINT"**ERASING**":GOSUB 1000
5030 RUN
5095 REM =============== CALENDAR FILE RE-INITIALIZATION MODULE ==============
5100 CLS:PRINT "YOU ARE ABOUT TO ERASE THE VACATION CALENDER!!"
5110 INPUT "DO YOU WANT TO PROCEED? (Y/N):",I$
5115 IF I$<>"Y" THEN 200
5120 CLS:CLEAR:CHAIN MERGE"VAC1",6000,DELETE 10-5030
5140 CLEAR:PRINT "TYPE RUN VAC"
5150 RUN"VAC"
5195 REM =============== ERROR TRAPPING ROUTINE (not required) ===============
5500 IF ERR=10 THEN ERASE DAYS:RESUME 620
5510 IF ERR=4 THEN PRINT"DATA FOR EARNED DAYS IS NOT PROGRAMMED":RESUME 5660
5595 REM =============== BACKUP ON EXIT ROUTINE ==============================
6000 CLS:LOCATE 10,1:PRINT "PLACE FORMATTED BACKUP DISKETTE IN DRIVE (A) AND STRIKE ANY KEY WHEN READY"
6002 IN$=INKEY$:IF IN$="" THEN 6002
6003 IF M=20 THEN LOCATE 12,38:PRINT "WAIT!"
6005 SHELL"COPY C:VAC*.* A:"
6010 SYSTEM
6095 REM =============== CALENDAR RE-INITIALIZATION ROUTINE ==================
7000 I$="":PRINT:PRINT"All Vacations Presently Sscheduled For The New Vacation Year":PRINT"Will Be Printed Out Prior To Erasing Last Year's Schedule"
7001 PRINT:PRINT"PLEASE TURN ON YOUR PRINTER NOW, THEN STRIKE THE ENTER KEY !!"
7002 INPUT I$:CLS
7003 LPRINT"VACATIONS PREVIOUSLY SCHEDULED":LPRINT"======================================":LPRINT
7004 FOR Z=1 TO 50
7005 IF A$(Z)="" THEN LPRINT CHR$(12):LPRINT CHR$(12):GOTO 5015
7015 FOR Y=1 TO 30
7020 IF B(Z,Y)>366 THEN LPRINT A$(Z):GOTO 7035
7025 NEXT Y
7030 NEXT Z
7035 LPRINT MID$(CAL$(B(Z,Y)),3,8);" ";
7040 Y=Y+1:IF Y=30 THEN 7045 ELSE 7035
7045 LPRINT:LPRINT:GOTO 7025